97 lines
No EOL
2.8 KiB
PHP
97 lines
No EOL
2.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Class to group HTTP response related functionality
|
|
*
|
|
* @author Time.ly Network Inc.
|
|
* @since 2.0
|
|
*
|
|
* @package AI1EC
|
|
* @subpackage AI1EC.Http.Response
|
|
*/
|
|
class Ai1ec_Http_Response_Helper {
|
|
|
|
/**
|
|
* Perform redirect to desired location and stop script execution after that
|
|
*
|
|
* When debug mode is activated redirect doesn't happen but instead link
|
|
* is outputted to screen, to allow developer to tamper with the flow, debug
|
|
* it and make changes as desired.
|
|
*
|
|
* @param string $location Location to redirect user to
|
|
* @param int $code HTTP response code to use in redirects
|
|
*
|
|
* @uses wp_redirect To create actual headers.
|
|
*
|
|
* @return int|NULL Method does call {@see self::stop()} to halt further
|
|
* script execution unless mocked
|
|
*/
|
|
public static function redirect( $location, $code = 302 ) {
|
|
header( 'Location: ' . $location, true, $code );
|
|
return self::stop();
|
|
}
|
|
|
|
/**
|
|
* Mockable method to halt script execution
|
|
*
|
|
* @param int $code Code to be used in `exit` statement
|
|
*
|
|
* @return void Method does not return
|
|
*/
|
|
public static function stop( $code = 0 ) {
|
|
exit( $code );
|
|
}
|
|
|
|
/**
|
|
* ai1ec_utf8 function
|
|
*
|
|
* Encode value as safe UTF8 - discarding unrecognized characters.
|
|
* NOTE: objects will be cast as array.
|
|
*
|
|
* @uses iconv To change encoding
|
|
* @uses mb_convert_encoding To change encoding if `iconv` is not available
|
|
*
|
|
* @param mixed $input Value to encode
|
|
*
|
|
* @return mixed UTF8 encoded value
|
|
*
|
|
* @throws Exception If no trans-coding method is available
|
|
*/
|
|
public static function utf8( $input ) {
|
|
if ( NULL === $input ) {
|
|
return NULL;
|
|
}
|
|
if ( is_scalar( $input ) ) {
|
|
if ( function_exists( 'iconv' ) ) {
|
|
return iconv( 'UTF-8', 'UTF-8//IGNORE', $input );
|
|
}
|
|
if ( function_exists( 'mb_convert_encoding' ) ) {
|
|
return mb_convert_encoding( $input, 'UTF-8' );
|
|
}
|
|
throw new Exception(
|
|
'Either `iconv` or `mb_convert_encoding` must be available.'
|
|
);
|
|
}
|
|
if ( ! is_array( $input ) ) {
|
|
$input = (array)$input;
|
|
}
|
|
return array_map( array( __CLASS__, 'utf8' ), $input );
|
|
}
|
|
|
|
/**
|
|
* Removes the protocla from the url
|
|
*
|
|
* @param string $url
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function remove_protocols( $url ) {
|
|
$disallowed = array( 'http:', 'https:' );
|
|
foreach ( $disallowed as $d ) {
|
|
if ( strpos( $url, $d ) === 0 ) {
|
|
return str_replace( $d, '', $url );
|
|
}
|
|
}
|
|
return $url;
|
|
}
|
|
} |