Merge "deferred: make DeferredUpdates::attemptUpdate() use callback owners for $fname...
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoaderFileModule.php
index 017b399..d308d50 100644 (file)
@@ -256,11 +256,11 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                case 'debugScripts':
                                case 'styles':
                                case 'packageFiles':
-                                       $this->{$member} = (array)$option;
+                                       $this->{$member} = is_array( $option ) ? $option : [ $option ];
                                        break;
                                case 'templates':
                                        $hasTemplates = true;
-                                       $this->{$member} = (array)$option;
+                                       $this->{$member} = is_array( $option ) ? $option : [ $option ];
                                        break;
                                // Collated lists of file paths
                                case 'languageScripts':
@@ -279,7 +279,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                                                "'$key' given, string expected."
                                                        );
                                                }
-                                               $this->{$member}[$key] = (array)$value;
+                                               $this->{$member}[$key] = is_array( $value ) ? $value : [ $value ];
                                        }
                                        break;
                                case 'deprecated':
@@ -315,7 +315,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        // Ensure relevant template compiler module gets loaded
                        foreach ( $this->templates as $alias => $templatePath ) {
                                if ( is_int( $alias ) ) {
-                                       $alias = $templatePath;
+                                       $alias = $this->getPath( $templatePath );
                                }
                                $suffix = explode( '.', $alias );
                                $suffix = end( $suffix );
@@ -643,6 +643,18 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                return $summary;
        }
 
+       /**
+        * @param string|ResourceLoaderFilePath $path
+        * @return string
+        */
+       protected function getPath( $path ) {
+               if ( $path instanceof ResourceLoaderFilePath ) {
+                       return $path->getPath();
+               }
+
+               return $path;
+       }
+
        /**
         * @param string|ResourceLoaderFilePath $path
         * @return string
@@ -992,6 +1004,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        || $this->dependencies
                        || $this->messages
                        || $this->skipFunction
+                       || $this->packageFiles
                );
                return $canBeStylesOnly ? self::LOAD_STYLES : self::LOAD_GENERAL;
        }
@@ -1002,7 +1015,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         * Keeps track of all used files and adds them to localFileRefs.
         *
         * @since 1.22
-        * @since 1.27 Added $context paramter.
+        * @since 1.27 Added $context parameter.
         * @throws Exception If less.php encounters a parse error
         * @param string $fileName File path of LESS source
         * @param ResourceLoaderContext $context Context in which to generate script
@@ -1060,7 +1073,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                foreach ( $this->templates as $alias => $templatePath ) {
                        // Alias is optional
                        if ( is_int( $alias ) ) {
-                               $alias = $templatePath;
+                               $alias = $this->getPath( $templatePath );
                        }
                        $localPath = $this->getLocalPath( $templatePath );
                        if ( file_exists( $localPath ) ) {
@@ -1147,11 +1160,12 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                                throw new MWException( __METHOD__ . ": invalid versionCallback for file" .
                                                        " \"{$fileInfo['name']}\" in module \"{$this->getName()}\"" );
                                        }
-                                       $expanded['definitionSummary'] = ( $fileInfo['versionCallback'] )( $context );
+                                       $expanded['definitionSummary'] =
+                                               ( $fileInfo['versionCallback'] )( $context, $this->getConfig() );
                                        // Don't invoke 'callback' here as it may be expensive (T223260).
                                        $expanded['callback'] = $fileInfo['callback'];
                                } else {
-                                       $expanded['content'] = ( $fileInfo['callback'] )( $context );
+                                       $expanded['content'] = ( $fileInfo['callback'] )( $context, $this->getConfig() );
                                }
                        } elseif ( isset( $fileInfo['config'] ) ) {
                                if ( $type !== 'data' ) {
@@ -1228,7 +1242,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                $fileInfo['content'] = $content;
                                unset( $fileInfo['filePath'] );
                        } elseif ( isset( $fileInfo['callback'] ) ) {
-                               $fileInfo['content'] = ( $fileInfo['callback'] )( $context );
+                               $fileInfo['content'] = ( $fileInfo['callback'] )( $context, $this->getConfig() );
                                unset( $fileInfo['callback'] );
                        }