<?php
namespace wcf\system\moderation\queue;
+use wcf\system\database\util\PreparedStatementConditionBuilder;
+
use wcf\data\moderation\queue\ModerationQueue;
use wcf\data\moderation\queue\ModerationQueueAction;
use wcf\data\moderation\queue\ModerationQueueList;
*/
public function removeOrphans(array $queueIDs) {
if (!empty($queueIDs)) {
- $queueAction = new ModerationQueueAction($queueIDs, 'markAsDone');
- $queueAction->executeAction();
+ $conditions = new PreparedStatementConditionBuilder();
+ $conditions->add("queueID IN (?)", array($queueIDs));
+ $sql = "DELETE FROM wcf".WCF_N."_moderation_queue
+ ".$conditions;
+ $statement = WCF::getDB()->prepareStatement($sql);
$this->resetModerationCount();
}
$responses[$row['responseID']] = new CommentResponse(null, $row);
}
+ $orphanedQueueIDs = array();
foreach ($queues as $queue) {
$assignUser = false;
+ if (!isset($responses[$queue->objectID]) || !isset($comments[$responses[$queue->objectID]->commentID])) {
+ $orphanedQueueIDs[] = $queue->queueID;
+ continue;
+ }
+
$comment = $comments[$responses[$queue->objectID]->commentID];
if ($this->getCommentManager($comment)->canModerate($comment->objectTypeID, $comment->objectID)) {
$assignUser = true;
$assignments[$queue->queueID] = $assignUser;
}
+ ModerationQueueManager::getInstance()->removeOrphans($orphanedQueueIDs);
ModerationQueueManager::getInstance()->setAssignment($assignments);
}