-
- public function getCommentsForPage($pageId, $commentId, $count = 20) {
- if (empty($commentId)) {
- // requesting parent comments
- $query = $this->comment->getParentCommentsByPage($pageId);
- return $query->paginate($count);
- } else {
- // requesting the child comments.
- return Comment::whereRaw("page_id = $pageId AND parent_id = $commentId")->get();
- }
+
+ public function getPageComments($pageId) {
+ $comments = $this->comment->getAllPageComments($pageId);
+ $index = [];
+ $totalComments = count($comments);
+ $finalCommentList = [];
+
+ // normalizing the response.
+ for ($i = 0; $i < count($comments); ++$i) {
+ $comment = $this->normalizeComment($comments[$i]);
+ $parentId = $comment->parent_id;
+ if (empty($parentId)) {
+ $finalCommentList[] = $comment;
+ $index[$comment->id] = $comment;
+ continue;
+ }
+
+ if (empty($index[$parentId])) {
+ // weird condition should not happen.
+ continue;
+ }
+ if (empty($index[$parentId]->sub_comments)) {
+ $index[$parentId]->sub_comments = [];
+ }
+ array_push($index[$parentId]->sub_comments, $comment);
+ $index[$comment->id] = $comment;
+ }
+ return [
+ 'comments' => $finalCommentList,
+ 'total' => $totalComments
+ ];
+ }
+
+ public function getCommentById($commentId) {
+ return $this->normalizeComment($this->comment->getCommentById($commentId));
+ }
+
+ private function normalizeComment($comment) {
+ if (empty($comment)) {
+ return;
+ }
+ $comment->createdBy->avatar_url = $comment->createdBy->getAvatar(50);
+ $comment->createdBy->profile_url = $comment->createdBy->getProfileUrl();
+ if (!empty($comment->updatedBy)) {
+ $comment->updatedBy->profile_url = $comment->updatedBy->getProfileUrl();
+ }
+ return $comment;