X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderStartUpModule.php;h=d4a34f3352d4306ff58940bf3788b6df51fa1057;hb=f5360c82b810a05b35e8de3f983ecf2deea1961a;hp=8f026dc87bcd1e852bbf753c549647ae388c376b;hpb=1e289e5424be2bfe62213dde90bea658b874f7e6;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 8f026dc87b..d4a34f3352 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -42,6 +42,15 @@ use MediaWiki\MediaWikiServices; 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 +104,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 @@ -282,7 +292,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $states[$name] = 'error'; } - if ( $versionHash !== '' && strlen( $versionHash ) !== 7 ) { + 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}'.", @@ -304,7 +314,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, ]; @@ -340,6 +350,18 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return $out; } + 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]; + } + /** * Base modules implicitly available to all modules. * @@ -416,6 +438,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 );',