/**
  * Get last answer or comment.
  * 
  * @param bool $onlyVisible default true
  * @return CMA_Answer|CMA_Comment
  */
 public function getLastComment($onlyVisible = true)
 {
     global $wpdb;
     //         if( empty($format) )
     //         {
     //             $format = get_option('date_format') . ' ' . get_option('time_format');
     //         }
     $records = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->comments}\n        \tWHERE comment_post_ID = %d AND comment_approved = 1\n        \tORDER BY comment_ID DESC", $this->getId()));
     foreach ($records as $record) {
         if ($record->comment_type == CMA_Answer::COMMENT_TYPE) {
             if ($answer = new CMA_Answer($record)) {
                 if (!$onlyVisible or $answer->isVisible()) {
                     return $answer;
                 }
             }
         } else {
             if ($comment = new CMA_Comment($record)) {
                 if (!$onlyVisible or $comment->isVisible()) {
                     return $comment;
                 }
             }
         }
     }
     //         $lastAnswer = $this->getLastAnswer();
     //         if( $lastAnswer )
     //         {
     //             $dateString = $lastAnswer->getDate();
     //         }
     //         else
     //         {
     //             $dateString = $this->post->post_modified;
     //         }
     //         return date_i18n($format, strtotime($dateString));
 }
 protected static function processUnmarkSpam()
 {
     if (!empty($_GET['nonce']) and wp_verify_nonce($_GET['nonce'], self::ADMIN_UNMARK_SPAM)) {
         // Answer
         if (!empty($_GET['answer_id'])) {
             if ($answer = CMA_Answer::getById($_GET['answer_id'])) {
                 if ($answer->canUnmarkSpam()) {
                     $answer->markAsSpam(0);
                 } else {
                     die('Cannot unmark spam.');
                 }
             } else {
                 die('Unknown answer.');
             }
         }
         // Comment
         if (!empty($_GET['comment_id'])) {
             if ($comment = CMA_Comment::getById($_GET['comment_id'])) {
                 if ($comment->canUnmarkSpam()) {
                     $comment->markAsSpam(0);
                 } else {
                     die('Cannot unmark spam.');
                 }
             } else {
                 die('Unknown comment.');
             }
         }
         if (!empty($_GET['backlink'])) {
             wp_safe_redirect(base64_decode(urldecode($_GET['backlink'])));
             exit;
         }
     } else {
         die('Invalid nonce.');
     }
 }
 protected static function displayComments($threadId, $answerId)
 {
     if (empty(self::$commentsCache[$threadId])) {
         self::$commentsCache[$threadId] = CMA_Comment::getCommentsByThread($threadId);
     }
     if (!empty(self::$commentsCache[$threadId][$answerId])) {
         $comments = self::$commentsCache[$threadId][$answerId];
     } else {
         $comments = array();
     }
     echo self::_loadView('answer/comments/comments-block', compact('comments', 'threadId', 'answerId'));
 }
 public static function processAnwserStatusChange($answerId, $status)
 {
     /*
      * Get the comment, author, thread
      */
     $answer = get_comment($answerId);
     /*
      * Comment not found
      */
     if (!$answer) {
         return;
     }
     // Comment is not a CMA answer nor comment
     if ($answer->comment_type != CMA_Answer::COMMENT_TYPE and $answer->comment_type != CMA_Comment::COMMENT_TYPE) {
         return;
     }
     $thread = CMA_Thread::getInstance($answer->comment_post_ID);
     /*
      * Fix in case $thread isn't found
      */
     if (is_object($thread)) {
         $thread->updateThreadMetadata(array('answerId' => $answerId));
         if ($status == 'approve') {
             // Send notifications
             $thread->setUpdated();
             if ($answer->comment_type == CMA_Answer::COMMENT_TYPE) {
                 $thread->notifyAboutNewAnswer($answerId);
             } else {
                 if ($comment = CMA_Comment::getById($answerId)) {
                     $comment->sendNotifications();
                 }
             }
         } else {
             $thread->clearCache();
         }
     }
 }