57 Assert::parameterType( __CLASS__, $update,
'$update' );
58 '@phan-var UserEditCountUpdate $update';
60 foreach ( $update->infoByUser as $userId => $info ) {
61 if ( !isset( $this->infoByUser[$userId] ) ) {
62 $this->infoByUser[$userId] = $info;
64 $this->infoByUser[$userId]->merge( $info );
74 $lb = $mwServices->getDBLoadBalancer();
76 $editTracker = $mwServices->getUserEditTracker();
79 (
new AutoCommitUpdate( $dbw, __METHOD__,
function () use ( $lb, $dbw, $fname, $editTracker ) {
80 foreach ( $this->infoByUser as $userId => $info ) {
81 $dbw->newUpdateQueryBuilder()
83 ->
set( [
'user_editcount=user_editcount+' . (
int)$info->getIncrement() ] )
84 ->where( [
'user_id' => $userId,
'user_editcount IS NOT NULL' ] )
85 ->caller( $fname )->execute();
87 if ( $dbw->affectedRows() == 0 ) {
94 $dbr->flushSnapshot( $fname );
95 $lb->waitForPrimaryPos( $dbr );
96 $editTracker->initializeUserEditCount( $info->getUser() );
100 $editTracker->clearUserEditCache( $info->getUser() );
104 $hookRunner =
new HookRunner( $mwServices->getHookContainer() );
105 $hookRunner->onUserEditCountUpdate( array_values( $this->infoByUser ) );