public function issuePageAction($id, $isJournalHosting = false) { /** * @var BlockRepository $blockRepo * @var IssueRepository $issueRepo * @var Issue $issue */ $em = $this->getDoctrine()->getManager(); $blockRepo = $em->getRepository(Block::class); $issueRepo = $em->getRepository(Issue::class); $articleRepo = $em->getRepository(Article::class); $issue = $issueRepo->findOneBy(['id' => $id, 'published' => IssueVisibilityStatuses::PUBLISHED]); $this->throw404IfNotFound($issue); $journal = $issue->getJournal(); if ($journal->getStatus() !== JournalStatuses::STATUS_PUBLISHED || $journal->getPublisher()->getStatus() !== PublisherStatuses::STATUS_COMPLETE) { $journal = null; $this->throw404IfNotFound($journal); } $blocks = $blockRepo->journalBlocks($issue->getJournal()); $token = $this->get('security.csrf.token_manager')->refreshToken('issue_view'); $sections = $this->setupIssueSections($issue); $articles = []; /** @var Section $section */ foreach ($sections as $section) { $articles[$section->getId()] = $articleRepo->getOrderedArticles($issue, $section); } $displayModes = ['all' => IssueDisplayModes::SHOW_ALL, 'title' => IssueDisplayModes::SHOW_TITLE, 'volumeAndNumber' => IssueDisplayModes::SHOW_VOLUME_AND_NUMBER]; return $this->render('OjsSiteBundle:Issue:detail.html.twig', ['issue' => $issue, 'blocks' => $blocks, 'token' => $token, 'sections' => $sections, 'articles' => $articles, 'displayModes' => $displayModes, 'isJournalHosting' => $isJournalHosting]); }