/**
  * @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();
     }
 }