From ca32f08966f1b51fcb19460f0996bb0c4048e6fe Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sat, 3 Dec 2011 13:29:22 +0100 Subject: Update to MediaWiki 1.18.0 * also update ArchLinux skin to chagnes in MonoBook * Use only css to hide our menu bar when printing --- includes/libs/CSSMin.php | 52 ++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 22 deletions(-) (limited to 'includes/libs/CSSMin.php') diff --git a/includes/libs/CSSMin.php b/includes/libs/CSSMin.php index c0e78112..4012b695 100644 --- a/includes/libs/CSSMin.php +++ b/includes/libs/CSSMin.php @@ -1,24 +1,24 @@ @@ -26,9 +26,9 @@ * @license http://www.apache.org/licenses/LICENSE-2.0 */ class CSSMin { - + /* Constants */ - + /** * Maximum file size to still qualify for in-line embedding as a data-URI * @@ -37,9 +37,9 @@ class CSSMin { */ const EMBED_SIZE_LIMIT = 24576; const URL_REGEX = 'url\(\s*[\'"]?(?P[^\?\)\'"]*)(?P\??[^\)\'"]*)[\'"]?\s*\)'; - + /* Protected Static Members */ - + /** @var array List of common image files extensions and mime-types */ protected static $mimeTypes = array( 'gif' => 'image/gif', @@ -51,9 +51,9 @@ class CSSMin { 'tiff' => 'image/tiff', 'xbm' => 'image/x-xbitmap', ); - + /* Static Methods */ - + /** * Gets a list of local file paths which are referenced in a CSS style sheet * @@ -78,7 +78,7 @@ class CSSMin { } return $files; } - + protected static function getMimeType( $file ) { $realpath = realpath( $file ); // Try a couple of different ways to get the mime-type of a file, in order of @@ -92,7 +92,7 @@ class CSSMin { // As of PHP 5.3, this is how you get the mime-type of a file; it uses the Fileinfo // PECL extension return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath ); - } else if ( function_exists( 'mime_content_type' ) ) { + } elseif ( function_exists( 'mime_content_type' ) ) { // Before this was deprecated in PHP 5.3, this was how you got the mime-type of a file return mime_content_type( $file ); } else { @@ -104,7 +104,7 @@ class CSSMin { } return false; } - + /** * Remaps CSS URL paths and automatically embeds data URIs for URL rules * preceded by an /* @embed * / comment @@ -130,12 +130,20 @@ class CSSMin { // URLs with absolute paths like /w/index.php need to be expanded // to absolute URLs but otherwise left alone if ( $match['file'][0] !== '' && $match['file'][0][0] === '/' ) { - // Replace the file path with an expanded URL - $source = substr_replace( $source, wfExpandUrl( $match['file'][0] ), - $match['file'][1], strlen( $match['file'][0] ) - ); + // Replace the file path with an expanded (possibly protocol-relative) URL + // ...but only if wfExpandUrl() is even available. + // This will not be the case if we're running outside of MW + $lengthIncrease = 0; + if ( function_exists( 'wfExpandUrl' ) ) { + $expanded = wfExpandUrl( $match['file'][0], PROTO_RELATIVE ); + $origLength = strlen( $match['file'][0] ); + $lengthIncrease = strlen( $expanded ) - $origLength; + $source = substr_replace( $source, $expanded, + $match['file'][1], $origLength + ); + } // Move the offset to the end of the match, leaving it alone - $offset = $match[0][1] + strlen( $match[0][0] ); + $offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease; continue; } // Shortcuts @@ -175,9 +183,9 @@ class CSSMin { } if ( $replacement === false ) { // Assume that all paths are relative to $remote, and make them absolute - $replacement = "{$embed}{$pre}url({$url}){$post};"; + $replacement = "{$embed}{$pre}url({$url}){$post};"; } - } else if ( $local === false ) { + } elseif ( $local === false ) { // Assume that all paths are relative to $remote, and make them absolute $replacement = "{$embed}{$pre}url({$url}{$query}){$post};"; } -- cgit v1.2.3-54-g00ecf