/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); if (empty($_POST)) { // check for quick reply message $this->text = QuickReplyManager::getInstance()->getMessage('conversation', $this->conversation->conversationID); if (empty($this->text)) { if (MessageQuoteManager::getInstance()->getQuoteMessageID()) { $message = new ConversationMessage(MessageQuoteManager::getInstance()->getQuoteMessageID()); if (!$message->messageID) { throw new IllegalLinkException(); } if ($message->conversationID == $this->conversation->conversationID) { $message->setConversation($this->conversation); $this->text = MessageQuoteManager::getInstance()->renderQuote($message, $message->message); } } if (empty($this->text)) { // get all message ids from current conversation $sql = "SELECT\tmessageID\n\t\t\t\t\t\tFROM\twcf" . WCF_N . "_conversation_message\n\t\t\t\t\t\tWHERE\tconversationID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($this->conversation->conversationID)); $messageIDs = array(); while ($row = $statement->fetchArray()) { $messageIDs[] = $row['messageID']; } $renderedQuotes = MessageQuoteManager::getInstance()->getQuotesByObjectIDs('com.woltlab.wcf.conversation.message', $messageIDs); if (!empty($renderedQuotes)) { $this->text = implode("\n", $renderedQuotes); } } } } // add breadcrumbs WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('wcf.conversation.conversations'), LinkHandler::getInstance()->getLink('ConversationList'))); WCF::getBreadcrumbs()->add($this->conversation->getBreadcrumb()); // get message list $this->messageList = new ViewableConversationMessageList(); $this->messageList->setConversation($this->conversation); $this->messageList->sqlLimit = CONVERSATION_REPLY_SHOW_MESSAGES_MAX; $this->messageList->sqlOrderBy = 'conversation_message.time DESC'; $this->messageList->getConditionBuilder()->add('conversation_message.conversationID = ?', array($this->conversation->conversationID)); $this->messageList->readObjects(); }
/** * @see \wcf\system\message\quote\AbstractMessageQuoteHandler::getMessages() */ protected function getMessages(array $data) { // read messages $messageList = new ConversationMessageList(); $messageList->getConditionBuilder()->add("conversation_message.messageID IN (?)", array(array_keys($data))); $messageList->readObjects(); $messages = $messageList->getObjects(); // read conversations $conversationIDs = $validMessageIDs = array(); foreach ($messages as $message) { $conversationIDs[] = $message->conversationID; $validMessageIDs[] = $message->messageID; } $quotedMessages = array(); if (!empty($conversationIDs)) { $conversationList = new ConversationList(); $conversationList->getConditionBuilder()->add("conversation.conversationID IN (?)", array($conversationIDs)); $conversationList->readObjects(); $conversations = $conversationList->getObjects(); // create QuotedMessage objects foreach ($messages as $conversationMessage) { $conversationMessage->setConversation($conversations[$conversationMessage->conversationID]); $message = new QuotedMessage($conversationMessage); foreach (array_keys($data[$conversationMessage->messageID]) as $quoteID) { $message->addQuote($quoteID, MessageQuoteManager::getInstance()->getQuote($quoteID, false), MessageQuoteManager::getInstance()->getQuote($quoteID, true)); } $quotedMessages[] = $message; } } // check for orphaned quotes if (count($validMessageIDs) != count($data)) { $orphanedQuoteIDs = array(); foreach ($data as $messageID => $quoteIDs) { if (!in_array($messageID, $validMessageIDs)) { foreach (array_keys($quoteIDs) as $quoteID) { $orphanedQuoteIDs[] = $quoteID; } } } MessageQuoteManager::getInstance()->removeOrphanedQuotes($orphanedQuoteIDs); } return $quotedMessages; }
/** * @see \wcf\page\IPage::readData() */ public function readData() { MessageForm::readData(); if (empty($_POST)) { $this->text = $this->message->message; if ($this->isFirstMessage) { $this->participantCanInvite = $this->conversation->participantCanInvite; $this->subject = $this->conversation->subject; if ($this->conversation->isDraft && $this->conversation->draftData) { $draftData = @unserialize($this->conversation->draftData); if (!empty($draftData['participants'])) { foreach (UserProfile::getUserProfiles($draftData['participants']) as $user) { if (!empty($this->participants)) { $this->participants .= ', '; } $this->participants .= $user->username; } } if (!empty($draftData['invisibleParticipants'])) { foreach (UserProfile::getUserProfiles($draftData['invisibleParticipants']) as $user) { if (!empty($this->invisibleParticipants)) { $this->invisibleParticipants .= ', '; } $this->invisibleParticipants .= $user->username; } } } } } // add breadcrumbs WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('wcf.conversation.conversations'), LinkHandler::getInstance()->getLink('ConversationList'))); WCF::getBreadcrumbs()->add($this->conversation->getBreadcrumb()); // get message list $this->messageList = new ViewableConversationMessageList(); $this->messageList->setConversation($this->conversation); $this->messageList->sqlLimit = CONVERSATION_REPLY_SHOW_MESSAGES_MAX; $this->messageList->sqlOrderBy = 'conversation_message.time DESC'; $this->messageList->getConditionBuilder()->add('conversation_message.conversationID = ?', array($this->message->conversationID)); $this->messageList->getConditionBuilder()->add("conversation_message.messageID <> ?", array($this->message->messageID)); $this->messageList->readObjects(); }
/** * @see \wcf\system\attachment\IAttachmentObjectType::cacheObjects() */ public function cacheObjects(array $objectIDs) { $messageList = new ConversationMessageList(); $messageList->setObjectIDs($objectIDs); $messageList->readObjects(); $conversationIDs = array(); foreach ($messageList as $message) { $conversationIDs[] = $message->conversationID; } if (!empty($conversationIDs)) { $conversations = Conversation::getUserConversations($conversationIDs, WCF::getUser()->userID); foreach ($messageList as $message) { if (isset($conversations[$message->conversationID])) { $message->setConversation($conversations[$message->conversationID]); } } } foreach ($messageList->getObjects() as $objectID => $object) { $this->cachedObjects[$objectID] = $object; } }
/** * @see \wcf\system\moderation\queue\IModerationQueueHandler::populate() */ public function populate(array $queues) { $objectIDs = array(); foreach ($queues as $object) { $objectIDs[] = $object->objectID; } // fetch messages $messageList = new ConversationMessageList(); $messageList->setObjectIDs($objectIDs); $messageList->readObjects(); $messages = $messageList->getObjects(); // set orphaned queues foreach ($queues as $queue) { if (!isset($messages[$queue->objectID])) { $queue->setIsOrphaned(); } } // fetch conversations $conversationIDs = array(); foreach ($messages as $message) { $conversationIDs[] = $message->conversationID; } if (!empty($conversationIDs)) { $conversationList = new ConversationList(); $conversationList->setObjectIDs($conversationIDs); $conversationList->readObjects(); $conversations = $conversationList->getObjects(); foreach ($queues as $object) { if (isset($messages[$object->objectID])) { $message = $messages[$object->objectID]; $message->setConversation($conversations[$message->conversationID]); $object->setAffectedObject($message); } } } }
/** * @see \wcf\data\DatabaseObjectList::readObjects() */ public function readObjects() { if ($this->objectIDs === null) { $this->readObjectIDs(); } parent::readObjects(); foreach ($this->objects as $message) { if ($message->time > $this->maxPostTime) { $this->maxPostTime = $message->time; } if ($this->conversation !== null) { $message->setConversation($this->conversation); } if ($message->attachments) { $this->attachmentObjectIDs[] = $message->messageID; } if ($message->hasEmbeddedObjects) { $this->embeddedObjectMessageIDs[] = $message->messageID; } } if ($this->embeddedObjectLoading) { $this->readEmbeddedObjects(); } if ($this->attachmentLoading) { $this->readAttachments(); } }