userIds = $params['userIds']; } /** * Run the job of finding & deleting older notifications */ public function run() { global $wgEchoMaxUpdateCount; if ( count( $this->userIds ) > 1 ) { // If there are multiple users, queue a single job for each one $jobs = array(); foreach ( $this->userIds as $userId ) { $jobs[] = new EchoNotificationDeleteJob( $this->title, array( 'userIds' => array( $userId ) ) ); } JobQueueGroup::singleton()->push( $jobs ); return true; } $notifMapper = new EchoNotificationMapper(); $targetMapper = new EchoTargetPageMapper(); // Back-compat for older jobs which used array( $userId => $userId ); $userIds = array_values( $this->userIds ); $userId = $userIds[0]; $user = User::newFromId( $userId ); $notif = $notifMapper->fetchByUserOffset( $user, $wgEchoMaxUpdateCount ); if ( $notif ) { $res = $notifMapper->deleteByUserEventOffset( $user, $notif->getEvent()->getId() ); if ( $res ) { $res = $targetMapper->deleteByUserEventOffset( $user, $notif->getEvent()->getId() ); } if ( $res ) { $notifUser = MWEchoNotifUser::newFromUser( $user ); $notifUser->resetNotificationCount( DB_MASTER ); } } return true; } }