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;
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;
use MediaWiki\Storage\NameTableStoreFactory;
use MediaWiki\Storage\SqlBlobStore;
use MediaWiki\Storage\PageEditStash;
+use Wikimedia\ObjectFactory;
return [
'ActorMigration' => function ( MediaWikiServices $services ) : ActorMigration {
);
},
+ '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' );
},
BlockManager::$constructorOptions, $services->getMainConfig()
),
$context->getUser(),
- $context->getRequest()
+ $context->getRequest(),
+ $services->getPermissionManager()
);
},
},
'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' =>
);
},
+ '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 {
);
},
+ '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();
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() ) );
);
},
+ 'ObjectFactory' => function ( MediaWikiServices $services ) : ObjectFactory {
+ return new ObjectFactory( $services );
+ },
+
'OldRevisionImporter' => function ( MediaWikiServices $services ) : OldRevisionImporter {
return new ImportableOldRevisionImporter(
true,
},
'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()
);
},
);
},
+ 'TempFSFileFactory' => function ( MediaWikiServices $services ) : TempFSFileFactory {
+ return new TempFSFileFactory( $services->getMainConfig()->get( 'TmpDirectory' ) );
+ },
+
'TitleFormatter' => function ( MediaWikiServices $services ) : TitleFormatter {
return $services->getService( '_MediaWikiTitleCodec' );
},