jenkins-bot has submitted this change and it was merged.

Change subject: Add UserMerge support
......................................................................


Add UserMerge support

Bug: 67769
Change-Id: I9cab46843db908204742d96c2e73bd7eb767703a
---
M FlaggedRevs.setup.php
M backend/FRUserCounters.php
M backend/FlaggedRevs.hooks.php
3 files changed, 54 insertions(+), 0 deletions(-)

Approvals:
  Jackmcbarn: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/FlaggedRevs.setup.php b/FlaggedRevs.setup.php
index 1b87cdf..f956892 100644
--- a/FlaggedRevs.setup.php
+++ b/FlaggedRevs.setup.php
@@ -235,6 +235,11 @@
                # GNSM category hooks
                $wgHooks['GoogleNewsSitemap::Query'][] = 
'FlaggedRevsHooks::gnsmQueryModifier';
 
+               # UserMerge hooks
+               $wgHooks['UserMergeAccountFields'][] = 
'FlaggedRevsHooks::onUserMergeAccountFields';
+               $wgHooks['MergeAccountFromTo'][] = 
'FlaggedRevsHooks::onMergeAccountFromTo';
+               $wgHooks['DeleteAccount'][] = 
'FlaggedRevsHooks::onDeleteAccount';
+
                # Duplicate flagged* tables in parserTests.php
                $wgHooks['ParserTestTables'][] = 
'FlaggedRevsTestHooks::onParserTestTables';
                # Integration tests
diff --git a/backend/FRUserCounters.php b/backend/FRUserCounters.php
index 37a63d1..44d2aac 100644
--- a/backend/FRUserCounters.php
+++ b/backend/FRUserCounters.php
@@ -95,6 +95,30 @@
                return ( $dbw->affectedRows() > 0 );
        }
 
+       public static function deleteUserParams( User $user ) {
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->delete(
+                       'flaggedrevs_promote',
+                       array( 'frp_user_id' => $user->getId() ),
+                       __METHOD__
+               );
+       }
+
+       public static function mergeUserParams( User $oldUser, User $newUser ) {
+               $oldParams = self::getUserParams( $oldUser->getId(), FR_MASTER 
);
+               $newParams = self::getUserParams( $newUser->getId(), FR_MASTER 
);
+               $newParams['uniqueContentPages'] = array_unique( array_merge(
+                       $newParams['uniqueContentPages'],
+                       $oldParams['uniqueContentPages']
+               ) );
+               sort( $newParams['uniqueContentPages'] );
+               $newParams['totalContentEdits'] += 
$oldParams['totalContentEdits'];
+               $newParams['editComments'] += $oldParams['editComments'];
+               $newParams['revertedEdits'] += $oldParams['revertedEdits'];
+
+               self::saveUserParams( $newUser->getId(), $newParams );
+       }
+
        /**
         * Increments a count for a user
         * @param int $uid User id
diff --git a/backend/FlaggedRevs.hooks.php b/backend/FlaggedRevs.hooks.php
index 07aa1e8..6033e26 100644
--- a/backend/FlaggedRevs.hooks.php
+++ b/backend/FlaggedRevs.hooks.php
@@ -1037,4 +1037,29 @@
                }
                return true;
        }
+
+       /**
+        * @param array $updateFields
+        * @return bool
+        */
+       public static function onUserMergeAccountFields( array &$updateFields ) 
{
+               $updateFields[] = array( 'flaggedrevs', 'fr_user' );
+
+               return true;
+       }
+
+       public static function onMergeAccountFromTo( User &$oldUser, User 
&$newUser ) {
+               // Don't merge into anonymous users...
+               if ( $newUser->getId() !== 0 ) {
+                       FRUserCounters::mergeUserParams( $oldUser, $newUser );
+               }
+
+               return true;
+       }
+
+       public static function onDeleteAccount( User $oldUser ) {
+               FRUserCounters::deleteUserParams( $oldUser );
+
+               return true;
+       }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/146025
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9cab46843db908204742d96c2e73bd7eb767703a
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/FlaggedRevs
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Jackmcbarn <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Reedy <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to