/** * Delete images that have been marked for deletion * * @param array $images List of images to process * @param integer $userId ID of the user reviewing the images */ public function updateImageState($images, $userId) { wfProfileIn(__METHOD__); $deletionList = []; $sqlWhere = []; foreach ($images as $image) { if ($image['state'] == ImageReviewStatuses::STATE_DELETED) { $deletionList[] = [$image['wikiId'], $image['pageId']]; $sqlWhere[] = "( wiki_id = {$image['wikiId']} AND page_id = {$image['pageId']} )"; } } if (!empty($sqlWhere)) { $db = $this->getDatawareDB(DB_MASTER); $db->update('image_review', ['reviewer_id' => $userId, 'state' => ImageReviewStatuses::STATE_DELETED, 'review_end = now()'], [implode(' OR ', $sqlWhere)], __METHOD__); $db->commit(); } if (!empty($deletionList)) { $task = new \Wikia\Tasks\Tasks\ImageReviewTask(); $task->call('delete', $deletionList, true); $task->prioritize(); $task->queue(); } wfProfileOut(__METHOD__); }
/** * Creates a task removing listed images from image_review queue * @param array $aDeletionList An array of [ city_id, page_id ] arrays. * @return void */ public function createDeleteFromQueueTask($aDeletionList) { if (!empty($aDeletionList)) { $task = new \Wikia\Tasks\Tasks\ImageReviewTask(); $task->call('deleteFromQueue', $aDeletionList); $task->queue(); } }