* MediaWiki code base.
*/
+use MediaWiki\Auth\AuthManager;
use MediaWiki\Interwiki\ClassicInterwikiLookup;
use MediaWiki\Linker\LinkRendererFactory;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use MediaWiki\Preferences\DefaultPreferencesFactory;
use MediaWiki\Shell\CommandFactory;
+use MediaWiki\Storage\BlobStoreFactory;
use MediaWiki\Storage\RevisionStore;
use MediaWiki\Storage\SqlBlobStore;
+use Wikimedia\ObjectFactory;
return [
'DBLoadBalancerFactory' => function ( MediaWikiServices $services ) {
$services->getReadOnlyMode()
);
$store->setStatsdDataFactory( $services->getStatsdDataFactory() );
+
+ if ( $services->getMainConfig()->get( 'ReadOnlyWatchedItemStore' ) ) {
+ $store = new NoWriteWatchedItemStore( $store );
+ }
+
return $store;
},
'WatchedItemQueryService' => function ( MediaWikiServices $services ) {
- return new WatchedItemQueryService( $services->getDBLoadBalancer() );
+ return new WatchedItemQueryService(
+ $services->getDBLoadBalancer(),
+ $services->getCommentStore()
+ );
},
'CryptRand' => function ( MediaWikiServices $services ) {
return $factory;
},
- 'RevisionStore' => function ( MediaWikiServices $services ) {
- /** @var SqlBlobStore $blobStore */
- $blobStore = $services->getService( '_SqlBlobStore' );
-
- $store = new RevisionStore(
- $services->getDBLoadBalancer(),
- $blobStore,
- $services->getMainWANObjectCache()
- );
-
- $config = $services->getMainConfig();
- $store->setContentHandlerUseDB( $config->get( 'ContentHandlerUseDB' ) );
-
- return $store;
- },
-
- 'BlobStore' => function ( MediaWikiServices $services ) {
- return $services->getService( '_SqlBlobStore' );
- },
-
- '_SqlBlobStore' => function ( MediaWikiServices $services ) {
- global $wgContLang; // TODO: manage $wgContLang as a service
-
- $store = new SqlBlobStore(
- $services->getDBLoadBalancer(),
- $services->getMainWANObjectCache()
- );
-
- $config = $services->getMainConfig();
- $store->setCompressRevisions( $config->get( 'CompressRevisions' ) );
- $store->setCacheExpiry( $config->get( 'RevisionCacheExpiry' ) );
- $store->setUseExternalStore( $config->get( 'DefaultExternalStore' ) !== false );
-
- if ( $config->get( 'LegacyEncoding' ) ) {
- $store->setLegacyEncoding( $config->get( 'LegacyEncoding' ), $wgContLang );
- }
-
- return $store;
- },
-
'ExternalStoreFactory' => function ( MediaWikiServices $services ) {
$config = $services->getMainConfig();
$services->getMainWANObjectCache()
);
+ $store->setLogger( LoggerFactory::getInstance( 'RevisionStore' ) );
+
$config = $services->getMainConfig();
$store->setContentHandlerUseDB( $config->get( 'ContentHandlerUseDB' ) );
return $store;
},
- 'BlobStore' => function ( MediaWikiServices $services ) {
- return $services->getService( '_SqlBlobStore' );
+ 'RevisionLookup' => function ( MediaWikiServices $services ) {
+ return $services->getRevisionStore();
},
- '_SqlBlobStore' => function ( MediaWikiServices $services ) {
- global $wgContLang; // TODO: manage $wgContLang as a service
+ 'RevisionFactory' => function ( MediaWikiServices $services ) {
+ return $services->getRevisionStore();
+ },
- $store = new SqlBlobStore(
+ 'BlobStoreFactory' => function ( MediaWikiServices $services ) {
+ global $wgContLang;
+ return new BlobStoreFactory(
$services->getDBLoadBalancer(),
- $services->getMainWANObjectCache()
+ $services->getMainWANObjectCache(),
+ $services->getMainConfig(),
+ $wgContLang
);
+ },
- $config = $services->getMainConfig();
- $store->setCompressBlobs( $config->get( 'CompressRevisions' ) );
- $store->setCacheExpiry( $config->get( 'RevisionCacheExpiry' ) );
- $store->setUseExternalStore( $config->get( 'DefaultExternalStore' ) !== false );
+ 'BlobStore' => function ( MediaWikiServices $services ) {
+ return $services->getService( '_SqlBlobStore' );
+ },
- if ( $config->get( 'LegacyEncoding' ) ) {
- $store->setLegacyEncoding( $config->get( 'LegacyEncoding' ), $wgContLang );
- }
+ '_SqlBlobStore' => function ( MediaWikiServices $services ) {
+ return $services->getBlobStoreFactory()->newSqlBlobStore();
+ },
- return $store;
+ 'PreferencesFactory' => function ( MediaWikiServices $services ) {
+ global $wgContLang;
+ $authManager = AuthManager::singleton();
+ $linkRenderer = $services->getLinkRendererFactory()->create();
+ $config = $services->getMainConfig();
+ return new DefaultPreferencesFactory( $config, $wgContLang, $authManager, $linkRenderer );
+ },
+
+ 'HttpRequestFactory' => function ( MediaWikiServices $services ) {
+ return new \MediaWiki\Http\HttpRequestFactory();
},
+ 'CommentStore' => function ( MediaWikiServices $services ) {
+ global $wgContLang;
+ return new CommentStore(
+ $wgContLang,
+ $services->getMainConfig()->get( 'CommentTableSchemaMigrationStage' )
+ );
+ }
+
///////////////////////////////////////////////////////////////////////////
// NOTE: When adding a service here, don't forget to add a getter function
// in the MediaWikiServices class. The convenience getter should just call