Make SpecialPageFactory a service
[lhc/web/wiklou.git] / includes / MediaWikiServices.php
index f891042..f9d9aab 100644 (file)
@@ -15,6 +15,7 @@ use IBufferingStatsdDataFactory;
 use MediaWiki\Http\HttpRequestFactory;
 use MediaWiki\Preferences\PreferencesFactory;
 use MediaWiki\Shell\CommandFactory;
+use MediaWiki\Special\SpecialPageFactory;
 use MediaWiki\Storage\BlobStore;
 use MediaWiki\Storage\BlobStoreFactory;
 use MediaWiki\Storage\NameTableStore;
@@ -22,6 +23,7 @@ use MediaWiki\Storage\RevisionFactory;
 use MediaWiki\Storage\RevisionLookup;
 use MediaWiki\Storage\RevisionStore;
 use OldRevisionImporter;
+use MediaWiki\Storage\RevisionStoreFactory;
 use UploadRevisionImporter;
 use Wikimedia\Rdbms\LBFactory;
 use LinkCache;
@@ -38,6 +40,8 @@ use MimeAnalyzer;
 use ObjectCache;
 use Parser;
 use ParserCache;
+use ParserFactory;
+use PasswordFactory;
 use ProxyLookup;
 use SearchEngine;
 use SearchEngineConfig;
