コード例 #1
0
 /**
  * Returns a list of outstanding queues.
  * 
  * @return	array<string>
  */
 public function getOutstandingQueues()
 {
     $objectTypeIDs = ModerationQueueManager::getInstance()->getObjectTypeIDs(array_keys(ModerationQueueManager::getInstance()->getDefinitions()));
     $conditions = new PreparedStatementConditionBuilder();
     $conditions->add("moderation_queue_to_user.userID = ?", array(WCF::getUser()->userID));
     $conditions->add("moderation_queue_to_user.isAffected = ?", array(1));
     $conditions->add("moderation_queue.status IN (?)", array(array(ModerationQueue::STATUS_OUTSTANDING, ModerationQueue::STATUS_PROCESSING)));
     $conditions->add("moderation_queue.time > ?", array(VisitTracker::getInstance()->getVisitTime('com.woltlab.wcf.moderation.queue')));
     $conditions->add("(moderation_queue.time > tracked_visit.visitTime OR tracked_visit.visitTime IS NULL)");
     $sql = "SELECT\t\tmoderation_queue.queueID\n\t\t\tFROM\t\twcf" . WCF_N . "_moderation_queue_to_user moderation_queue_to_user\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_moderation_queue moderation_queue\n\t\t\tON\t\t(moderation_queue.queueID = moderation_queue_to_user.queueID)\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_tracked_visit tracked_visit\n\t\t\tON\t\t(tracked_visit.objectTypeID = " . VisitTracker::getInstance()->getObjectTypeID('com.woltlab.wcf.moderation.queue') . " AND tracked_visit.objectID = moderation_queue.queueID AND tracked_visit.userID = " . WCF::getUser()->userID . ")\n\t\t\t" . $conditions . "\n\t\t\tORDER BY\tmoderation_queue.lastChangeTime DESC";
     $statement = WCF::getDB()->prepareStatement($sql, 5);
     $statement->execute($conditions->getParameters());
     $queueIDs = array();
     while ($row = $statement->fetchArray()) {
         $queueIDs[] = $row['queueID'];
     }
     $queues = array();
     if (!empty($queueIDs)) {
         $queueList = new ViewableModerationQueueList();
         $queueList->getConditionBuilder()->add("moderation_queue.queueID IN (?)", array($queueIDs));
         $queueList->sqlOrderBy = "moderation_queue.lastChangeTime DESC";
         $queueList->loadUserProfiles = true;
         $queueList->readObjects();
         foreach ($queueList as $queue) {
             $queues[] = $queue;
         }
     }
     // check if user storage is outdated
     $totalCount = ModerationQueueManager::getInstance()->getUnreadModerationCount();
     $count = count($queues);
     if ($count < 5) {
         // load more entries to fill up list
         $queueList = new ViewableModerationQueueList();
         $queueList->getConditionBuilder()->add("moderation_queue.status IN (?)", array(array(ModerationQueue::STATUS_OUTSTANDING, ModerationQueue::STATUS_PROCESSING)));
         if (!empty($queueIDs)) {
             $queueList->getConditionBuilder()->add("moderation_queue.queueID NOT IN (?)", array($queueIDs));
         }
         $queueList->sqlOrderBy = "moderation_queue.lastChangeTime DESC";
         $queueList->sqlLimit = 5 - $count;
         $queueList->loadUserProfiles = true;
         $queueList->readObjects();
         foreach ($queueList as $queue) {
             $queues[] = $queue;
         }
         // check if stored count is out of sync
         if ($count < $totalCount) {
             UserStorageHandler::getInstance()->reset(array(WCF::getUser()->userID), 'outstandingModerationCount');
             // check for orphaned queues
             $queueCount = ModerationQueueManager::getInstance()->getUnreadModerationCount();
             if (count($queues) < $queueCount) {
                 ModerationQueueManager::getInstance()->identifyOrphans();
             }
         }
     }
     WCF::getTPL()->assign(array('queues' => $queues));
     return array('template' => WCF::getTPL()->fetch('moderationQueueList'), 'totalCount' => $totalCount);
 }
コード例 #2
0
 /**
  * Returns a viewable moderation queue entry.
  * 
  * @param	integer		$queueID
  * @return	\wcf\data\moderation\queue\ViewableModerationQueue
  */
 public static function getViewableModerationQueue($queueID)
 {
     $queueList = new ViewableModerationQueueList();
     $queueList->getConditionBuilder()->add("moderation_queue.queueID = ?", array($queueID));
     $queueList->sqlLimit = 1;
     $queueList->readObjects();
     $queues = $queueList->getObjects();
     return isset($queues[$queueID]) ? $queues[$queueID] : null;
 }