Moved comment listing to API
This commit is contained in:
parent
6a28be5e3e
commit
c0a7fe5209
3 changed files with 56 additions and 23 deletions
|
@ -1,33 +1,21 @@
|
||||||
<?php
|
<?php
|
||||||
class CommentController
|
class CommentController
|
||||||
{
|
{
|
||||||
public function listView($page)
|
public function listView($page = 1)
|
||||||
{
|
{
|
||||||
Access::assert(Privilege::ListComments);
|
$ret = Api::run(
|
||||||
|
new ListCommentsJob(),
|
||||||
$page = max(1, intval($page));
|
[
|
||||||
$commentsPerPage = intval(getConfig()->comments->commentsPerPage);
|
JobArgs::PAGE_NUMBER => $page,
|
||||||
$searchQuery = 'comment_min:1 order:comment_date,desc';
|
]);
|
||||||
|
|
||||||
$posts = PostSearchService::getEntities($searchQuery, $commentsPerPage, $page);
|
|
||||||
$postCount = PostSearchService::getEntityCount($searchQuery);
|
|
||||||
$pageCount = ceil($postCount / $commentsPerPage);
|
|
||||||
PostModel::preloadTags($posts);
|
|
||||||
PostModel::preloadComments($posts);
|
|
||||||
$comments = [];
|
|
||||||
foreach ($posts as $post)
|
|
||||||
$comments = array_merge($comments, $post->getComments());
|
|
||||||
CommentModel::preloadCommenters($comments);
|
|
||||||
|
|
||||||
$context = getContext();
|
$context = getContext();
|
||||||
$context->postGroups = true;
|
$context->transport->posts = $ret->posts;
|
||||||
$context->transport->posts = $posts;
|
|
||||||
$context->transport->paginator = new StdClass;
|
$context->transport->paginator = new StdClass;
|
||||||
$context->transport->paginator->page = $page;
|
$context->transport->paginator->page = $ret->page;
|
||||||
$context->transport->paginator->pageCount = $pageCount;
|
$context->transport->paginator->pageCount = $ret->pageCount;
|
||||||
$context->transport->paginator->entityCount = $postCount;
|
$context->transport->paginator->entityCount = $ret->postCount;
|
||||||
$context->transport->paginator->entities = $posts;
|
$context->transport->paginator->entities = $ret->posts;
|
||||||
$context->transport->paginator->params = func_get_args();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function previewAction()
|
public function previewAction()
|
||||||
|
|
|
@ -4,4 +4,5 @@ class JobArgs
|
||||||
const COMMENT_ID = 'comment-id';
|
const COMMENT_ID = 'comment-id';
|
||||||
const POST_ID = 'post-id';
|
const POST_ID = 'post-id';
|
||||||
const TEXT = 'text';
|
const TEXT = 'text';
|
||||||
|
const PAGE_NUMBER = 'page-number';
|
||||||
}
|
}
|
||||||
|
|
44
src/Jobs/ListCommentsJob.php
Normal file
44
src/Jobs/ListCommentsJob.php
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
class ListCommentsJob extends AbstractJob
|
||||||
|
{
|
||||||
|
public function execute()
|
||||||
|
{
|
||||||
|
$page = $this->getArgument(JobArgs::PAGE_NUMBER);
|
||||||
|
|
||||||
|
$page = max(1, intval($page));
|
||||||
|
$commentsPerPage = intval(getConfig()->comments->commentsPerPage);
|
||||||
|
$searchQuery = 'comment_min:1 order:comment_date,desc';
|
||||||
|
|
||||||
|
$posts = PostSearchService::getEntities($searchQuery, $commentsPerPage, $page);
|
||||||
|
$postCount = PostSearchService::getEntityCount($searchQuery);
|
||||||
|
$pageCount = ceil($postCount / $commentsPerPage);
|
||||||
|
PostModel::preloadTags($posts);
|
||||||
|
PostModel::preloadComments($posts);
|
||||||
|
$comments = [];
|
||||||
|
foreach ($posts as $post)
|
||||||
|
$comments = array_merge($comments, $post->getComments());
|
||||||
|
CommentModel::preloadCommenters($comments);
|
||||||
|
|
||||||
|
$ret = new StdClass;
|
||||||
|
$ret->posts = $posts;
|
||||||
|
$ret->postCount = $postCount;
|
||||||
|
$ret->page = $page;
|
||||||
|
$ret->pageCount = $pageCount;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function requiresPrivilege()
|
||||||
|
{
|
||||||
|
return Privilege::ListComments;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function requiresAuthentication()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function requiresConfirmedEmail()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue