From: Brion Vibber Date: Thu, 26 Sep 2013 18:55:57 +0000 (-0700) Subject: Move LESS function definitions from DefaultSettings to ResourceLoaderLESSFunctions.php X-Git-Tag: 1.31.0-rc.0~18676^2 X-Git-Url: http://git.cyclocoop.org//%27%40script%40/%27?a=commitdiff_plain;h=006f136e799ad451cdcd0e80f8993b7d64b300f9;p=lhc%2Fweb%2Fwiklou.git Move LESS function definitions from DefaultSettings to ResourceLoaderLESSFunctions.php Intermittent error in production from top-level lambda functions: https://bugs.php.net/bug.php?id=52144 Change-Id: I9785a601fd5d57c9d8d84b90ee29eef61a6f2e77 --- diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 54bffabd3a..7eec763afd 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -857,6 +857,7 @@ $wgAutoloadLocalClasses = array( 'ResourceLoaderContext' => 'includes/resourceloader/ResourceLoaderContext.php', 'ResourceLoaderFileModule' => 'includes/resourceloader/ResourceLoaderFileModule.php', 'ResourceLoaderFilePageModule' => 'includes/resourceloader/ResourceLoaderFilePageModule.php', + 'ResourceLoaderLESSFunctions' => 'includes/resourceloader/ResourceLoaderLESSFunctions.php', 'ResourceLoaderModule' => 'includes/resourceloader/ResourceLoaderModule.php', 'ResourceLoaderNoscriptModule' => 'includes/resourceloader/ResourceLoaderNoscriptModule.php', 'ResourceLoaderSiteModule' => 'includes/resourceloader/ResourceLoaderSiteModule.php', diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 46d1fd42f8..4d8c032059 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -3314,50 +3314,8 @@ $wgResourceLoaderLESSVars = array(); * @since 1.22 */ $wgResourceLoaderLESSFunctions = array( - /** - * Check if an image file reference is suitable for embedding. - * An image is embeddable if it (a) exists, (b) has a suitable MIME-type, - * (c) does not exceed IE<9 size limit of 32kb. This is a LESS predicate - * function; it returns a LESS boolean value and can thus be used as a - * mixin guard. - * - * @par Example: - * @code - * .background-image(@url) when(embeddable(@url)) { - * background-image: url(@url) !ie; - * } - * @endcode - */ - 'embeddable' => function( $frame, $less ) { - $base = pathinfo( $less->parser->sourceName, PATHINFO_DIRNAME ); - $url = $frame[2][0]; - $file = realpath( $base . '/' . $url ); - $embeddable = ( $file - && strpos( $url, '//' ) === false - && filesize( $file ) < CSSMin::EMBED_SIZE_LIMIT - && CSSMin::getMimeType( $file ) !== false ) ? 'true' : 'false'; - return array( 'keyword', $embeddable ); - }, - - /** - * Convert an image URI to a base64-encoded data URI. - * - * @par Example: - * @code - * .fancy-button { - * background-image: embed('../images/button-bg.png'); - * } - * @endcode - */ - 'embed' => function( $frame, $less ) { - $base = pathinfo( $less->parser->sourceName, PATHINFO_DIRNAME ); - $url = $frame[2][0]; - $file = realpath( $base . '/' . $url ); - - $data = CSSMin::encodeImageAsDataURI( $file ); - $less->embeddedFiles[ $file ] = filemtime( $file ); - return 'url(' . $data . ')'; - }, + 'embeddable' => 'ResourceLoaderLESSFunctions::embeddable', + 'embed' => 'ResourceLoaderLESSFunctions::embed', ); /** diff --git a/includes/resourceloader/ResourceLoaderLESSFunctions.php b/includes/resourceloader/ResourceLoaderLESSFunctions.php new file mode 100644 index 0000000000..084bb54ff4 --- /dev/null +++ b/includes/resourceloader/ResourceLoaderLESSFunctions.php @@ -0,0 +1,68 @@ +parser->sourceName, PATHINFO_DIRNAME ); + $url = $frame[2][0]; + $file = realpath( $base . '/' . $url ); + $embeddable = ( $file + && strpos( $url, '//' ) === false + && filesize( $file ) < CSSMin::EMBED_SIZE_LIMIT + && CSSMin::getMimeType( $file ) !== false ) ? 'true' : 'false'; + return array( 'keyword', $embeddable ); + } + + /** + * Convert an image URI to a base64-encoded data URI. + * + * @par Example: + * @code + * .fancy-button { + * background-image: embed('../images/button-bg.png'); + * } + * @endcode + */ + public static function embed( $frame, $less ) { + $base = pathinfo( $less->parser->sourceName, PATHINFO_DIRNAME ); + $url = $frame[2][0]; + $file = realpath( $base . '/' . $url ); + + $data = CSSMin::encodeImageAsDataURI( $file ); + $less->embeddedFiles[ $file ] = filemtime( $file ); + return 'url(' . $data . ')'; + } +}