X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FServiceWiring.php;h=7bdd7c8af106b5372cd6d93f2cb58fb213072e49;hb=e4468a1d6b6;hp=b6500a41dcf17d5aee995c7f69fdfadf67e60f1a;hpb=6cfb2e3d7a2b96d5041312fcec88248bb46573d7;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index b6500a41dc..7bdd7c8af1 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -39,10 +39,12 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface; use MediaWiki\Auth\AuthManager; +use MediaWiki\BadFileLookup; use MediaWiki\Block\BlockManager; use MediaWiki\Block\BlockRestrictionStore; use MediaWiki\Config\ConfigRepository; use MediaWiki\Config\ServiceOptions; +use MediaWiki\FileBackend\FSFile\TempFSFileFactory; use MediaWiki\Http\HttpRequestFactory; use MediaWiki\Interwiki\ClassicInterwikiLookup; use MediaWiki\Interwiki\InterwikiLookup; @@ -50,6 +52,7 @@ use MediaWiki\Linker\LinkRenderer; use MediaWiki\Linker\LinkRendererFactory; use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use MediaWiki\Page\MovePageFactory; use MediaWiki\Permissions\PermissionManager; use MediaWiki\Preferences\PreferencesFactory; use MediaWiki\Preferences\DefaultPreferencesFactory; @@ -75,6 +78,17 @@ return [ ); }, + 'BadFileLookup' => function ( MediaWikiServices $services ) : BadFileLookup { + return new BadFileLookup( + function () { + return wfMessage( 'bad_image_list' )->inContentLanguage()->plain(); + }, + $services->getLocalServerObjectCache(), + $services->getRepoGroup(), + $services->getTitleParser() + ); + }, + 'BlobStore' => function ( MediaWikiServices $services ) : BlobStore { return $services->getService( '_SqlBlobStore' ); }, @@ -97,7 +111,8 @@ return [ BlockManager::$constructorOptions, $services->getMainConfig() ), $context->getUser(), - $context->getRequest() + $context->getRequest(), + $services->getPermissionManager() ); }, @@ -215,7 +230,12 @@ return [ }, 'GenderCache' => function ( MediaWikiServices $services ) : GenderCache { - return new GenderCache( $services->getNamespaceInfo() ); + $nsInfo = $services->getNamespaceInfo(); + // Database layer may be disabled, so processing without database connection + $dbLoadBalancer = $services->isServiceDisabled( 'DBLoadBalancer' ) + ? null + : $services->getDBLoadBalancer(); + return new GenderCache( $nsInfo, $dbLoadBalancer ); }, 'HttpRequestFactory' => @@ -261,9 +281,60 @@ return [ ); }, + 'LocalisationCache' => function ( MediaWikiServices $services ) : LocalisationCache { + $conf = $services->getMainConfig()->get( 'LocalisationCacheConf' ); + + $logger = LoggerFactory::getInstance( 'localisation' ); + + // Figure out what class to use for the LCStore + $storeArg = []; + $storeArg['directory'] = + $conf['storeDirectory'] ?? $services->getMainConfig()->get( 'CacheDirectory' ); + + if ( !empty( $conf['storeClass'] ) ) { + $storeClass = $conf['storeClass']; + } elseif ( $conf['store'] === 'files' || $conf['store'] === 'file' || + ( $conf['store'] === 'detect' && $storeArg['directory'] ) + ) { + $storeClass = LCStoreCDB::class; + } elseif ( $conf['store'] === 'db' || $conf['store'] === 'detect' ) { + $storeClass = LCStoreDB::class; + $storeArg['server'] = $conf['storeServer'] ?? []; + } elseif ( $conf['store'] === 'array' ) { + $storeClass = LCStoreStaticArray::class; + } else { + throw new MWException( + 'Please set $wgLocalisationCacheConf[\'store\'] to something sensible.' + ); + } + $logger->debug( "LocalisationCache: using store $storeClass" ); + + return new $conf['class']( + new ServiceOptions( + LocalisationCache::$constructorOptions, + // Two of the options are stored in $wgLocalisationCacheConf + $conf, + // In case someone set that config variable and didn't reset all keys, set defaults. + [ + 'forceRecache' => false, + 'manualRecache' => false, + ], + // Some other options come from config itself + $services->getMainConfig() + ), + new $storeClass( $storeArg ), + $logger, + [ function () use ( $services ) { + $services->getResourceLoader()->getMessageBlobStore()->clear(); + } ] + ); + }, + 'LocalServerObjectCache' => function ( MediaWikiServices $services ) : BagOStuff { + $config = $services->getMainConfig(); $cacheId = \ObjectCache::detectLocalServerCache(); - return \ObjectCache::newFromId( $cacheId ); + + return \ObjectCache::newFromParams( $config->get( 'ObjectCaches' )[$cacheId] ); }, 'MagicWordFactory' => function ( MediaWikiServices $services ) : MagicWordFactory { @@ -313,6 +384,20 @@ return [ ); }, + 'MessageCache' => function ( MediaWikiServices $services ) : MessageCache { + $mainConfig = $services->getMainConfig(); + return new MessageCache( + $services->getMainWANObjectCache(), + ObjectCache::getInstance( $mainConfig->get( 'MessageCacheType' ) ), + $mainConfig->get( 'UseLocalMessageCache' ) + ? $services->getLocalServerObjectCache() + : new EmptyBagOStuff(), + $mainConfig->get( 'UseDatabaseMessages' ), + $mainConfig->get( 'MsgCacheExpiry' ), + $services->getContentLanguage() + ); + }, + 'MimeAnalyzer' => function ( MediaWikiServices $services ) : MimeAnalyzer { $logger = LoggerFactory::getInstance( 'Mime' ); $mainConfig = $services->getMainConfig(); @@ -371,6 +456,17 @@ return [ return new MimeAnalyzer( $params ); }, + 'MovePageFactory' => function ( MediaWikiServices $services ) : MovePageFactory { + return new MovePageFactory( + new ServiceOptions( MovePageFactory::$constructorOptions, $services->getMainConfig() ), + $services->getDBLoadBalancer(), + $services->getNamespaceInfo(), + $services->getWatchedItemStore(), + $services->getPermissionManager(), + $services->getRepoGroup() + ); + }, + 'NamespaceInfo' => function ( MediaWikiServices $services ) : NamespaceInfo { return new NamespaceInfo( new ServiceOptions( NamespaceInfo::$constructorOptions, $services->getMainConfig() ) ); @@ -463,17 +559,12 @@ return [ }, 'PermissionManager' => function ( MediaWikiServices $services ) : PermissionManager { - $config = $services->getMainConfig(); return new PermissionManager( + new ServiceOptions( + PermissionManager::$constructorOptions, $services->getMainConfig() + ), $services->getSpecialPageFactory(), $services->getRevisionLookup(), - $config->get( 'WhitelistRead' ), - $config->get( 'WhitelistReadRegexp' ), - $config->get( 'EmailConfirmToEdit' ), - $config->get( 'BlockDisablesLogin' ), - $config->get( 'GroupPermissions' ), - $config->get( 'RevokePermissions' ), - $config->get( 'AvailableRights' ), $services->getNamespaceInfo() ); }, @@ -621,9 +712,10 @@ return [ 'SiteStore' => function ( MediaWikiServices $services ) : SiteStore { $rawSiteStore = new DBSiteStore( $services->getDBLoadBalancer() ); - // TODO: replace wfGetCache with a CacheFactory service. - // TODO: replace wfIsHHVM with a capabilities service. - $cache = wfGetCache( wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING ); + $cache = $services->getLocalServerObjectCache(); + if ( $cache instanceof EmptyBagOStuff ) { + $cache = ObjectCache::getLocalClusterInstance(); + } return new CachingSiteStore( $rawSiteStore, $cache ); }, @@ -681,6 +773,10 @@ return [ ); }, + 'TempFSFileFactory' => function ( MediaWikiServices $services ) : TempFSFileFactory { + return new TempFSFileFactory( $services->getMainConfig()->get( 'TmpDirectory' ) ); + }, + 'TitleFormatter' => function ( MediaWikiServices $services ) : TitleFormatter { return $services->getService( '_MediaWikiTitleCodec' ); },