/** * @see \wcf\data\DatabaseObjectList::readObjects() */ public function readObjects() { if ($this->objectIDs === null) { $this->readObjectIDs(); } parent::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; }
/** * Updates the participant counts of the given conversations. * * @param array<integer> $conversationIDs */ public static function updateParticipantCounts(array $conversationIDs) { $conversationList = new ConversationList(); $conversationList->getConditionBuilder()->add('conversation.conversationID IN (?)', array($conversationIDs)); $conversationList->readObjects(); foreach ($conversationList as $conversation) { $editor = new ConversationEditor($conversation); $editor->updateParticipantCount(); } }
/** * @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(); if (!empty($this->objects)) { $labels = $this->loadLabelAssignments(); foreach ($this->objects as $conversationID => $conversation) { if (isset($labels[$conversationID])) { foreach ($labels[$conversationID] as $label) { $conversation->assignLabel($label); } } } } }