X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FServiceWiring.php;h=c9db5a88dcea338e84953193fe616d86d2d2b713;hb=fd316395f1c225b040a9fec38d0e23eb5637d544;hp=0b5288ee5f621a3fdef695ca687af51c389b9fa8;hpb=06aaf493e12f998784c7c9294e8533d979623308;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 0b5288ee5f..c9db5a88dc 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -39,7 +39,11 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface; use MediaWiki\Auth\AuthManager; +use MediaWiki\Block\BlockManager; +use MediaWiki\Block\BlockRestrictionStore; use MediaWiki\Config\ConfigRepository; +use MediaWiki\Config\ServiceOptions; +use MediaWiki\Http\HttpRequestFactory; use MediaWiki\Interwiki\ClassicInterwikiLookup; use MediaWiki\Interwiki\InterwikiLookup; use MediaWiki\Linker\LinkRenderer; @@ -62,6 +66,7 @@ use MediaWiki\Storage\BlobStore; use MediaWiki\Storage\BlobStoreFactory; use MediaWiki\Storage\NameTableStoreFactory; use MediaWiki\Storage\SqlBlobStore; +use MediaWiki\Storage\PageEditStash; return [ 'ActorMigration' => function ( MediaWikiServices $services ) : ActorMigration { @@ -78,11 +83,35 @@ return [ return new BlobStoreFactory( $services->getDBLoadBalancerFactory(), $services->getMainWANObjectCache(), - $services->getMainConfig(), + new ServiceOptions( BlobStoreFactory::$constructorOptions, + $services->getMainConfig() ), $services->getContentLanguage() ); }, + 'BlockManager' => function ( MediaWikiServices $services ) : BlockManager { + $config = $services->getMainConfig(); + $context = RequestContext::getMain(); + return new BlockManager( + $context->getUser(), + $context->getRequest(), + $config->get( 'ApplyIpBlocksToXff' ), + $config->get( 'CookieSetOnAutoblock' ), + $config->get( 'CookieSetOnIpBlock' ), + $config->get( 'DnsBlacklistUrls' ), + $config->get( 'EnableDnsBlacklist' ), + $config->get( 'ProxyList' ), + $config->get( 'ProxyWhitelist' ), + $config->get( 'SoftBlockRanges' ) + ); + }, + + 'BlockRestrictionStore' => function ( MediaWikiServices $services ) : BlockRestrictionStore { + return new BlockRestrictionStore( + $services->getDBLoadBalancer() + ); + }, + 'CommentStore' => function ( MediaWikiServices $services ) : CommentStore { return new CommentStore( $services->getContentLanguage(), @@ -106,7 +135,11 @@ return [ }, 'ConfiguredReadOnlyMode' => function ( MediaWikiServices $services ) : ConfiguredReadOnlyMode { - return new ConfiguredReadOnlyMode( $services->getMainConfig() ); + $config = $services->getMainConfig(); + return new ConfiguredReadOnlyMode( + $config->get( 'ReadOnly' ), + $config->get( 'ReadOnlyFile' ) + ); }, 'ContentLanguage' => function ( MediaWikiServices $services ) : Language { @@ -134,11 +167,11 @@ return [ return new CryptHKDF( $secret, $config->get( 'HKDFAlgorithm' ), $cache, $context ); }, - 'CryptRand' => function () : CryptRand { - return new CryptRand(); + 'DateFormatterFactory' => function () : DateFormatterFactory { + return new DateFormatterFactory; }, - 'DBLoadBalancer' => function ( MediaWikiServices $services ) : Wikimedia\Rdbms\LoadBalancer { + 'DBLoadBalancer' => function ( MediaWikiServices $services ) : Wikimedia\Rdbms\ILoadBalancer { // just return the default LB from the DBLoadBalancerFactory service return $services->getDBLoadBalancerFactory()->getMainLB(); }, @@ -149,7 +182,7 @@ return [ $lbConf = MWLBFactory::applyDefaultConfig( $mainConfig->get( 'LBFactoryConf' ), - $mainConfig, + new ServiceOptions( MWLBFactory::$applyDefaultConfigOptions, $mainConfig ), $services->getConfiguredReadOnlyMode(), $services->getLocalServerObjectCache(), $services->getMainObjectStash(), @@ -158,7 +191,7 @@ return [ $class = MWLBFactory::getLBFactoryClass( $lbConf ); $instance = new $class( $lbConf ); - MWLBFactory::setSchemaAliases( $instance, $mainConfig ); + MWLBFactory::setSchemaAliases( $instance, $mainConfig->get( 'DBtype' ) ); return $instance; }, @@ -176,12 +209,12 @@ return [ }, 'GenderCache' => function ( MediaWikiServices $services ) : GenderCache { - return new GenderCache(); + return new GenderCache( $services->getNamespaceInfo() ); }, 'HttpRequestFactory' => - function ( MediaWikiServices $services ) : \MediaWiki\Http\HttpRequestFactory { - return new \MediaWiki\Http\HttpRequestFactory(); + function ( MediaWikiServices $services ) : HttpRequestFactory { + return new HttpRequestFactory(); }, 'InterwikiLookup' => function ( MediaWikiServices $services ) : InterwikiLookup { @@ -199,7 +232,8 @@ return [ 'LinkCache' => function ( MediaWikiServices $services ) : LinkCache { return new LinkCache( $services->getTitleFormatter(), - $services->getMainWANObjectCache() + $services->getMainWANObjectCache(), + $services->getNamespaceInfo() ); }, @@ -216,7 +250,8 @@ return [ 'LinkRendererFactory' => function ( MediaWikiServices $services ) : LinkRendererFactory { return new LinkRendererFactory( $services->getTitleFormatter(), - $services->getLinkCache() + $services->getLinkCache(), + $services->getNamespaceInfo() ); }, @@ -330,6 +365,11 @@ return [ return new MimeAnalyzer( $params ); }, + 'NamespaceInfo' => function ( MediaWikiServices $services ) : NamespaceInfo { + return new NamespaceInfo( new ServiceOptions( NamespaceInfo::$constructorOptions, + $services->getMainConfig() ) ); + }, + 'NameTableStoreFactory' => function ( MediaWikiServices $services ) : NameTableStoreFactory { return new NameTableStoreFactory( $services->getDBLoadBalancerFactory(), @@ -346,6 +386,20 @@ return [ ); }, + 'PageEditStash' => function ( MediaWikiServices $services ) : PageEditStash { + $config = $services->getMainConfig(); + + return new PageEditStash( + ObjectCache::getLocalClusterInstance(), + $services->getDBLoadBalancer(), + LoggerFactory::getInstance( 'StashEdit' ), + $services->getStatsdDataFactory(), + defined( 'MEDIAWIKI_JOB_RUNNER' ) || $config->get( 'CommandLineMode' ) + ? PageEditStash::INITIATOR_JOB_OR_CLI + : PageEditStash::INITIATOR_USER + ); + }, + 'Parser' => function ( MediaWikiServices $services ) : Parser { return $services->getParserFactory()->create(); }, @@ -362,13 +416,24 @@ return [ }, 'ParserFactory' => function ( MediaWikiServices $services ) : ParserFactory { - return new ParserFactory( + $options = new ServiceOptions( Parser::$constructorOptions, + // 'class' and 'preprocessorClass' $services->getMainConfig()->get( 'ParserConf' ), + // Make sure to have defaults in case someone overrode ParserConf with something silly + [ 'class' => Parser::class, + 'preprocessorClass' => Parser::getDefaultPreprocessorClass() ], + // Plus a buch of actual config options + $services->getMainConfig() + ); + + return new ParserFactory( + $options, $services->getMagicWordFactory(), $services->getContentLanguage(), wfUrlProtocols(), $services->getSpecialPageFactory(), - $services->getMainConfig() + $services->getLinkRendererFactory(), + $services->getNamespaceInfo() ); }, @@ -397,15 +462,19 @@ return [ $config->get( 'WhitelistRead' ), $config->get( 'WhitelistReadRegexp' ), $config->get( 'EmailConfirmToEdit' ), - $config->get( 'BlockDisablesLogin' ) ); + $config->get( 'BlockDisablesLogin' ), + $services->getNamespaceInfo() + ); }, 'PreferencesFactory' => function ( MediaWikiServices $services ) : PreferencesFactory { $factory = new DefaultPreferencesFactory( - $services->getMainConfig(), + new ServiceOptions( + DefaultPreferencesFactory::$constructorOptions, $services->getMainConfig() ), $services->getContentLanguage(), AuthManager::singleton(), - $services->getLinkRendererFactory()->create() + $services->getLinkRendererFactory()->create(), + $services->getNamespaceInfo() ); $factory->setLogger( LoggerFactory::getInstance( 'preferences' ) ); @@ -427,7 +496,18 @@ return [ ); }, + 'RepoGroup' => function ( MediaWikiServices $services ) : RepoGroup { + $config = $services->getMainConfig(); + return new RepoGroup( + $config->get( 'LocalFileRepo' ), + $config->get( 'ForeignFileRepos' ), + $services->getMainWANObjectCache() + ); + }, + 'ResourceLoader' => function ( MediaWikiServices $services ) : ResourceLoader { + // @todo This should not take a Config object, but it's not so easy to remove because it + // exposes it in a getter, which is actually used. global $IP; $config = $services->getMainConfig(); @@ -435,8 +515,17 @@ return [ $config, LoggerFactory::getInstance( 'resourceloader' ) ); + $rl->addSource( $config->get( 'ResourceLoaderSources' ) ); + + // Core modules, then extension/skin modules $rl->register( include "$IP/resources/Resources.php" ); + $rl->register( $config->get( 'ResourceModules' ) ); + Hooks::run( 'ResourceLoaderRegisterModules', [ &$rl ] ); + + if ( $config->get( 'EnableJavaScriptTest' ) === true ) { + $rl->registerTestModules(); + } return $rl; }, @@ -482,6 +571,8 @@ return [ }, 'SearchEngineConfig' => function ( MediaWikiServices $services ) : SearchEngineConfig { + // @todo This should not take a Config object, but it's not so easy to remove because it + // exposes it in a getter, which is actually used. return new SearchEngineConfig( $services->getMainConfig(), $services->getContentLanguage() ); }, @@ -567,7 +658,8 @@ return [ 'SpecialPageFactory' => function ( MediaWikiServices $services ) : SpecialPageFactory { return new SpecialPageFactory( - $services->getMainConfig(), + new ServiceOptions( + SpecialPageFactory::$constructorOptions, $services->getMainConfig() ), $services->getContentLanguage() ); }, @@ -627,7 +719,9 @@ return [ $services->getMainObjectStash(), new HashBagOStuff( [ 'maxKeys' => 100 ] ), $services->getReadOnlyMode(), - $services->getMainConfig()->get( 'UpdateRowsPerQuery' ) + $services->getMainConfig()->get( 'UpdateRowsPerQuery' ), + $services->getNamespaceInfo(), + $services->getRevisionLookup() ); $store->setStatsdDataFactory( $services->getStatsdDataFactory() ); @@ -652,7 +746,8 @@ return [ $services->getContentLanguage(), $services->getGenderCache(), $services->getMainConfig()->get( 'LocalInterwikis' ), - $services->getInterwikiLookup() + $services->getInterwikiLookup(), + $services->getNamespaceInfo() ); },