Turning change_tag_def store to a service
authorAmir Sarabadani <ladsgroup@gmail.com>
Thu, 21 Jun 2018 06:59:02 +0000 (08:59 +0200)
committerAmir Sarabadani <ladsgroup@gmail.com>
Thu, 21 Jun 2018 07:40:56 +0000 (09:40 +0200)
This will be useful when reading the table.

Bug: T194162
Change-Id: I8c0a0075910a79465a648a052b4e7fbc888b10e7

includes/MediaWikiServices.php
includes/ServiceWiring.php
includes/changetags/ChangeTags.php
tests/phpunit/includes/MediaWikiServicesTest.php
tests/phpunit/includes/changetags/ChangeTagsTest.php

index dbb18a7..ac15574 100644 (file)
@@ -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
index 379424c..425b789 100644 (file)
@@ -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();
index bd9cedc..97f124b 100644 (file)
@@ -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 );
index 03588ae..93c7ed3 100644 (file)
@@ -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 ],
                ];
        }
 
index 216228a..d7c8ec4 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @covers ChangeTags
  * @group Database
@@ -505,6 +507,7 @@ class ChangeTagsTest extends MediaWikiTestCase {
                $dbw = wfGetDB( DB_MASTER );
                $dbw->delete( 'change_tag', '*' );
                $dbw->delete( 'change_tag_def', '*' );
+               MediaWikiServices::getInstance()->resetServiceForTesting( 'ChangeTagDefStore' );
 
                $rcId = 123;
                ChangeTags::updateTags( [ 'tag1', 'tag2' ], [], $rcId );