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\Interwiki\ClassicInterwikiLookup;
use MediaWiki\Interwiki\InterwikiLookup;
use MediaWiki\Linker\LinkRenderer;
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()
},
'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 {
$lbConf = MWLBFactory::applyDefaultConfig(
$mainConfig->get( 'LBFactoryConf' ),
- $mainConfig,
+ new ServiceOptions( MWLBFactory::$applyDefaultConfigOptions, $mainConfig ),
$services->getConfiguredReadOnlyMode(),
$services->getLocalServerObjectCache(),
$services->getMainObjectStash(),
$class = MWLBFactory::getLBFactoryClass( $lbConf );
$instance = new $class( $lbConf );
- MWLBFactory::setSchemaAliases( $instance, $mainConfig );
+ MWLBFactory::setSchemaAliases( $instance, $mainConfig->get( 'DBtype' ) );
return $instance;
},
},
'GenderCache' => function ( MediaWikiServices $services ) : GenderCache {
- return new GenderCache();
+ return new GenderCache( $services->getNamespaceInfo() );
},
'HttpRequestFactory' =>
'LinkCache' => function ( MediaWikiServices $services ) : LinkCache {
return new LinkCache(
$services->getTitleFormatter(),
- $services->getMainWANObjectCache()
+ $services->getMainWANObjectCache(),
+ $services->getNamespaceInfo()
);
},
'LinkRendererFactory' => function ( MediaWikiServices $services ) : LinkRendererFactory {
return new LinkRendererFactory(
$services->getTitleFormatter(),
- $services->getLinkCache()
+ $services->getLinkCache(),
+ $services->getNamespaceInfo()
);
},
},
'NamespaceInfo' => function ( MediaWikiServices $services ) : NamespaceInfo {
- return new NamespaceInfo( $services->getMainConfig() );
+ return new NamespaceInfo( new ServiceOptions( NamespaceInfo::$constructorOptions,
+ $services->getMainConfig() ) );
},
'NameTableStoreFactory' => function ( MediaWikiServices $services ) : NameTableStoreFactory {
'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' ) );
);
},
+ '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();
},
'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() );
},
},
'SpecialPageFactory' => function ( MediaWikiServices $services ) : SpecialPageFactory {
- $config = $services->getMainConfig();
- $options = [];
- foreach ( SpecialPageFactory::$constructorOptions as $key ) {
- $options[$key] = $config->get( $key );
- }
return new SpecialPageFactory(
- $options,
+ new ServiceOptions(
+ SpecialPageFactory::$constructorOptions, $services->getMainConfig() ),
$services->getContentLanguage()
);
},
$services->getMainObjectStash(),
new HashBagOStuff( [ 'maxKeys' => 100 ] ),
$services->getReadOnlyMode(),
- $services->getMainConfig()->get( 'UpdateRowsPerQuery' )
+ $services->getMainConfig()->get( 'UpdateRowsPerQuery' ),
+ $services->getNamespaceInfo(),
+ $services->getRevisionLookup()
);
$store->setStatsdDataFactory( $services->getStatsdDataFactory() );