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;
use MediaWiki\Storage\BlobStoreFactory;
use MediaWiki\Storage\NameTableStoreFactory;
use MediaWiki\Storage\SqlBlobStore;
+use MediaWiki\Storage\PageEditStash;
return [
'ActorMigration' => function ( MediaWikiServices $services ) : ActorMigration {
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(),
},
'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;
},
);
},
+ '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();
},
'PreferencesFactory' => function ( MediaWikiServices $services ) : PreferencesFactory {
$factory = new DefaultPreferencesFactory(
- $services->getMainConfig(),
+ new ServiceOptions(
+ DefaultPreferencesFactory::$constructorOptions, $services->getMainConfig() ),
$services->getContentLanguage(),
AuthManager::singleton(),
$services->getLinkRendererFactory()->create()
},
'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();
$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;
},
},
'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->getContentLanguage(),
$services->getGenderCache(),
$services->getMainConfig()->get( 'LocalInterwikis' ),
- $services->getInterwikiLookup()
+ $services->getInterwikiLookup(),
+ $services->getNamespaceInfo()
);
},