From bd8cd912a7ff9422a437468a4b8fec4cf7d5234f Mon Sep 17 00:00:00 2001 From: Amir Sarabadani Date: Thu, 21 Jun 2018 08:59:02 +0200 Subject: [PATCH] Turning change_tag_def store to a service This will be useful when reading the table. Bug: T194162 Change-Id: I8c0a0075910a79465a648a052b4e7fbc888b10e7 --- includes/MediaWikiServices.php | 8 ++++++++ includes/ServiceWiring.php | 18 ++++++++++++++++++ includes/changetags/ChangeTags.php | 18 +----------------- .../phpunit/includes/MediaWikiServicesTest.php | 2 ++ .../includes/changetags/ChangeTagsTest.php | 3 +++ 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/includes/MediaWikiServices.php b/includes/MediaWikiServices.php index dbb18a77fb..ac155745ae 100644 --- a/includes/MediaWikiServices.php +++ b/includes/MediaWikiServices.php @@ -789,6 +789,14 @@ class MediaWikiServices extends ServiceContainer { return $this->getService( 'SlotRoleStore' ); } + /** + * @since 1.32 + * @return NameTableStore + */ + public function getChangeTagDefStore() { + return $this->getService( 'ChangeTagDefStore' ); + } + /** * @since 1.31 * @return PreferencesFactory diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 379424cf14..425b789ae5 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -540,6 +540,24 @@ return [ ); }, + 'ChangeTagDefStore' => function ( MediaWikiServices $services ) { + return new NameTableStore( + $services->getDBLoadBalancer(), + $services->getMainWANObjectCache(), + LoggerFactory::getInstance( 'NameTableSqlStore' ), + 'change_tag_def', + 'ctd_id', + 'ctd_name', + null, + false, + function ( $insertFields ) { + $insertFields['ctd_user_defined'] = 0; + $insertFields['ctd_count'] = 0; + return $insertFields; + } + ); + }, + 'PreferencesFactory' => function ( MediaWikiServices $services ) { global $wgContLang; $authManager = AuthManager::singleton(); diff --git a/includes/changetags/ChangeTags.php b/includes/changetags/ChangeTags.php index bd9cedc758..97f124bca9 100644 --- a/includes/changetags/ChangeTags.php +++ b/includes/changetags/ChangeTags.php @@ -21,9 +21,7 @@ * @ingroup Change tagging */ -use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; -use MediaWiki\Storage\NameTableStore; use Wikimedia\Rdbms\Database; class ChangeTags { @@ -348,21 +346,7 @@ class ChangeTags { if ( count( $tagsToAdd ) ) { $changeTagMapping = []; if ( $wgChangeTagsSchemaMigrationStage > MIGRATION_OLD ) { - $changeTagDefStore = new NameTableStore( - MediaWikiServices::getInstance()->getDBLoadBalancer(), - MediaWikiServices::getInstance()->getMainWANObjectCache(), - LoggerFactory::getInstance( 'NameTableSqlStore' ), - 'change_tag_def', - 'ctd_id', - 'ctd_name', - null, - false, - function ( $insertFields ) { - $insertFields['ctd_user_defined'] = 0; - $insertFields['ctd_count'] = 0; - return $insertFields; - } - ); + $changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore(); foreach ( $tagsToAdd as $tag ) { $changeTagMapping[$tag] = $changeTagDefStore->acquireId( $tag ); diff --git a/tests/phpunit/includes/MediaWikiServicesTest.php b/tests/phpunit/includes/MediaWikiServicesTest.php index 03588aeca7..93c7ed3f8d 100644 --- a/tests/phpunit/includes/MediaWikiServicesTest.php +++ b/tests/phpunit/includes/MediaWikiServicesTest.php @@ -11,6 +11,7 @@ use MediaWiki\Services\ServiceDisabledException; use MediaWiki\Shell\CommandFactory; use MediaWiki\Storage\BlobStore; use MediaWiki\Storage\BlobStoreFactory; +use MediaWiki\Storage\NameTableStore; use MediaWiki\Storage\RevisionLookup; use MediaWiki\Storage\RevisionStore; use MediaWiki\Storage\SqlBlobStore; @@ -348,6 +349,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase { 'RevisionLookup' => [ 'RevisionLookup', RevisionLookup::class ], 'HttpRequestFactory' => [ 'HttpRequestFactory', HttpRequestFactory::class ], 'CommentStore' => [ 'CommentStore', CommentStore::class ], + 'ChangeTagDefStore' => [ 'ChangeTagDefStore', NameTableStore::class ], ]; } diff --git a/tests/phpunit/includes/changetags/ChangeTagsTest.php b/tests/phpunit/includes/changetags/ChangeTagsTest.php index 216228ad67..d7c8ec4520 100644 --- a/tests/phpunit/includes/changetags/ChangeTagsTest.php +++ b/tests/phpunit/includes/changetags/ChangeTagsTest.php @@ -1,5 +1,7 @@ delete( 'change_tag', '*' ); $dbw->delete( 'change_tag_def', '*' ); + MediaWikiServices::getInstance()->resetServiceForTesting( 'ChangeTagDefStore' ); $rcId = 123; ChangeTags::updateTags( [ 'tag1', 'tag2' ], [], $rcId ); -- 2.20.1