Merge "Corrected grammatical error."
[lhc/web/wiklou.git] / includes / ServiceWiring.php
index 40e9f87..a30534e 100644 (file)
 
 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;
@@ -79,11 +82,35 @@ return [
                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(),
@@ -107,7 +134,11 @@ return [
        },
 
        '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 {
@@ -150,7 +181,7 @@ return [
 
                $lbConf = MWLBFactory::applyDefaultConfig(
                        $mainConfig->get( 'LBFactoryConf' ),
-                       $mainConfig,
+                       new ServiceOptions( MWLBFactory::$applyDefaultConfigOptions, $mainConfig ),
                        $services->getConfiguredReadOnlyMode(),
                        $services->getLocalServerObjectCache(),
                        $services->getMainObjectStash(),
@@ -159,7 +190,7 @@ return [
                $class = MWLBFactory::getLBFactoryClass( $lbConf );
 
                $instance = new $class( $lbConf );
-               MWLBFactory::setSchemaAliases( $instance, $mainConfig );
+               MWLBFactory::setSchemaAliases( $instance, $mainConfig->get( 'DBtype' ) );
 
                return $instance;
        },
@@ -177,7 +208,7 @@ return [
        },
 
        'GenderCache' => function ( MediaWikiServices $services ) : GenderCache {
-               return new GenderCache();
+               return new GenderCache( $services->getNamespaceInfo() );
        },
 
        'HttpRequestFactory' =>
@@ -200,7 +231,8 @@ return [
        'LinkCache' => function ( MediaWikiServices $services ) : LinkCache {
                return new LinkCache(
                        $services->getTitleFormatter(),
-                       $services->getMainWANObjectCache()
+                       $services->getMainWANObjectCache(),
+                       $services->getNamespaceInfo()
                );
        },
 
@@ -217,7 +249,8 @@ return [
        'LinkRendererFactory' => function ( MediaWikiServices $services ) : LinkRendererFactory {
                return new LinkRendererFactory(
                        $services->getTitleFormatter(),
-                       $services->getLinkCache()
+                       $services->getLinkCache(),
+                       $services->getNamespaceInfo()
                );
        },
 
@@ -332,7 +365,8 @@ return [
        },
 
        'NamespaceInfo' => function ( MediaWikiServices $services ) : NamespaceInfo {
-               return new NamespaceInfo( $services->getMainConfig() );
+               return new NamespaceInfo( new ServiceOptions( NamespaceInfo::$constructorOptions,
+                       $services->getMainConfig() ) );
        },
 
        'NameTableStoreFactory' => function ( MediaWikiServices $services ) : NameTableStoreFactory {
@@ -425,10 +459,12 @@ return [
 
        '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' ) );
 
@@ -450,7 +486,18 @@ return [
                );
        },
 
+       '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();
 
@@ -514,6 +561,8 @@ return [
        },
 
        '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() );
        },
@@ -598,13 +647,9 @@ return [
        },
 
        '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()
                );
        },
@@ -664,7 +709,9 @@ return [
                        $services->getMainObjectStash(),
                        new HashBagOStuff( [ 'maxKeys' => 100 ] ),
                        $services->getReadOnlyMode(),
-                       $services->getMainConfig()->get( 'UpdateRowsPerQuery' )
+                       $services->getMainConfig()->get( 'UpdateRowsPerQuery' ),
+                       $services->getNamespaceInfo(),
+                       $services->getRevisionLookup()
                );
                $store->setStatsdDataFactory( $services->getStatsdDataFactory() );