X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderStartUpModule.php;h=8f026dc87bcd1e852bbf753c549647ae388c376b;hb=fa0f6f34972c0e0f4aac24a03b3efdfc45f256f6;hp=6b38ee4cf7c97bf7813c3e3a2918f0adfb39ae8f;hpb=4306994b7999ce4018a534844502a10f46eb169e;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 6b38ee4cf7..78775fb597 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -38,10 +38,22 @@ use MediaWiki\MediaWikiServices; * - safemode: Only register modules that have ORIGIN_CORE as their origin. * This effectively disables ORIGIN_USER modules. (T185303) * See also: OutputPage::disallowUserJs() + * + * @ingroup ResourceLoader + * @internal */ class ResourceLoaderStartUpModule extends ResourceLoaderModule { protected $targets = [ 'desktop', 'mobile' ]; + private $groupIds = [ + // These reserved numbers MUST start at 0 and not skip any. These are preset + // for forward compatiblity so that they can be safely referenced by mediawiki.js, + // even when the code is cached and the order of registrations (and implicit + // group ids) changes between versions of the software. + 'user' => 0, + 'private' => 1, + ]; + /** * @param ResourceLoaderContext $context * @return array @@ -95,6 +107,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { 'wgContentNamespaces' => $nsInfo->getContentNamespaces(), 'wgSiteName' => $conf->get( 'Sitename' ), 'wgDBname' => $conf->get( 'DBname' ), + 'wgWikiID' => WikiMap::getWikiIdFromDbDomain( WikiMap::getCurrentWikiDbDomain() ), 'wgExtraSignatureNamespaces' => $conf->get( 'ExtraSignatureNamespaces' ), 'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ), // MediaWiki sets cookies to have this prefix by default @@ -111,7 +124,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { 'wgCommentCodePointLimit' => CommentStore::COMMENT_CHARACTER_LIMIT, ]; - Hooks::run( 'ResourceLoaderGetConfigVars', [ &$vars, $skin ] ); + Hooks::run( 'ResourceLoaderGetConfigVars', [ &$vars, $skin, $conf ] ); return $vars; } @@ -282,9 +295,10 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $states[$name] = 'error'; } - if ( $versionHash !== '' && strlen( $versionHash ) !== 7 ) { - $this->getLogger()->warning( - "Module '{module}' produced an invalid version hash: '{version}'.", + if ( $versionHash !== '' && strlen( $versionHash ) !== ResourceLoader::HASH_LENGTH ) { + $e = new RuntimeException( "Badly formatted module version hash" ); + $resourceLoader->outputErrorAndLog( $e, + "Module '{module}' produced an invalid version hash: '{version}'.", [ 'module' => $name, 'version' => $versionHash, @@ -303,7 +317,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $registryData[$name] = [ 'version' => $versionHash, 'dependencies' => $module->getDependencies( $context ), - 'group' => $module->getGroup(), + 'group' => $this->getGroupId( $module->getGroup() ), 'source' => $module->getSource(), 'skip' => $skipFunction, ]; @@ -339,14 +353,16 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return $out; } - /** - * @private For internal use by SpecialJavaScriptTest - * @since 1.32 - * @return array - * @codeCoverageIgnore - */ - public function getBaseModulesInternal() { - return $this->getBaseModules(); + private function getGroupId( $groupName ) { + if ( $groupName === null ) { + return null; + } + + if ( !array_key_exists( $groupName, $this->groupIds ) ) { + $this->groupIds[$groupName] = count( $this->groupIds ); + } + + return $this->groupIds[$groupName]; } /** @@ -355,13 +371,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { * @return array */ private function getBaseModules() { - global $wgIncludeLegacyJavaScript; - $baseModules = [ 'jquery', 'mediawiki.base' ]; - if ( $wgIncludeLegacyJavaScript ) { - $baseModules[] = 'mediawiki.legacy.wikibits'; - } - return $baseModules; } @@ -431,6 +441,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { ), '$VARS.storeKey' => ResourceLoader::encodeJsonForScript( $this->getStoreKey() ), '$VARS.storeVary' => ResourceLoader::encodeJsonForScript( $this->getStoreVary( $context ) ), + '$VARS.groupUser' => ResourceLoader::encodeJsonForScript( $this->getGroupId( 'user' ) ), + '$VARS.groupPrivate' => ResourceLoader::encodeJsonForScript( $this->getGroupId( 'private' ) ), ]; $profilerStubs = [ '$CODE.profileExecuteStart();' => 'mw.loader.profiler.onExecuteStart( module );',