public function getCommentsForArticleAction(Request $request, $number, $language, $order)
{
$em = $this->container->get('em');
$paginatorService = $this->get('newscoop.paginator.paginator_service');
$paginatorService->setUsedRouteParams(array('number' => $number, 'language' => $language));
$article = $em->getRepository('Newscoop\\Entity\\Article')->getArticle($number, $language)->getOneOrNullResult();
if (!$article) {
throw new NotFoundHttpException('Article with number:"' . $number . '" and language: "' . $language . '" was not found.');
}
$recommended = false;
if ($request->attributes->get('_route') === 'newscoop_gimme_comments_getcommentsforarticle_recommended') {
$recommended = true;
}
$showHidden = false;
try {
$user = $this->container->get('user')->getCurrentUser();
if ($user && $user->isAdmin()) {
$showHidden = true;
}
} catch (AuthenticationException $e) {
}
$articleComments = $em->getRepository('Newscoop\\Entity\\Comment')->getArticleComments($number, $language, $recommended, false, $showHidden)->getResult();
if ($order == 'nested' && $articleComments) {
$root = new \Node(0, 0, '');
// create a new Node, we remove this one later, but we need a Root Node.
foreach ($articleComments as $comment) {
$reSortedComments[$comment->getId()] = $comment;
}
ksort($reSortedComments);
// sort by commentId
foreach ($reSortedComments as $comment) {
if ($comment->getParent() instanceof \Newscoop\Entity\Comment) {
$node = new \Node($comment->getId(), $comment->getParent()->getId(), $comment);
} else {
$node = new \Node($comment->getId(), 0, $comment);
}
$root->insertNode($node);
}
$articleComments = $root->flatten(false);
}
$paginator = $this->get('newscoop.paginator.paginator_service');
$articleComments = $paginator->paginate($articleComments);
return $articleComments;
}