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;
}