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