/**
  * @see	\wcf\data\IMessageQuoteAction::saveFullQuote()
  */
 public function saveFullQuote()
 {
     $quoteID = MessageQuoteManager::getInstance()->addQuote('com.woltlab.wcf.conversation.message', $this->message->conversationID, $this->message->messageID, $this->message->getExcerpt(), $this->message->getMessage());
     if ($quoteID === false) {
         $removeQuoteID = MessageQuoteManager::getInstance()->getQuoteID('com.woltlab.wcf.conversation.message', $this->message->conversationID, $this->message->messageID, $this->message->getExcerpt(), $this->message->getMessage());
         MessageQuoteManager::getInstance()->removeQuote($removeQuoteID);
     }
     $returnValues = array('count' => MessageQuoteManager::getInstance()->countQuotes(), 'fullQuoteMessageIDs' => MessageQuoteManager::getInstance()->getFullQuoteObjectIDs(array('com.woltlab.wcf.conversation.message')));
     if ($quoteID) {
         $returnValues['renderedQuote'] = MessageQuoteManager::getInstance()->getQuoteComponents($quoteID);
     }
     return $returnValues;
 }
 /**
  * @see	\wcf\form\IPage::readParameters()
  */
 public function readParameters()
 {
     MessageForm::readParameters();
     if (isset($_REQUEST['id'])) {
         $this->messageID = intval($_REQUEST['id']);
     }
     $this->message = new ConversationMessage($this->messageID);
     if (!$this->message->messageID) {
         throw new IllegalLinkException();
     }
     if (!$this->message->canEdit()) {
         throw new PermissionDeniedException();
     }
     // get conversation
     $this->conversationID = $this->message->conversationID;
     $this->conversation = $this->message->getConversation();
     if ($this->conversation->firstMessageID == $this->message->messageID) {
         $this->isFirstMessage = true;
     }
     // set attachment object id
     $this->attachmentObjectID = $this->message->messageID;
 }
 /**
  * @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();
 }