@@ -400,6 +404,30 @@ class MediaWikiServices extends ServiceContainer {
 
        // CONVENIENCE GETTERS ////////////////////////////////////////////////////
 
+       /**
+        * @since 1.31
+        * @return ActorMigration
+        */
+       public function getActorMigration() {
+               return $this->getService( 'ActorMigration' );
+       }
+
+       /**
+        * @since 1.31
+        * @return BlobStore
+        */
+       public function getBlobStore() {
+               return $this->getService( '_SqlBlobStore' );
+       }
+
+       /**
+        * @since 1.31
+        * @return BlobStoreFactory
+        */
+       public function getBlobStoreFactory() {
+               return $this->getService( 'BlobStoreFactory' );
+       }
+
        /**
         * Returns the Config object containing the bootstrap configuration.
         * Bootstrap configuration would typically include database credentials
@@ -418,283 +446,282 @@ class MediaWikiServices extends ServiceContainer {
        }
 
        /**
-        * @since 1.27
-        * @return ConfigFactory
+        * @since 1.32
+        * @return NameTableStore
         */
-       public function getConfigFactory() {
-               return $this->getService( 'ConfigFactory' );
+       public function getChangeTagDefStore() {
+               return $this->getService( 'ChangeTagDefStore' );
        }
 
        /**
-        * Returns the Config object that provides configuration for MediaWiki core.
-        * This may or may not be the same object that is returned by getBootstrapConfig().
-        *
-        * @since 1.27
-        * @return Config
+        * @since 1.31
+        * @return CommentStore
         */
-       public function getMainConfig() {
-               return $this->getService( 'MainConfig' );
+       public function getCommentStore() {
+               return $this->getService( 'CommentStore' );
        }
 
        /**
         * @since 1.27
-        * @return SiteLookup
+        * @return ConfigFactory
         */
-       public function getSiteLookup() {
-               return $this->getService( 'SiteLookup' );
+       public function getConfigFactory() {
+               return $this->getService( 'ConfigFactory' );
        }
 
        /**
-        * @since 1.27
-        * @return SiteStore
+        * @since 1.32
+        * @return ConfigRepository
         */
-       public function getSiteStore() {
-               return $this->getService( 'SiteStore' );
+       public function getConfigRepository() {
+               return $this->getService( 'ConfigRepository' );
        }
 
        /**
-        * @since 1.28
-        * @return InterwikiLookup
+        * @since 1.29
+        * @return \ConfiguredReadOnlyMode
         */
-       public function getInterwikiLookup() {
-               return $this->getService( 'InterwikiLookup' );
+       public function getConfiguredReadOnlyMode() {
+               return $this->getService( 'ConfiguredReadOnlyMode' );
        }
 
        /**
-        * @since 1.27
-        * @return IBufferingStatsdDataFactory
+        * @since 1.32
+        * @return \Language
         */
-       public function getStatsdDataFactory() {
-               return $this->getService( 'StatsdDataFactory' );
+       public function getContentLanguage() {
+               return $this->getService( 'ContentLanguage' );
        }
 
        /**
-        * @since 1.32
-        * @return IBufferingStatsdDataFactory
+        * @since 1.31
+        * @return NameTableStore
         */
-       public function getPerDbNameStatsdDataFactory() {
-               return $this->getService( 'PerDbNameStatsdDataFactory' );
+       public function getContentModelStore() {
+               return $this->getService( 'ContentModelStore' );
        }
 
        /**
-        * @since 1.27
-        * @return EventRelayerGroup
+        * @since 1.28
+        * @return CryptHKDF
         */
-       public function getEventRelayerGroup() {
-               return $this->getService( 'EventRelayerGroup' );
+       public function getCryptHKDF() {
+               return $this->getService( 'CryptHKDF' );
        }
 
        /**
-        * @since 1.27
-        * @return SearchEngine
+        * @since 1.28
+        * @deprecated since 1.32, use random_bytes()/random_int()
+        * @return CryptRand
         */
-       public function newSearchEngine() {
-               // New engine object every time, since they keep state
-               return $this->getService( 'SearchEngineFactory' )->create();
+       public function getCryptRand() {
+               return $this->getService( 'CryptRand' );
        }
 
        /**
-        * @since 1.27
-        * @return SearchEngineFactory
+        * @since 1.28
+        * @return LoadBalancer The main DB load balancer for the local wiki.
         */
-       public function getSearchEngineFactory() {
-               return $this->getService( 'SearchEngineFactory' );
+       public function getDBLoadBalancer() {
+               return $this->getService( 'DBLoadBalancer' );
        }
 
        /**
-        * @since 1.27
-        * @return SearchEngineConfig
+        * @since 1.28
+        * @return LBFactory
         */
-       public function getSearchEngineConfig() {
-               return $this->getService( 'SearchEngineConfig' );
+       public function getDBLoadBalancerFactory() {
+               return $this->getService( 'DBLoadBalancerFactory' );
        }
 
        /**
         * @since 1.27
-        * @return SkinFactory
+        * @return EventRelayerGroup
         */
-       public function getSkinFactory() {
-               return $this->getService( 'SkinFactory' );
+       public function getEventRelayerGroup() {
+               return $this->getService( 'EventRelayerGroup' );
        }
 
        /**
-        * @since 1.28
-        * @return LBFactory
+        * @since 1.31
+        * @return \ExternalStoreFactory
         */
-       public function getDBLoadBalancerFactory() {
-               return $this->getService( 'DBLoadBalancerFactory' );
+       public function getExternalStoreFactory() {
+               return $this->getService( 'ExternalStoreFactory' );
        }
 
        /**
         * @since 1.28
-        * @return LoadBalancer The main DB load balancer for the local wiki.
+        * @return GenderCache
         */
-       public function getDBLoadBalancer() {
-               return $this->getService( 'DBLoadBalancer' );
+       public function getGenderCache() {
+               return $this->getService( 'GenderCache' );
        }
 
        /**
-        * @since 1.28
-        * @return WatchedItemStoreInterface
+        * @since 1.31
+        * @return HttpRequestFactory
         */
-       public function getWatchedItemStore() {
-               return $this->getService( 'WatchedItemStore' );
+       public function getHttpRequestFactory() {
+               return $this->getService( 'HttpRequestFactory' );
        }
 
        /**
         * @since 1.28
-        * @return WatchedItemQueryService
+        * @return InterwikiLookup
         */
-       public function getWatchedItemQueryService() {
-               return $this->getService( 'WatchedItemQueryService' );
+       public function getInterwikiLookup() {
+               return $this->getService( 'InterwikiLookup' );
        }
 
        /**
         * @since 1.28
-        * @deprecated since 1.32, use random_bytes()/random_int()
-        * @return CryptRand
+        * @return LinkCache
         */
-       public function getCryptRand() {
-               return $this->getService( 'CryptRand' );
+       public function getLinkCache() {
+               return $this->getService( 'LinkCache' );
        }
 
        /**
+        * LinkRenderer instance that can be used
+        * if no custom options are needed
+        *
         * @since 1.28
-        * @return CryptHKDF
+        * @return LinkRenderer
         */
-       public function getCryptHKDF() {
-               return $this->getService( 'CryptHKDF' );
+       public function getLinkRenderer() {
+               return $this->getService( 'LinkRenderer' );
        }
 
        /**
         * @since 1.28
-        * @return MediaHandlerFactory
+        * @return LinkRendererFactory
         */
-       public function getMediaHandlerFactory() {
-               return $this->getService( 'MediaHandlerFactory' );
+       public function getLinkRendererFactory() {
+               return $this->getService( 'LinkRendererFactory' );
        }
 
        /**
         * @since 1.28
-        * @return MimeAnalyzer
+        * @return \BagOStuff
         */
-       public function getMimeAnalyzer() {
-               return $this->getService( 'MimeAnalyzer' );
+       public function getLocalServerObjectCache() {
+               return $this->getService( 'LocalServerObjectCache' );
        }
 
        /**
-        * @since 1.28
-        * @return ProxyLookup
+        * @since 1.32
+        * @return MagicWordFactory
         */
-       public function getProxyLookup() {
-               return $this->getService( 'ProxyLookup' );
+       public function getMagicWordFactory() {
+               return $this->getService( 'MagicWordFactory' );
        }
 
        /**
-        * @since 1.29
-        * @return Parser
+        * Returns the Config object that provides configuration for MediaWiki core.
+        * This may or may not be the same object that is returned by getBootstrapConfig().
+        *
+        * @since 1.27
+        * @return Config
         */
-       public function getParser() {
-               return $this->getService( 'Parser' );
+       public function getMainConfig() {
+               return $this->getService( 'MainConfig' );
        }
 
        /**
-        * @since 1.30
-        * @return ParserCache
+        * @since 1.28
+        * @return \BagOStuff
         */
-       public function getParserCache() {
-               return $this->getService( 'ParserCache' );
+       public function getMainObjectStash() {
+               return $this->getService( 'MainObjectStash' );
        }
 
        /**
         * @since 1.28
-        * @return GenderCache
+        * @return \WANObjectCache
         */
-       public function getGenderCache() {
-               return $this->getService( 'GenderCache' );
+       public function getMainWANObjectCache() {
+               return $this->getService( 'MainWANObjectCache' );
        }
 
        /**
         * @since 1.28
-        * @return LinkCache
+        * @return MediaHandlerFactory
         */
-       public function getLinkCache() {
-               return $this->getService( 'LinkCache' );
+       public function getMediaHandlerFactory() {
+               return $this->getService( 'MediaHandlerFactory' );
        }
 
        /**
         * @since 1.28
-        * @return LinkRendererFactory
+        * @return MimeAnalyzer
         */
-       public function getLinkRendererFactory() {
-               return $this->getService( 'LinkRendererFactory' );
+       public function getMimeAnalyzer() {
+               return $this->getService( 'MimeAnalyzer' );
        }
 
        /**
-        * LinkRenderer instance that can be used
-        * if no custom options are needed
-        *
-        * @since 1.28
-        * @return LinkRenderer
+        * @since 1.32
+        * @return OldRevisionImporter
         */
-       public function getLinkRenderer() {
-               return $this->getService( 'LinkRenderer' );
+       public function getOldRevisionImporter() {
+               return $this->getService( 'OldRevisionImporter' );
        }
 
        /**
-        * @since 1.28
-        * @return TitleFormatter
+        * @since 1.29
+        * @return Parser
         */
-       public function getTitleFormatter() {
-               return $this->getService( 'TitleFormatter' );
+       public function getParser() {
+               return $this->getService( 'Parser' );
        }
 
        /**
-        * @since 1.28
-        * @return TitleParser
+        * @since 1.30
+        * @return ParserCache
         */
-       public function getTitleParser() {
-               return $this->getService( 'TitleParser' );
+       public function getParserCache() {
+               return $this->getService( 'ParserCache' );
        }
 
        /**
-        * @since 1.28
-        * @return \BagOStuff
+        * @since 1.32
+        * @return ParserFactory
         */
-       public function getMainObjectStash() {
-               return $this->getService( 'MainObjectStash' );
+       public function getParserFactory() {
+               return $this->getService( 'ParserFactory' );
        }
 
        /**
-        * @since 1.28
-        * @return \WANObjectCache
+        * @since 1.32
+        * @return PasswordFactory
         */
-       public function getMainWANObjectCache() {
-               return $this->getService( 'MainWANObjectCache' );
+       public function getPasswordFactory() {
+               return $this->getService( 'PasswordFactory' );
        }
 
        /**
-        * @since 1.28
-        * @return \BagOStuff
+        * @since 1.32
+        * @return IBufferingStatsdDataFactory
         */
-       public function getLocalServerObjectCache() {
-               return $this->getService( 'LocalServerObjectCache' );
+       public function getPerDbNameStatsdDataFactory() {
+               return $this->getService( 'PerDbNameStatsdDataFactory' );
        }
 
        /**
-        * @since 1.28
-        * @return VirtualRESTServiceClient
+        * @since 1.31
+        * @return PreferencesFactory
         */
-       public function getVirtualRESTServiceClient() {
-               return $this->getService( 'VirtualRESTServiceClient' );
+       public function getPreferencesFactory() {
+               return $this->getService( 'PreferencesFactory' );
        }
 
        /**
-        * @since 1.29
-        * @return \ConfiguredReadOnlyMode
+        * @since 1.28
+        * @return ProxyLookup
         */
-       public function getConfiguredReadOnlyMode() {
-               return $this->getService( 'ConfiguredReadOnlyMode' );
+       public function getProxyLookup() {
+               return $this->getService( 'ProxyLookup' );
        }
 
        /**
@@ -707,90 +734,91 @@ class MediaWikiServices extends ServiceContainer {
 
        /**
         * @since 1.31
-        * @return \UploadRevisionImporter
+        * @return RevisionFactory
         */
-       public function getWikiRevisionUploadImporter() {
-               return $this->getService( 'UploadRevisionImporter' );
+       public function getRevisionFactory() {
+               return $this->getService( 'RevisionFactory' );
        }
 
        /**
         * @since 1.31
-        * @return \OldRevisionImporter
+        * @return RevisionLookup
         */
-       public function getWikiRevisionOldRevisionImporter() {
-               return $this->getService( 'OldRevisionImporter' );
+       public function getRevisionLookup() {
+               return $this->getService( 'RevisionLookup' );
        }
 
        /**
         * @since 1.31
-        * @return \OldRevisionImporter
+        * @return RevisionStore
         */
-       public function getWikiRevisionOldRevisionImporterNoUpdates() {
-               return $this->getService( 'WikiRevisionOldRevisionImporterNoUpdates' );
+       public function getRevisionStore() {
+               return $this->getService( 'RevisionStore' );
        }
 
        /**
-        * @since 1.30
-        * @return CommandFactory
+        * @since 1.32
+        * @return RevisionStoreFactory
         */
-       public function getShellCommandFactory() {
-               return $this->getService( 'ShellCommandFactory' );
+       public function getRevisionStoreFactory() {
+               return $this->getService( 'RevisionStoreFactory' );
        }
 
        /**
-        * @since 1.31
-        * @return \ExternalStoreFactory
+        * @since 1.27
+        * @return SearchEngine
         */
-       public function getExternalStoreFactory() {
-               return $this->getService( 'ExternalStoreFactory' );
+       public function newSearchEngine() {
+               // New engine object every time, since they keep state
+               return $this->getService( 'SearchEngineFactory' )->create();
        }
 
        /**
-        * @since 1.31
-        * @return BlobStoreFactory
+        * @since 1.27
+        * @return SearchEngineConfig
         */
-       public function getBlobStoreFactory() {
-               return $this->getService( 'BlobStoreFactory' );
+       public function getSearchEngineConfig() {
+               return $this->getService( 'SearchEngineConfig' );
        }
 
        /**
-        * @since 1.31
-        * @return BlobStore
+        * @since 1.27
+        * @return SearchEngineFactory
         */
-       public function getBlobStore() {
-               return $this->getService( '_SqlBlobStore' );
+       public function getSearchEngineFactory() {
+               return $this->getService( 'SearchEngineFactory' );
        }
 
        /**
-        * @since 1.31
-        * @return RevisionStore
+        * @since 1.30
+        * @return CommandFactory
         */
-       public function getRevisionStore() {
-               return $this->getService( 'RevisionStore' );
+       public function getShellCommandFactory() {
+               return $this->getService( 'ShellCommandFactory' );
        }
 
        /**
-        * @since 1.31
-        * @return RevisionLookup
+        * @since 1.27
+        * @return SiteLookup
         */
-       public function getRevisionLookup() {
-               return $this->getService( 'RevisionLookup' );
+       public function getSiteLookup() {
+               return $this->getService( 'SiteLookup' );
        }
 
        /**
-        * @since 1.31
-        * @return RevisionFactory
+        * @since 1.27
+        * @return SiteStore
         */
-       public function getRevisionFactory() {
-               return $this->getService( 'RevisionFactory' );
+       public function getSiteStore() {
+               return $this->getService( 'SiteStore' );
        }
 
        /**
-        * @since 1.31
-        * @return NameTableStore
+        * @since 1.27
+        * @return SkinFactory
         */
-       public function getContentModelStore() {
-               return $this->getService( 'ContentModelStore' );
+       public function getSkinFactory() {
+               return $this->getService( 'SkinFactory' );
        }
 
        /**
@@ -803,42 +831,34 @@ class MediaWikiServices extends ServiceContainer {
 
        /**
         * @since 1.32
-        * @return NameTableStore
-        */
-       public function getChangeTagDefStore() {
-               return $this->getService( 'ChangeTagDefStore' );
-       }
-
-       /**
-        * @since 1.31
-        * @return PreferencesFactory
+        * @return SpecialPageFactory
         */
-       public function getPreferencesFactory() {
-               return $this->getService( 'PreferencesFactory' );
+       public function getSpecialPageFactory() : SpecialPageFactory {
+               return $this->getService( 'SpecialPageFactory' );
        }
 
        /**
-        * @since 1.31
-        * @return HttpRequestFactory
+        * @since 1.27
+        * @return IBufferingStatsdDataFactory
         */
-       public function getHttpRequestFactory() {
-               return $this->getService( 'HttpRequestFactory' );
+       public function getStatsdDataFactory() {
+               return $this->getService( 'StatsdDataFactory' );
        }
 
        /**
-        * @since 1.31
-        * @return CommentStore
+        * @since 1.28
+        * @return TitleFormatter
         */
-       public function getCommentStore() {
-               return $this->getService( 'CommentStore' );
+       public function getTitleFormatter() {
+               return $this->getService( 'TitleFormatter' );
        }
 
        /**
-        * @since 1.31
-        * @return ActorMigration
+        * @since 1.28
+        * @return TitleParser
         */
-       public function getActorMigration() {
-               return $this->getService( 'ActorMigration' );
+       public function getTitleParser() {
+               return $this->getService( 'TitleParser' );
        }
 
        /**
@@ -850,33 +870,51 @@ class MediaWikiServices extends ServiceContainer {
        }
 
        /**
-        * @since 1.32
-        * @return OldRevisionImporter
+        * @since 1.28
+        * @return VirtualRESTServiceClient
         */
-       public function getOldRevisionImporter() {
-               return $this->getService( 'OldRevisionImporter' );
+       public function getVirtualRESTServiceClient() {
+               return $this->getService( 'VirtualRESTServiceClient' );
        }
 
        /**
-        * @since 1.32
-        * @return ConfigRepository
+        * @since 1.28
+        * @return WatchedItemQueryService
         */
-       public function getConfigRepository() {
-               return $this->getService( 'ConfigRepository' );
+       public function getWatchedItemQueryService() {
+               return $this->getService( 'WatchedItemQueryService' );
        }
 
        /**
-        * @since 1.32
-        * @return MagicWordFactory
+        * @since 1.28
+        * @return WatchedItemStoreInterface
         */
-       public function getMagicWordFactory() {
-               return $this->getService( 'MagicWordFactory' );
+       public function getWatchedItemStore() {
+               return $this->getService( 'WatchedItemStore' );
+       }
+
+       /**
+        * @since 1.31
+        * @return \OldRevisionImporter
+        */
+       public function getWikiRevisionOldRevisionImporter() {
+               return $this->getService( 'OldRevisionImporter' );
        }
 
-       ///////////////////////////////////////////////////////////////////////////
-       // NOTE: When adding a service getter here, don't forget to add a test
-       // case for it in MediaWikiServicesTest::provideGetters() and in
-       // MediaWikiServicesTest::provideGetService()!
-       ///////////////////////////////////////////////////////////////////////////
+       /**
+        * @since 1.31
+        * @return \OldRevisionImporter
+        */
+       public function getWikiRevisionOldRevisionImporterNoUpdates() {
+               return $this->getService( 'WikiRevisionOldRevisionImporterNoUpdates' );
+       }
+
+       /**
+        * @since 1.31
+        * @return \UploadRevisionImporter
+        */
+       public function getWikiRevisionUploadImporter() {
+               return $this->getService( 'UploadRevisionImporter' );
+       }
 
 }