Legoktm has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/146025

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, 50 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/FlaggedRevs 
refs/changes/25/146025/1

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..f6e9f37 100644
--- a/backend/FRUserCounters.php
+++ b/backend/FRUserCounters.php
@@ -95,6 +95,29 @@
                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_merge(
+                       $newParams['uniqueContentPages'],
+                       $oldParams['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..824aa7c 100644
--- a/backend/FlaggedRevs.hooks.php
+++ b/backend/FlaggedRevs.hooks.php
@@ -1037,4 +1037,26 @@
                }
                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 ) {
+               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: newchange
Gerrit-Change-Id: I9cab46843db908204742d96c2e73bd7eb767703a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/FlaggedRevs
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>

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

Reply via email to