/**
* Standard output handler for use with ob_start
*
- * @param $s string
+ * @param string $s
*
* @return string
*/
global $wgDisableOutputCompression, $wgValidateAllHtml;
$s = wfMangleFlashPolicy( $s );
if ( $wgValidateAllHtml ) {
- $headers = apache_response_headers();
- $isHTML = true;
- foreach ( $headers as $name => $value ) {
- if ( strtolower( $name ) == 'content-type' && strpos( $value, 'text/html' ) === false && strpos( $value, 'application/xhtml+xml' ) === false ) {
- $isHTML = false;
+ $headers = headers_list();
+ $isHTML = false;
+ foreach ( $headers as $header ) {
+ $parts = explode( ':', $header, 2 );
+ if ( count( $parts ) !== 2 ) {
+ continue;
+ }
+ $name = strtolower( trim( $parts[0] ) );
+ $value = trim( $parts[1] );
+ if ( $name == 'content-type' && ( strpos( $value, 'text/html' ) === 0
+ || strpos( $value, 'application/xhtml+xml' ) === 0 )
+ ) {
+ $isHTML = true;
break;
}
}
* Handler that compresses data with gzip if allowed by the Accept header.
* Unlike ob_gzhandler, it works for HEAD requests too.
*
- * @param $s string
+ * @param string $s
*
* @return string
*/
/**
* Mangle flash policy tags which open up the site to XSS attacks.
*
- * @param $s string
+ * @param string $s
*
* @return string
*/
/**
* Add a Content-Length header if possible. This makes it cooperate with squid better.
*
- * @param $length int
+ * @param int $length
*/
function wfDoContentLength( $length ) {
if ( !headers_sent() && isset( $_SERVER['SERVER_PROTOCOL'] ) && $_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.0' ) {
/**
* Replace the output with an error if the HTML is not valid
*
- * @param $s string
+ * @param string $s
*
* @return string
*/