58 Assert::parameterType( __CLASS__, $update,
'$update' );
59 '@phan-var UserEditCountUpdate $update';
61 foreach ( $update->infoByUser as $userId => $info ) {
62 if ( !isset( $this->infoByUser[$userId] ) ) {
63 $this->infoByUser[$userId] = $info;
65 $this->infoByUser[$userId]->merge( $info );
75 $lb = $mwServices->getDBLoadBalancer();
77 $editTracker = $mwServices->getUserEditTracker();
80 (
new AutoCommitUpdate( $dbw, __METHOD__,
function () use ( $lb, $dbw, $fname, $editTracker ) {
81 foreach ( $this->infoByUser as $userId => $info ) {
82 $dbw->newUpdateQueryBuilder()
86 'user_editcount+' . (
int)$info->getIncrement()
89 ->where( [
'user_id' => $userId, $dbw->expr(
'user_editcount',
'!=',
null ) ] )
90 ->caller( $fname )->execute();
92 if ( $dbw->affectedRows() == 0 ) {
99 $dbr->flushSnapshot( $fname );
100 $lb->waitForPrimaryPos( $dbr );
101 $editTracker->initializeUserEditCount( $info->getUser() );
105 $editTracker->clearUserEditCache( $info->getUser() );
109 $hookRunner =
new HookRunner( $mwServices->getHookContainer() );
110 $hookRunner->onUserEditCountUpdate( array_values( $this->infoByUser ) );