Newscoop\GimmeBundle\Controller\ArticlesController::relatedArticlesAction PHP Method

relatedArticlesAction() public method

Get related articles.
public relatedArticlesAction ( Request $request, $number, $language = null ) : array
$request Symfony\Component\HttpFoundation\Request
return array
    public function relatedArticlesAction(Request $request, $number, $language = null)
    {
        $em = $this->container->get('em');
        $publication = $this->get('newscoop.publication_service')->getPublication();
        $relatedArticlesService = $this->get('related_articles');
        $article = $em->getRepository('Newscoop\\Entity\\Article')->getArticle($number, $request->get('language', $publication->getLanguage()->getCode()))->getOneOrNullResult();
        if (!$article) {
            throw new NotFoundHttpException('Article was not found');
        }
        $onlyPublished = true;
        try {
            $user = $this->container->get('user')->getCurrentUser();
            if ($user && $user->isAdmin()) {
                $onlyPublished = false;
            }
        } catch (AuthenticationException $e) {
        }
        $relatedArticles = $relatedArticlesService->getRelatedArticles($article);
        $ids = array();
        foreach ($relatedArticles as $relatedArticle) {
            $ids[] = $relatedArticle->getArticleNumber();
        }
        $articleSearchCriteria = new ArticleSearchCriteria();
        $articleSearchCriteria->language = $article->getLanguage()->getCode();
        $articles = $em->getRepository('Newscoop\\Entity\\Article')->getArticlesByCriteria($articleSearchCriteria, $ids, $onlyPublished);
        $paginator = $this->get('newscoop.paginator.paginator_service');
        $paginator->setUsedRouteParams(array('number' => $number, 'language' => $article->getLanguage()->getCode()));
        $articles = $paginator->paginate($articles, array('distinct' => false));
        return $articles;
    }