X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderStartUpModule.php;h=56fcb6c368d5a677783e5a8196859b8bd3bcebab;hb=d26ae7b17f48f3a84bb2e1934c16ead165a250a0;hp=d4a34f3352d4306ff58940bf3788b6df51fa1057;hpb=25be8cc5859e2f9f6560d6d1d52a47888023fbd6;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index d4a34f3352..56fcb6c368 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -38,6 +38,9 @@ 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' ]; @@ -55,7 +58,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { * @param ResourceLoaderContext $context * @return array */ - private function getConfigSettings( $context ) { + private function getConfigSettings( ResourceLoaderContext $context ) { $conf = $this->getConfig(); /** @@ -121,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; } @@ -307,7 +310,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { } $skipFunction = $module->getSkipFunction(); - if ( $skipFunction !== null && !ResourceLoader::inDebugMode() ) { + if ( $skipFunction !== null && !$context->getDebug() ) { $skipFunction = ResourceLoader::filter( 'minify-js', $skipFunction ); } @@ -323,7 +326,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { self::compileUnresolvedDependencies( $registryData ); // Register sources - $out .= ResourceLoader::makeLoaderSourcesScript( $resourceLoader->getSources() ); + $out .= ResourceLoader::makeLoaderSourcesScript( $context, $resourceLoader->getSources() ); // Figure out the different call signatures for mw.loader.register $registrations = []; @@ -341,10 +344,10 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { } // Register modules - $out .= "\n" . ResourceLoader::makeLoaderRegisterScript( $registrations ); + $out .= "\n" . ResourceLoader::makeLoaderRegisterScript( $context, $registrations ); if ( $states ) { - $out .= "\n" . ResourceLoader::makeLoaderStateScript( $states ); + $out .= "\n" . ResourceLoader::makeLoaderStateScript( $context, $states ); } return $out; @@ -382,6 +385,21 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return 'MediaWikiModuleStore:' . $this->getConfig()->get( 'DBname' ); } + /** + * @see $wgResourceLoaderMaxQueryLength + * @return int + */ + private function getMaxQueryLength() : int { + $len = $this->getConfig()->get( 'ResourceLoaderMaxQueryLength' ); + // - Ignore -1, which in MW 1.34 and earlier was used to mean "unlimited". + // - Ignore invalid values, e.g. non-int or other negative values. + if ( $len === false || $len < 0 ) { + // Default + $len = 2000; + } + return $len; + } + /** * Get the key on which the JavaScript module cache (mw.loader.store) will vary. * @@ -423,23 +441,21 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { // Perform replacements for mediawiki.js $mwLoaderPairs = [ - '$VARS.reqBase' => ResourceLoader::encodeJsonForScript( $context->getReqBase() ), - '$VARS.baseModules' => ResourceLoader::encodeJsonForScript( $this->getBaseModules() ), - '$VARS.maxQueryLength' => ResourceLoader::encodeJsonForScript( - $conf->get( 'ResourceLoaderMaxQueryLength' ) - ), + '$VARS.reqBase' => $context->encodeJson( $context->getReqBase() ), + '$VARS.baseModules' => $context->encodeJson( $this->getBaseModules() ), + '$VARS.maxQueryLength' => $context->encodeJson( $this->getMaxQueryLength() ), // The client-side module cache can be disabled by site configuration. // It is also always disabled in debug mode. - '$VARS.storeEnabled' => ResourceLoader::encodeJsonForScript( + '$VARS.storeEnabled' => $context->encodeJson( $conf->get( 'ResourceLoaderStorageEnabled' ) && !$context->getDebug() ), - '$VARS.wgLegacyJavaScriptGlobals' => ResourceLoader::encodeJsonForScript( + '$VARS.wgLegacyJavaScriptGlobals' => $context->encodeJson( $conf->get( 'LegacyJavaScriptGlobals' ) ), - '$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' ) ), + '$VARS.storeKey' => $context->encodeJson( $this->getStoreKey() ), + '$VARS.storeVary' => $context->encodeJson( $this->getStoreVary( $context ) ), + '$VARS.groupUser' => $context->encodeJson( $this->getGroupId( 'user' ) ), + '$VARS.groupPrivate' => $context->encodeJson( $this->getGroupId( 'private' ) ), ]; $profilerStubs = [ '$CODE.profileExecuteStart();' => 'mw.loader.profiler.onExecuteStart( module );', @@ -458,7 +474,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { // Perform string replacements for startup.js $pairs = [ - '$VARS.configuration' => ResourceLoader::encodeJsonForScript( + '$VARS.configuration' => $context->encodeJson( $this->getConfigSettings( $context ) ), // Raw JavaScript code (not JSON)