/** * Returns a structured response. * * @param integer $responseID * @return \wcf\data\comment\response\StructuredCommentResponse */ public static function getResponse($responseID) { $response = new CommentResponse($responseID); if (!$response->responseID) { return null; } // prepare structured response $response = new StructuredCommentResponse($response); // add user profile $userProfile = UserProfile::getUserProfile($response->userID); $response->setUserProfile($userProfile); return $response; }
/** * @see \wcf\data\DatabaseObjectList::readObjects() */ public function readObjects() { parent::readObjects(); // get user ids $userIDs = array(); foreach ($this->objects as &$response) { if (!$this->minResponseTime || $response->time < $this->minResponseTime) { $this->minResponseTime = $response->time; } $userIDs[] = $response->userID; $response = new StructuredCommentResponse($response); $response->setIsDeletable($this->commentManager->canDeleteResponse($response->getDecoratedObject())); $response->setIsEditable($this->commentManager->canEditResponse($response->getDecoratedObject())); } unset($response); // fetch user data and avatars if (!empty($userIDs)) { $userIDs = array_unique($userIDs); $users = UserProfile::getUserProfiles($userIDs); foreach ($this->objects as $response) { if (isset($users[$response->userID])) { $response->setUserProfile($users[$response->userID]); } } } }
/** * @see \wcf\data\DatabaseObjectList::readObjects() */ public function readObjects() { parent::readObjects(); // fetch response ids $responseIDs = $userIDs = array(); foreach ($this->objects as &$comment) { if (!$this->minCommentTime || $comment->time < $this->minCommentTime) { $this->minCommentTime = $comment->time; } $commentResponseIDs = $comment->getResponseIDs(); foreach ($commentResponseIDs as $responseID) { $this->responseIDs[] = $responseID; $responseIDs[$responseID] = $comment->commentID; } if ($comment->userID) { $userIDs[] = $comment->userID; } $comment = new StructuredComment($comment); $comment->setIsDeletable($this->commentManager->canDeleteComment($comment->getDecoratedObject())); $comment->setIsEditable($this->commentManager->canEditComment($comment->getDecoratedObject())); } unset($comment); // fetch last responses if (!empty($responseIDs)) { $responseList = new CommentResponseList(); $responseList->getConditionBuilder()->add("comment_response.responseID IN (?)", array(array_keys($responseIDs))); $responseList->readObjects(); foreach ($responseList as $response) { $response = new StructuredCommentResponse($response); $response->setIsDeletable($this->commentManager->canDeleteResponse($response->getDecoratedObject())); $response->setIsEditable($this->commentManager->canEditResponse($response->getDecoratedObject())); $commentID = $responseIDs[$response->responseID]; $this->objects[$commentID]->addResponse($response); if ($response->userID) { $userIDs[] = $response->userID; } } } // fetch user data and avatars if (!empty($userIDs)) { $userIDs = array_unique($userIDs); $users = UserProfile::getUserProfiles($userIDs); foreach ($this->objects as $comment) { if ($comment->userID && isset($users[$comment->userID])) { $comment->setUserProfile($users[$comment->userID]); } foreach ($comment as $response) { if ($response->userID && isset($users[$response->userID])) { $response->setUserProfile($users[$response->userID]); } } } } }
/** * Renders a response. * * @param \wcf\data\comment\response\CommentResponse $response * @return string */ protected function renderResponse(CommentResponse $response) { $response = new StructuredCommentResponse($response); $response->setIsDeletable($this->commentProcessor->canDeleteResponse($response->getDecoratedObject())); $response->setIsEditable($this->commentProcessor->canEditResponse($response->getDecoratedObject())); // set user profile if ($response->userID) { $userProfile = UserProfile::getUserProfile($response->userID); $response->setUserProfile($userProfile); } // render response WCF::getTPL()->assign(array('responseList' => array($response), 'commentManager' => $this->commentProcessor)); return WCF::getTPL()->fetch('commentResponseList'); }