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 $dbw->newUpdateQueryBuilder()
72 'user_editcount+' . (
int)$info->getIncrement()
75 ->where( [
'user_id' => $userId, $dbw->expr(
'user_editcount',
'!=',
null ) ] )
76 ->caller( $fname )->execute();
78 if ( $dbw->affectedRows() == 0 ) {
85 $dbr->flushSnapshot( $fname );
86 $lb->waitForPrimaryPos( $dbr );
87 $editTracker->initializeUserEditCount( $info->getUser() );
91 $editTracker->clearUserEditCache( $info->getUser() );
95 $hookRunner =
new HookRunner( $mwServices->getHookContainer() );
96 $hookRunner->onUserEditCountUpdate( array_values( $this->infoByUser ) );