示例#1
0
文件: Post.php 项目: codeversed/bdApi
 public function prepareApiDataForPost(array $post, array $thread, array $forum)
 {
     /* @var $forumModel XenForo_Model_Forum */
     $forumModel = $this->getModelFromCache('XenForo_Model_Forum');
     $post = $this->preparePost($post, $thread, $forum);
     $attachments = array();
     if (!empty($post['attachments'])) {
         $attachments = $post['attachments'];
     }
     if (!isset($post['messageHtml'])) {
         $post['messageHtml'] = bdApi_Data_Helper_Message::getHtml($post);
     }
     if (isset($post['message'])) {
         $post['messagePlainText'] = bdApi_Data_Helper_Message::getPlainText($post['message']);
     }
     if (isset($post['signature'])) {
         $post['signaturePlainText'] = bdApi_Data_Helper_Message::getPlainText($post['signature']);
     }
     $publicKeys = array('post_id' => 'post_id', 'thread_id' => 'thread_id', 'user_id' => 'poster_user_id', 'username' => 'poster_username', 'post_date' => 'post_create_date', 'message' => 'post_body', 'messageHtml' => 'post_body_html', 'messagePlainText' => 'post_body_plain_text', 'signature' => 'signature', 'signatureHtml' => 'signature_html', 'signaturePlainText' => 'signature_plain_text', 'likes' => 'post_like_count', 'attach_count' => 'post_attachment_count');
     $data = bdApi_Data_Helper_Core::filter($post, $publicKeys);
     $data['user_is_ignored'] = XenForo_Visitor::getInstance()->isIgnoring($post['user_id']);
     if (isset($post['message_state'])) {
         switch ($post['message_state']) {
             case 'visible':
                 $data['post_is_published'] = true;
                 $data['post_is_deleted'] = false;
                 break;
             case 'moderated':
                 $data['post_is_published'] = false;
                 $data['post_is_deleted'] = false;
                 break;
             case 'deleted':
                 $data['post_is_published'] = false;
                 $data['post_is_deleted'] = true;
                 break;
         }
     }
     if (isset($post['last_edit_date'])) {
         // since XenForo 1.2.0
         if ($post['last_edit_date'] > 0) {
             $data['post_update_date'] = $post['last_edit_date'];
         } else {
             // by default, last_edit_date = 0
             $data['post_update_date'] = $post['post_date'];
         }
     }
     if (isset($post['position'])) {
         $data['post_is_first_post'] = intval($post['position']) === 0;
     }
     if (isset($post['like_date'])) {
         $data['post_is_liked'] = !empty($post['like_date']);
     }
     if (!empty($attachments)) {
         $data['attachments'] = $this->prepareApiDataForAttachments($attachments, $post, $thread, $forum);
     }
     $data['links'] = array('permalink' => XenForo_Link::buildPublicLink('posts', $post), 'detail' => bdApi_Data_Helper_Core::safeBuildApiLink('posts', $post), 'thread' => bdApi_Data_Helper_Core::safeBuildApiLink('threads', $post), 'poster' => bdApi_Data_Helper_Core::safeBuildApiLink('users', $post), 'likes' => bdApi_Data_Helper_Core::safeBuildApiLink('posts/likes', $post), 'report' => bdApi_Data_Helper_Core::safeBuildApiLink('posts/report', $post), 'attachments' => bdApi_Data_Helper_Core::safeBuildApiLink('posts/attachments', $post), 'poster_avatar' => XenForo_Template_Helper_Core::callHelper('avatar', array($post, 'm', false, true)));
     if (!empty($post['attach_count'])) {
         $data['links']['attachments'] = bdApi_Data_Helper_Core::safeBuildApiLink('posts/attachments', $post);
     }
     $data['permissions'] = array('view' => $this->canViewPost($post, $thread, $forum), 'edit' => $this->canEditPost($post, $thread, $forum), 'delete' => $this->canDeletePost($post, $thread, $forum), 'reply' => $this->_getThreadModel()->canReplyToThread($thread, $forum), 'like' => $this->canLikePost($post, $thread, $forum), 'report' => $this->canReportPost($post, $thread, $forum), 'upload_attachment' => $this->canEditPost($post, $thread, $forum) and $forumModel->canUploadAndManageAttachment($forum));
     return $data;
 }
示例#2
0
 public function prepareApiDataForMessage(array $message, array $conversation)
 {
     $message = $this->prepareMessage($message, $conversation);
     $attachments = array();
     if (!empty($message['attachments'])) {
         $attachments = $message['attachments'];
     }
     if (!isset($message['messageHtml'])) {
         $message['messageHtml'] = bdApi_Data_Helper_Message::getHtml($message);
     }
     if (isset($message['message'])) {
         $message['messagePlainText'] = bdApi_Data_Helper_Message::getPlainText($message['message']);
     }
     if (isset($message['signature'])) {
         $message['signaturePlainText'] = bdApi_Data_Helper_Message::getPlainText($message['signature']);
     }
     $publicKeys = array('message_id' => 'message_id', 'conversation_id' => 'conversation_id', 'user_id' => 'creator_user_id', 'username' => 'creator_username', 'message_date' => 'message_create_date', 'message' => 'message_body', 'messageHtml' => 'message_body_html', 'messagePlainText' => 'message_body_plain_text', 'signature' => 'signature', 'signatureHtml' => 'signature_html', 'signaturePlainText' => 'signature_plain_text', 'attach_count' => 'message_attachment_count');
     $data = bdApi_Data_Helper_Core::filter($message, $publicKeys);
     $data['user_is_ignored'] = XenForo_Visitor::getInstance()->isIgnoring($message['user_id']);
     if (!empty($attachments)) {
         $data['attachments'] = $this->prepareApiDataForAttachments($message, $attachments);
     }
     $data['links'] = array('detail' => bdApi_Data_Helper_Core::safeBuildApiLink('conversation-messages', $message), 'conversation' => bdApi_Data_Helper_Core::safeBuildApiLink('conversations', $conversation), 'creator' => bdApi_Data_Helper_Core::safeBuildApiLink('users', $message), 'creator_avatar' => XenForo_Template_Helper_Core::callHelper('avatar', array($message, 'm', false, true)), 'report' => bdApi_Data_Helper_Core::safeBuildApiLink('conversation-messages/report', $message));
     $data['permissions'] = array('view' => true, 'edit' => $this->canEditMessage($message, $conversation), 'delete' => false, 'reply' => $this->canReplyToConversation($conversation), 'upload_attachment' => $this->canUploadAndManageAttachment($conversation) and $this->canEditMessage($message, $conversation), 'report' => $this->canReportMessage($message, $conversation));
     return $data;
 }