Replace wfRunHooks calls with direct Hooks::run calls
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoaderStartUpModule.php
index 78fe8e0..a0764de 100644 (file)
@@ -92,9 +92,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgSiteName' => $conf->get( 'Sitename' ),
                        'wgFileExtensions' => array_values( array_unique( $conf->get( 'FileExtensions' ) ) ),
                        'wgDBname' => $conf->get( 'DBname' ),
-                       // This sucks, it is only needed on Special:Upload, but I could
-                       // not find a way to add vars only for a certain module
-                       'wgFileCanRotate' => SpecialUpload::rotationEnabled(),
                        'wgAvailableSkins' => Skin::getSkinNames(),
                        'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ),
                        // MediaWiki sets cookies to have this prefix by default
@@ -109,7 +106,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgResourceLoaderStorageEnabled' => $conf->get( 'ResourceLoaderStorageEnabled' ),
                );
 
-               wfRunHooks( 'ResourceLoaderGetConfigVars', array( &$vars ) );
+               Hooks::run( 'ResourceLoaderGetConfigVars', array( &$vars ) );
 
                $this->configVars[$hash] = $vars;
                return $this->configVars[$hash];
@@ -150,7 +147,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        }
 
        /**
-        * Optimize the dependency tree in $this->modules and return it.
+        * Optimize the dependency tree in $this->modules.
         *
         * The optimization basically works like this:
         *      Given we have module A with the dependencies B and C
@@ -158,11 +155,11 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         *      Now we don't have to tell the client to explicitly fetch module
         *              C as that's already included in module B.
         *
-        * This way we can reasonably reduce the amout of module registration
+        * This way we can reasonably reduce the amount of module registration
         * data send to the client.
         *
         * @param array &$registryData Modules keyed by name with properties:
-        *  - string 'version'
+        *  - number 'version'
         *  - array 'dependencies'
         *  - string|null 'group'
         *  - string 'source'
@@ -214,12 +211,10 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                                continue;
                        }
 
-                       // getModifiedTime() is supposed to return a UNIX timestamp, but it doesn't always
-                       // seem to do that, and custom implementations might forget. Coerce it to TS_UNIX
+                       // Coerce module timestamp to UNIX timestamp.
+                       // getModifiedTime() is supposed to return a UNIX timestamp, but custom implementations
+                       // might forget. TODO: Maybe emit warning?
                        $moduleMtime = wfTimestamp( TS_UNIX, $module->getModifiedTime( $context ) );
-                       $mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $this->getConfig()->get( 'CacheEpoch' ) ) );
-
-                       // FIXME: Convert to numbers, wfTimestamp always gives us stings, even for TS_UNIX
 
                        $skipFunction = $module->getSkipFunction();
                        if ( $skipFunction !== null && !ResourceLoader::inDebugMode() ) {
@@ -232,8 +227,14 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                                );
                        }
 
+                       $mtime = max(
+                               $moduleMtime,
+                               wfTimestamp( TS_UNIX, $this->getConfig()->get( 'CacheEpoch' ) )
+                       );
+
                        $registryData[$name] = array(
-                               'version' => $mtime,
+                               // Convert to numbers as wfTimestamp always returns a string, even for TS_UNIX
+                               'version' => (int) $mtime,
                                'dependencies' => $module->getDependencies(),
                                'group' => $module->getGroup(),
                                'source' => $module->getSource(),
@@ -254,7 +255,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        if ( $data['loader'] !== false ) {
                                $out .= ResourceLoader::makeCustomLoaderScript(
                                        $name,
-                                       wfTimestamp( TS_ISO_8601_BASIC, $data['version'] ),
+                                       $data['version'],
                                        $data['dependencies'],
                                        $data['group'],
                                        $data['source'],
@@ -263,57 +264,16 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                                continue;
                        }
 
-                       if (
-                               !count( $data['dependencies'] ) &&
-                               $data['group'] === null &&
-                               $data['source'] === 'local' &&
-                               $data['skip'] === null
-                       ) {
-                               // Modules with no dependencies, group, foreign source or skip function;
-                               // call mw.loader.register(name, timestamp)
-                               $registrations[] = array( $name, $data['version'] );
-                       } elseif (
-                               $data['group'] === null &&
-                               $data['source'] === 'local' &&
-                               $data['skip'] === null
-                       ) {
-                               // Modules with dependencies but no group, foreign source or skip function;
-                               // call mw.loader.register(name, timestamp, dependencies)
-                               $registrations[] = array( $name, $data['version'], $data['dependencies'] );
-                       } elseif (
-                               $data['source'] === 'local' &&
-                               $data['skip'] === null
-                       ) {
-                               // Modules with a group but no foreign source or skip function;
-                               // call mw.loader.register(name, timestamp, dependencies, group)
-                               $registrations[] = array(
-                                       $name,
-                                       $data['version'],
-                                       $data['dependencies'],
-                                       $data['group']
-                               );
-                       } elseif ( $data['skip'] === null ) {
-                               // Modules with a foreign source but no skip function;
-                               // call mw.loader.register(name, timestamp, dependencies, group, source)
-                               $registrations[] = array(
-                                       $name,
-                                       $data['version'],
-                                       $data['dependencies'],
-                                       $data['group'],
-                                       $data['source']
-                               );
-                       } else {
-                               // Modules with a skip function;
-                               // call mw.loader.register(name, timestamp, dependencies, group, source, skip)
-                               $registrations[] = array(
-                                       $name,
-                                       $data['version'],
-                                       $data['dependencies'],
-                                       $data['group'],
-                                       $data['source'],
-                                       $data['skip']
-                               );
-                       }
+                       // Call mw.loader.register(name, timestamp, dependencies, group, source, skip)
+                       $registrations[] = array(
+                               $name,
+                               $data['version'],
+                               $data['dependencies'],
+                               $data['group'],
+                               // Swap default (local) for null
+                               $data['source'] === 'local' ? null : $data['source'],
+                               $data['skip']
+                       );
                }
 
                // Register modules
@@ -355,7 +315,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
 
                // Get the latest version
                $loader = $context->getResourceLoader();
-               $version = 0;
+               $version = 1;
                foreach ( $moduleNames as $moduleName ) {
                        $version = max( $version,
                                $loader->getModule( $moduleName )->getModifiedTime( $context )
@@ -390,11 +350,20 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        $registrations = $this->getModuleRegistrations( $context );
                        // Fix indentation
                        $registrations = str_replace( "\n", "\n\t", trim( $registrations ) );
+                       $mwMapJsCall = Xml::encodeJsCall(
+                               'mw.Map',
+                               array( $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) )
+                       );
+                       $mwConfigSetJsCall = Xml::encodeJsCall(
+                               'mw.config.set',
+                               array( $configuration )
+                       );
+
                        $out .= "var startUp = function () {\n" .
                                "\tmw.config = new " .
-                               Xml::encodeJsCall( 'mw.Map', array( $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) ) ) . "\n" .
+                               $mwMapJsCall . "\n" .
                                "\t$registrations\n" .
-                               "\t" . Xml::encodeJsCall( 'mw.config.set', array( $configuration ) ) .
+                               "\t" . $mwConfigSetJsCall .
                                "};\n";
 
                        // Conditional script injection