Remove all instances of the word "iff"
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoader.php
index 704d781..ef999d9 100644 (file)
@@ -153,6 +153,7 @@ class ResourceLoader {
                $cache = wfGetCache( CACHE_ANYTHING );
                $cacheEntry = $cache->get( $key );
                if ( is_string( $cacheEntry ) ) {
+                       wfIncrStats( "rl-$filter-cache-hits" );
                        wfProfileOut( __METHOD__ );
                        return $cacheEntry;
                }
@@ -160,6 +161,7 @@ class ResourceLoader {
                $result = '';
                // Run the filter - we've already verified one of these will work
                try {
+                       wfIncrStats( "rl-$filter-cache-misses" );
                        switch ( $filter ) {
                                case 'minify-js':
                                        $result = JavaScriptMinifier::minify( $data,
@@ -176,12 +178,12 @@ class ResourceLoader {
 
                        // Save filtered text to Memcached
                        $cache->set( $key, $result );
-               } catch ( Exception $exception ) {
-                       $exception->logException();
-                       wfDebugLog( 'resourceloader', __METHOD__ . ": minification failed: $exception" );
+               } catch ( Exception $e ) {
+                       MWExceptionHandler::logException( $e );
+                       wfDebugLog( 'resourceloader', __METHOD__ . ": minification failed: $e" );
                        $this->hasErrors = true;
                        // Return exception as a comment
-                       $result = self::formatException( $exception );
+                       $result = self::formatException( $e );
                }
 
                wfProfileOut( __METHOD__ );
@@ -475,7 +477,7 @@ class ResourceLoader {
                try {
                        $this->preloadModuleInfo( array_keys( $modules ), $context );
                } catch ( Exception $e ) {
-                       $e->logException();
+                       MWExceptionHandler::logException( $e );
                        wfDebugLog( 'resourceloader', __METHOD__ . ": preloading module info failed: $e" );
                        $this->hasErrors = true;
                        // Add exception to the output as a comment
@@ -495,7 +497,7 @@ class ResourceLoader {
                                // Calculate maximum modified time
                                $mtime = max( $mtime, $module->getModifiedTime( $context ) );
                        } catch ( Exception $e ) {
-                               $e->logException();
+                               MWExceptionHandler::logException( $e );
                                wfDebugLog( 'resourceloader', __METHOD__ . ": calculating maximum modified time failed: $e" );
                                $this->hasErrors = true;
                                // Add exception to the output as a comment
@@ -590,7 +592,7 @@ class ResourceLoader {
         * and clear out the output buffer. If the client cache is too old then do nothing.
         * @param $context ResourceLoaderContext
         * @param string $mtime The TS_MW timestamp to check the header against
-        * @return bool True iff 304 header sent and output handled
+        * @return bool True if 304 header sent and output handled
         */
        protected function tryRespondLastModified( ResourceLoaderContext $context, $mtime ) {
                // If there's an If-Modified-Since header, respond with a 304 appropriately
@@ -722,7 +724,7 @@ class ResourceLoader {
                        try {
                                $blobs = MessageBlobStore::get( $this, $modules, $context->getLanguage() );
                        } catch ( Exception $e ) {
-                               $e->logException();
+                               MWExceptionHandler::logException( $e );
                                wfDebugLog( 'resourceloader', __METHOD__ . ": pre-fetching blobs from MessageBlobStore failed: $e" );
                                $this->hasErrors = true;
                                // Add exception to the output as a comment
@@ -830,7 +832,7 @@ class ResourceLoader {
                                                break;
                                }
                        } catch ( Exception $e ) {
-                               $e->logException();
+                               MWExceptionHandler::logException( $e );
                                wfDebugLog( 'resourceloader', __METHOD__ . ": generating module package failed: $e" );
                                $this->hasErrors = true;
                                // Add exception to the output as a comment
@@ -1211,4 +1213,41 @@ class ResourceLoader {
        public static function isValidModuleName( $moduleName ) {
                return !preg_match( '/[|,!]/', $moduleName ) && strlen( $moduleName ) <= 255;
        }
+
+       /**
+        * Returns LESS compiler set up for use with MediaWiki
+        *
+        * @since 1.22
+        * @return lessc
+        */
+       public static function getLessCompiler() {
+               global $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths;
+
+               $less = new lessc();
+               $less->setPreserveComments( true );
+               $less->setVariables( self::getLESSVars() );
+               $less->setImportDir( $wgResourceLoaderLESSImportPaths );
+               foreach ( $wgResourceLoaderLESSFunctions as $name => $func ) {
+                       $less->registerFunction( $name, $func );
+               }
+               return $less;
+       }
+
+       /**
+        * Get global LESS variables.
+        *
+        * $since 1.22
+        * @return array: Map of variable names to string CSS values.
+        */
+       public static function getLESSVars() {
+               global $wgResourceLoaderLESSVars;
+
+               static $lessVars = null;
+               if ( $lessVars === null ) {
+                       $lessVars = $wgResourceLoaderLESSVars;
+                       // Sort by key to ensure consistent hashing for cache lookups.
+                       ksort( $lessVars );
+               }
+               return $lessVars;
+       }
 }