/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); // add breadcrumbs WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('wcf.conversation.conversations'), LinkHandler::getInstance()->getLink('ConversationList'))); if ($this->conversation->isDraft) { WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('wcf.conversation.folder.draft'), LinkHandler::getInstance()->getLink('ConversationList', array('filter' => 'draft')))); } // update last visit time count if ($this->conversation->isNew() && $this->objectList->getMaxPostTime() > $this->conversation->lastVisitTime) { $visitTime = $this->objectList->getMaxPostTime(); if ($visitTime == $this->conversation->lastPostTime) { $visitTime = TIME_NOW; } $conversationAction = new ConversationAction(array($this->conversation->getDecoratedObject()), 'markAsRead', array('visitTime' => $visitTime)); $conversationAction->executeAction(); } // get participants $this->participantList = new ConversationParticipantList($this->conversationID, WCF::getUser()->userID, $this->conversation->userID == WCF::getUser()->userID); $this->participantList->readObjects(); // init quote objects $messageIDs = array(); foreach ($this->objectList as $message) { $messageIDs[] = $message->messageID; } MessageQuoteManager::getInstance()->initObjects('com.woltlab.wcf.conversation.message', $messageIDs); // set attachment permissions if ($this->objectList->getAttachmentList() !== null) { $this->objectList->getAttachmentList()->setPermissions(array('canDownload' => true, 'canViewPreview' => true)); } // get timeframe for modifications $this->objectList->rewind(); $startTime = $this->objectList->current()->time; $count = count($this->objectList); if ($count == 1) { $endTime = $startTime; } else { $this->objectList->seek($count - 1); $endTime = $this->objectList->current()->time; } $this->objectList->rewind(); // load modification log entries $this->modificationLogList = new ConversationLogModificationLogList(); $this->modificationLogList->setConversation($this->conversation->getDecoratedObject()); $this->modificationLogList->getConditionBuilder()->add("modification_log.time BETWEEN ? AND ?", array($startTime, $endTime)); $this->modificationLogList->readObjects(); }
/** * Converts a conversation into a viewable conversation. * * @param \wcf\data\conversation\Conversation $conversation * @param \wcf\data\conversation\label\ConversationLabelList $labelList * @return \wcf\data\conversation\ViewableConversation */ public static function getViewableConversation(Conversation $conversation, ConversationLabelList $labelList = null) { $conversation = new ViewableConversation($conversation); if ($labelList === null) { $labelList = ConversationLabel::getLabelsByUser(); } $labels = $labelList->getObjects(); if (!empty($labels)) { $conditions = new PreparedStatementConditionBuilder(); $conditions->add("conversationID = ?", array($conversation->conversationID)); $conditions->add("labelID IN (?)", array(array_keys($labels))); $sql = "SELECT\tlabelID\n\t\t\t\tFROM\twcf" . WCF_N . "_conversation_label_to_object\n\t\t\t\t" . $conditions; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute($conditions->getParameters()); $data = array(); while ($row = $statement->fetchArray()) { $conversation->assignLabel($labels[$row['labelID']]); } } return $conversation; }