fetchUsersWithNotificationsForEvents( $eventIds ); $eventMapper->toggleDeleted( $eventIds, $moderate ); $fname = __METHOD__; DeferredUpdates::addCallableUpdate( static function () use ( $affectedUserIds, $fname ) { // This update runs after the main transaction round commits. // Wait for the event deletions to be propagated to replica DBs $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); $lbFactory->waitForReplication( [ 'timeout' => 5 ] ); $lbFactory->flushReplicaSnapshots( $fname ); // Recompute the notification count for the // users whose notifications have been moderated. foreach ( $affectedUserIds as $userId ) { $user = User::newFromId( $userId ); NotifUser::newFromUser( $user )->resetNotificationCount(); } } ); } }