/**
* Displays a conversation.
*
* @return XenForo_ControllerResponse_Abstract
*/
public function actionView()
{
$conversationId = $this->_input->filterSingle('conversation_id', XenForo_Input::UINT);
$conversation = $this->_getConversationOrError($conversationId);
$page = $this->_input->filterSingle('page', XenForo_Input::UINT);
$messagesPerPage = XenForo_Application::get('options')->messagesPerPage;
$conversationModel = $this->_getConversationModel();
$recipients = $conversationModel->getConversationRecipients($conversationId);
$messages = $conversationModel->getConversationMessages($conversationId, array(
'perPage' => $messagesPerPage,
'page' => $page,
));
$conversation['showMarkRead'] = $conversation['isNew'];
$maxMessageDate = $conversationModel->getMaximumMessageDate($messages);
if ($maxMessageDate > $conversation['last_read_date'])
{
$conversationModel->markConversationAsRead(
$conversationId, XenForo_Visitor::getUserId(), $maxMessageDate, $conversation
['last_message_date']
);
$conversation['showMarkRead'] = false;
}
$attachmentParams = $conversationModel->getAttachmentParams($conversation, array(
'conversation_id' => $conversationId
));
$messages = $conversationModel->getAndMergeAttachmentsIntoConversationMessages($messages);
$messages = $conversationModel->prepareMessages($messages, $conversation);
$viewParams = array(
'conversation' => $conversation,
'recipients' => $recipients,
'canEditConversation' => $conversationModel->canEditConversation($conversation),
'canReplyConversation' => $conversationModel->canReplyToConversation($conversation),
'canInviteUsers' => $conversationModel->canInviteUsersToConversation($conversation),
'attachmentParams' => $attachmentParams,
'attachmentConstraints' => $this->getModelFromCache('XenForo_Model_Attachment')-
>getAttachmentConstraints(),
'canViewAttachments' => $conversationModel->canViewAttachmentOnConversation($conversation),
'messages' => $messages,
'lastMessage' => end($messages),
'page' => $page,
'messagesPerPage' => $messagesPerPage,
'totalMessages' => $conversation['reply_count'] + 1
);
return $this->responseView('XenForo_ViewPublic_Conversation_View', 'conversation_view', $viewParams);
}