44 Assert::parameterType( __CLASS__, $update,
'$update' );
45 '@phan-var UserEditCountUpdate $update';
47 foreach ( $update->infoByUser as $userId => $info ) {
48 if ( !isset( $this->infoByUser[$userId] ) ) {
49 $this->infoByUser[$userId] = $info;
51 $this->infoByUser[$userId]->merge( $info );
61 $lb = $mwServices->getDBLoadBalancer();
63 $editTracker = $mwServices->getUserEditTracker();
66 (
new AutoCommitUpdate( $dbw, __METHOD__,
function () use ( $lb, $dbw, $fname, $editTracker ) {
67 foreach ( $this->infoByUser as $userId => $info ) {
68 $user = $info->getUser();
70 $dbw->newUpdateQueryBuilder()
74 'user_editcount+' . (
int)$info->getIncrement()
77 ->where( [
'user_id' => $userId, $dbw->expr(
'user_editcount',
'!=',
null ) ] )
78 ->caller( $fname )->execute();
80 if ( $dbw->affectedRows() == 0 ) {
87 $dbr->flushSnapshot( $fname );
88 $lb->waitForPrimaryPos( $dbr );
89 $editTracker->initializeUserEditCount( $user );
93 $editTracker->clearUserEditCache( $user );
96 $editTracker->invalidateCachedFirstEditTimestamps( [
102 $hookRunner =
new HookRunner( $mwServices->getHookContainer() );
103 $hookRunner->onUserEditCountUpdate( array_values( $this->infoByUser ) );