/** * @see \wcf\system\worker\IWorker::execute() */ public function execute() { $this->objectList->getConditionBuilder()->add('conversation_message.messageID BETWEEN ? AND ?', array($this->limit * $this->loopCount + 1, $this->limit * $this->loopCount + $this->limit)); parent::execute(); if (!$this->loopCount) { // reset search index SearchIndexManager::getInstance()->reset('com.woltlab.wcf.conversation.message'); } // prepare statements $attachmentObjectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.attachment.objectType', 'com.woltlab.wcf.conversation.message'); $sql = "SELECT\t\tCOUNT(*) AS attachments\n\t\t\tFROM\t\twcf" . WCF_N . "_attachment\n\t\t\tWHERE\t\tobjectTypeID = ?\n\t\t\t\t\tAND objectID = ?"; $attachmentStatement = WCF::getDB()->prepareStatement($sql); foreach ($this->objectList as $message) { SearchIndexManager::getInstance()->add('com.woltlab.wcf.conversation.message', $message->messageID, $message->message, $message->subject ?: '', $message->time, $message->userID, $message->username); $editor = new ConversationMessageEditor($message); $data = array(); // count attachments $attachmentStatement->execute(array($attachmentObjectType->objectTypeID, $message->messageID)); $row = $attachmentStatement->fetchSingleRow(); $data['attachments'] = $row['attachments']; // update embedded objects $data['hasEmbeddedObjects'] = MessageEmbeddedObjectManager::getInstance()->registerObjects('com.woltlab.wcf.conversation.message', $message->messageID, $message->message) ? 1 : 0; $editor->update($data); } }
/** * @see \wcf\system\importer\IImporter::import() */ public function import($oldID, array $data, array $additionalData = array()) { $data['objectID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.conversation.message', $data['objectID']); if (!$data['objectID']) { return 0; } $attachmentID = parent::import($oldID, $data, $additionalData); if ($attachmentID && $attachmentID != $oldID) { // fix embedded attachments $messageObj = new ConversationMessage($data['objectID']); if (($newMessage = $this->fixEmbeddedAttachments($messageObj->message, $oldID, $attachmentID)) !== false) { $editor = new ConversationMessageEditor($messageObj); $editor->update(array('message' => $newMessage)); } } return $attachmentID; }
/** * @see \wcf\system\importer\IImporter::import() */ public function import($oldID, array $data, array $additionalData = array()) { $data['conversationID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.conversation', $data['conversationID']); if (!$data['conversationID']) { return 0; } $data['userID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.user', $data['userID']); // check existing message if (is_numeric($oldID)) { $existingMessage = new ConversationMessage($oldID); if (!$existingMessage->messageID) { $data['messageID'] = $oldID; } } $message = ConversationMessageEditor::create($data); ImportHandler::getInstance()->saveNewID('com.woltlab.wcf.conversation.message', $oldID, $message->messageID); return $message->messageID; }