/** * @see \wcf\data\DatabaseObjectList::readObjects() */ public function readObjects() { parent::readObjects(); if (!empty($this->objects)) { $objects = array(); foreach ($this->objects as &$object) { $object = new ViewableModerationQueue($object); if (!isset($objects[$object->objectTypeID])) { $objects[$object->objectTypeID] = array(); } $objects[$object->objectTypeID][] = $object; } unset($object); foreach ($objects as $objectTypeID => $queueItems) { ModerationQueueManager::getInstance()->populate($objectTypeID, $queueItems); } // check for non-existant items $queueIDs = array(); foreach ($this->objects as $index => $object) { if ($object->isOrphaned()) { $queueIDs[] = $object->queueID; unset($this->objects[$index]); } } // remove orphaned queues if (!empty($queueIDs)) { $this->indexToObject = array_keys($this->objects); ModerationQueueManager::getInstance()->removeOrphans($queueIDs); } if ($this->loadUserProfiles) { $userIDs = array(); foreach ($this->objects as $object) { $userIDs[] = $object->getAffectedObject()->getUserID(); } $userProfiles = UserProfile::getUserProfiles($userIDs); foreach ($this->objects as $object) { if (isset($userProfiles[$object->getAffectedObject()->getUserID()])) { $object->setUserProfile($userProfiles[$object->getAffectedObject()->getUserID()]); } } } } }
/** * Forces the update of non-tracked queues for this user. */ protected function forceUserAssignment() { $queueList = new ModerationQueueList(); $queueList->sqlJoins = "LEFT JOIN wcf" . WCF_N . "_moderation_queue_to_user moderation_queue_to_user ON (moderation_queue_to_user.queueID = moderation_queue.queueID AND moderation_queue_to_user.userID = " . WCF::getUser()->userID . ")"; $queueList->getConditionBuilder()->add("moderation_queue_to_user.queueID IS NULL"); $queueList->readObjects(); if (count($queueList)) { $queues = array(); foreach ($queueList as $queue) { if (!isset($queues[$queue->objectTypeID])) { $queues[$queue->objectTypeID] = array(); } $queues[$queue->objectTypeID][$queue->queueID] = $queue; } foreach ($this->objectTypeNames as $definitionName => $objectTypeIDs) { foreach ($objectTypeIDs as $objectTypeID) { if (isset($queues[$objectTypeID])) { $this->moderationTypes[$definitionName]->getProcessor()->assignQueues($objectTypeID, $queues[$objectTypeID]); } } } } }
/** * Marks a list of moderation queue entries as done. * * @param integer $objectTypeID * @param array<integer> $objectIDs */ protected function removeEntries($objectTypeID, array $objectIDs) { $queueList = new ModerationQueueList(); $queueList->getConditionBuilder()->add("moderation_queue.objectTypeID = ?", array($objectTypeID)); $queueList->getConditionBuilder()->add("moderation_queue.objectID IN (?)", array($objectIDs)); $queueList->readObjects(); if (count($queueList)) { $objectAction = new ModerationQueueAction($queueList->getObjects(), 'markAsDone'); $objectAction->executeAction(); } }