Newscoop\GimmeBundle\Controller\CommentsController::getCommentsForArticleAction PHP Метод

getCommentsForArticleAction() публичный Метод

Get comments for article
public getCommentsForArticleAction ( Request $request, $number, $language, $order )
$request Symfony\Component\HttpFoundation\Request
    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;
    }