X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FServiceWiring.php;h=2dfcc42b268205a3cb84ac566e7831edf16a1eea;hb=2f28050b6b866f684da92c1832c0a3938b59ef0b;hp=4fec472ef46526477e2c1c56cb55d857ebb11c5d;hpb=e8ec72c26d1b1ac9a55d2a4d4e24a1d98e400a22;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 4fec472ef4..2dfcc42b26 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -43,24 +43,25 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; return [ - 'DBLoadBalancerFactory' => function( MediaWikiServices $services ) { + 'DBLoadBalancerFactory' => function ( MediaWikiServices $services ) { $mainConfig = $services->getMainConfig(); $lbConf = MWLBFactory::applyDefaultConfig( $mainConfig->get( 'LBFactoryConf' ), - $mainConfig + $mainConfig, + $services->getConfiguredReadOnlyMode() ); $class = MWLBFactory::getLBFactoryClass( $lbConf ); return new $class( $lbConf ); }, - 'DBLoadBalancer' => function( MediaWikiServices $services ) { + 'DBLoadBalancer' => function ( MediaWikiServices $services ) { // just return the default LB from the DBLoadBalancerFactory service return $services->getDBLoadBalancerFactory()->getMainLB(); }, - 'SiteStore' => function( MediaWikiServices $services ) { + 'SiteStore' => function ( MediaWikiServices $services ) { $rawSiteStore = new DBSiteStore( $services->getDBLoadBalancer() ); // TODO: replace wfGetCache with a CacheFactory service. @@ -70,12 +71,18 @@ return [ return new CachingSiteStore( $rawSiteStore, $cache ); }, - 'SiteLookup' => function( MediaWikiServices $services ) { - // Use the default SiteStore as the SiteLookup implementation for now - return $services->getSiteStore(); + 'SiteLookup' => function ( MediaWikiServices $services ) { + $cacheFile = $services->getMainConfig()->get( 'SitesCacheFile' ); + + if ( $cacheFile !== false ) { + return new FileBasedSiteLookup( $cacheFile ); + } else { + // Use the default SiteStore as the SiteLookup implementation for now + return $services->getSiteStore(); + } }, - 'ConfigFactory' => function( MediaWikiServices $services ) { + 'ConfigFactory' => function ( MediaWikiServices $services ) { // Use the bootstrap config to initialize the ConfigFactory. $registry = $services->getBootstrapConfig()->get( 'ConfigRegistry' ); $factory = new ConfigFactory(); @@ -86,12 +93,12 @@ return [ return $factory; }, - 'MainConfig' => function( MediaWikiServices $services ) { + 'MainConfig' => function ( MediaWikiServices $services ) { // Use the 'main' config from the ConfigFactory service. return $services->getConfigFactory()->makeConfig( 'main' ); }, - 'InterwikiLookup' => function( MediaWikiServices $services ) { + 'InterwikiLookup' => function ( MediaWikiServices $services ) { global $wgContLang; // TODO: manage $wgContLang as a service $config = $services->getMainConfig(); return new ClassicInterwikiLookup( @@ -104,26 +111,26 @@ return [ ); }, - 'StatsdDataFactory' => function( MediaWikiServices $services ) { + 'StatsdDataFactory' => function ( MediaWikiServices $services ) { return new BufferingStatsdDataFactory( rtrim( $services->getMainConfig()->get( 'StatsdMetricPrefix' ), '.' ) ); }, - 'EventRelayerGroup' => function( MediaWikiServices $services ) { + 'EventRelayerGroup' => function ( MediaWikiServices $services ) { return new EventRelayerGroup( $services->getMainConfig()->get( 'EventRelayerConfig' ) ); }, - 'SearchEngineFactory' => function( MediaWikiServices $services ) { + 'SearchEngineFactory' => function ( MediaWikiServices $services ) { return new SearchEngineFactory( $services->getSearchEngineConfig() ); }, - 'SearchEngineConfig' => function( MediaWikiServices $services ) { + 'SearchEngineConfig' => function ( MediaWikiServices $services ) { global $wgContLang; return new SearchEngineConfig( $services->getMainConfig(), $wgContLang ); }, - 'SkinFactory' => function( MediaWikiServices $services ) { + 'SkinFactory' => function ( MediaWikiServices $services ) { $factory = new SkinFactory(); $names = $services->getMainConfig()->get( 'ValidSkinNames' ); @@ -146,20 +153,21 @@ return [ return $factory; }, - 'WatchedItemStore' => function( MediaWikiServices $services ) { + 'WatchedItemStore' => function ( MediaWikiServices $services ) { $store = new WatchedItemStore( $services->getDBLoadBalancer(), - new HashBagOStuff( [ 'maxKeys' => 100 ] ) + new HashBagOStuff( [ 'maxKeys' => 100 ] ), + $services->getReadOnlyMode() ); $store->setStatsdDataFactory( $services->getStatsdDataFactory() ); return $store; }, - 'WatchedItemQueryService' => function( MediaWikiServices $services ) { + 'WatchedItemQueryService' => function ( MediaWikiServices $services ) { return new WatchedItemQueryService( $services->getDBLoadBalancer() ); }, - 'CryptRand' => function( MediaWikiServices $services ) { + 'CryptRand' => function ( MediaWikiServices $services ) { $secretKey = $services->getMainConfig()->get( 'SecretKey' ); return new CryptRand( [ @@ -170,7 +178,7 @@ return [ // for a little more variance 'wfWikiID', // If we have a secret key set then throw it into the state as well - function() use ( $secretKey ) { + function () use ( $secretKey ) { return $secretKey ?: ''; } ], @@ -184,7 +192,7 @@ return [ ); }, - 'CryptHKDF' => function( MediaWikiServices $services ) { + 'CryptHKDF' => function ( MediaWikiServices $services ) { $config = $services->getMainConfig(); $secret = $config->get( 'HKDFSecret' ) ?: $config->get( 'SecretKey' ); @@ -207,13 +215,13 @@ return [ ); }, - 'MediaHandlerFactory' => function( MediaWikiServices $services ) { + 'MediaHandlerFactory' => function ( MediaWikiServices $services ) { return new MediaHandlerFactory( $services->getMainConfig()->get( 'MediaHandlers' ) ); }, - 'MimeAnalyzer' => function( MediaWikiServices $services ) { + 'MimeAnalyzer' => function ( MediaWikiServices $services ) { $logger = LoggerFactory::getInstance( 'Mime' ); $mainConfig = $services->getMainConfig(); $params = [ @@ -266,7 +274,7 @@ return [ return new MimeMagic( $params ); }, - 'ProxyLookup' => function( MediaWikiServices $services ) { + 'ProxyLookup' => function ( MediaWikiServices $services ) { $mainConfig = $services->getMainConfig(); return new ProxyLookup( $mainConfig->get( 'SquidServers' ), @@ -274,26 +282,26 @@ return [ ); }, - 'Parser' => function( MediaWikiServices $services ) { + 'Parser' => function ( MediaWikiServices $services ) { $conf = $services->getMainConfig()->get( 'ParserConf' ); return ObjectFactory::constructClassInstance( $conf['class'], [ $conf ] ); }, - 'LinkCache' => function( MediaWikiServices $services ) { + 'LinkCache' => function ( MediaWikiServices $services ) { return new LinkCache( $services->getTitleFormatter(), $services->getMainWANObjectCache() ); }, - 'LinkRendererFactory' => function( MediaWikiServices $services ) { + 'LinkRendererFactory' => function ( MediaWikiServices $services ) { return new LinkRendererFactory( $services->getTitleFormatter(), $services->getLinkCache() ); }, - 'LinkRenderer' => function( MediaWikiServices $services ) { + 'LinkRenderer' => function ( MediaWikiServices $services ) { global $wgUser; if ( defined( 'MW_NO_SESSION' ) ) { @@ -303,11 +311,11 @@ return [ } }, - 'GenderCache' => function( MediaWikiServices $services ) { + 'GenderCache' => function ( MediaWikiServices $services ) { return new GenderCache(); }, - '_MediaWikiTitleCodec' => function( MediaWikiServices $services ) { + '_MediaWikiTitleCodec' => function ( MediaWikiServices $services ) { global $wgContLang; return new MediaWikiTitleCodec( @@ -317,15 +325,15 @@ return [ ); }, - 'TitleFormatter' => function( MediaWikiServices $services ) { + 'TitleFormatter' => function ( MediaWikiServices $services ) { return $services->getService( '_MediaWikiTitleCodec' ); }, - 'TitleParser' => function( MediaWikiServices $services ) { + 'TitleParser' => function ( MediaWikiServices $services ) { return $services->getService( '_MediaWikiTitleCodec' ); }, - 'MainObjectStash' => function( MediaWikiServices $services ) { + 'MainObjectStash' => function ( MediaWikiServices $services ) { $mainConfig = $services->getMainConfig(); $id = $mainConfig->get( 'MainStash' ); @@ -337,7 +345,7 @@ return [ return \ObjectCache::newFromParams( $mainConfig->get( 'ObjectCaches' )[$id] ); }, - 'MainWANObjectCache' => function( MediaWikiServices $services ) { + 'MainWANObjectCache' => function ( MediaWikiServices $services ) { $mainConfig = $services->getMainConfig(); $id = $mainConfig->get( 'MainWANCache' ); @@ -357,7 +365,7 @@ return [ return \ObjectCache::newWANCacheFromParams( $params ); }, - 'LocalServerObjectCache' => function( MediaWikiServices $services ) { + 'LocalServerObjectCache' => function ( MediaWikiServices $services ) { $mainConfig = $services->getMainConfig(); if ( function_exists( 'apc_fetch' ) ) { @@ -380,7 +388,7 @@ return [ return \ObjectCache::newFromParams( $mainConfig->get( 'ObjectCaches' )[$id] ); }, - 'VirtualRESTServiceClient' => function( MediaWikiServices $services ) { + 'VirtualRESTServiceClient' => function ( MediaWikiServices $services ) { $config = $services->getMainConfig()->get( 'VirtualRestConfig' ); $vrsClient = new VirtualRESTServiceClient( new MultiHttpClient( [] ) ); @@ -398,6 +406,17 @@ return [ return $vrsClient; }, + 'ConfiguredReadOnlyMode' => function ( MediaWikiServices $services ) { + return new ConfiguredReadOnlyMode( $services->getMainConfig() ); + }, + + 'ReadOnlyMode' => function ( MediaWikiServices $services ) { + return new ReadOnlyMode( + $services->getConfiguredReadOnlyMode(), + $services->getDBLoadBalancer() + ); + }, + /////////////////////////////////////////////////////////////////////////// // NOTE: When adding a service here, don't forget to add a getter function // in the MediaWikiServices class. The convenience getter should just call