Ojs\SiteBundle\Controller\ArticleController::articlePageAction PHP Method

articlePageAction() public method

public articlePageAction ( $slug, $article_id, null $issue_id = null, $isJournalHosting = false ) : Response
$slug
$article_id
$issue_id null
$isJournalHosting boolean
return Symfony\Component\HttpFoundation\Response
    public function articlePageAction($slug, $article_id, $issue_id = null, $isJournalHosting = false)
    {
        $journalService = $this->get('ojs.journal_service');
        $em = $this->getDoctrine()->getManager();
        $data['article'] = $em->getRepository('OjsJournalBundle:Article')->findOneBy(['id' => $article_id, 'status' => ArticleStatuses::STATUS_PUBLISHED]);
        $this->throw404IfNotFound($data['article']);
        $journal = $data['article']->getJournal();
        if ($journal->getStatus() !== JournalStatuses::STATUS_PUBLISHED || $journal->getPublisher()->getStatus() !== PublisherStatuses::STATUS_COMPLETE) {
            $journal = null;
            $this->throw404IfNotFound($journal);
        }
        //log article view event
        $bibtex = new Bibtex();
        $bibtex->_options['extractAuthors'] = true;
        $bibtex->_options['wordWrapWidth'] = 0;
        $bibtex->authorstring = 'VON LAST, JR, FIRST';
        $createGetterFunction = 'get' . ucfirst('title');
        $fieldTranslations = [];
        foreach ($data['article']->getTranslations() as $langCode => $translation) {
            if (!empty($translation->{$createGetterFunction}()) && $translation->{$createGetterFunction}() != '-') {
                $fieldTranslations[$langCode] = $translation->{$createGetterFunction}();
                /*
                @article{seligman01impact,
                author = {Len Seligman and Arnon Rosenthal},
                title = {{XML}'s Impact on Databases and Data Sharing},
                journal = {Computer},
                volume = {34},
                number = {6},
                year = {2001},
                issn = {0018-9162},
                pages = {59--67},
                doi = {http://dx.doi.org/10.1109/2.928623},
                publisher = {IEEE Computer Society Press},
                address = {Los Alamitos, CA, USA},
                }
                */
                $addarray = array();
                $addarray['entryType'] = $data['article']->getArticleType();
                $addarray['journal'] = $data['article']->getJournal()->getTitle();
                $addarray['issn'] = $data['article']->getJournal()->getIssn();
                $addarray['address'] = $data['article']->getJournal()->getAddress();
                $addarray['address'] = $data['article']->getJournal()->getPublisher()->getName();
                if ($data['article']->getPubdate()) {
                    $addarray['year'] = $data['article']->getPubdate()->format('Y');
                } else {
                    $addarray['year'] = '';
                }
                $addarray['volume'] = $data['article']->getIssue()->getVolume();
                $addarray['pages'] = $data['article']->getFirstPage() . ' - ' . $data['article']->getLastPage();
                $addarray['doi'] = $data['article']->getDoi();
                $addarray['title'] = $translation->{$createGetterFunction}();
                $addarray['language'] = $langCode;
                $addarray['cite'] = $data['article']->getJournal()->getSlug() . $data['article']->getId();
                $addarray['key'] = 'cite';
                foreach ($data['article']->getArticleAuthors() as $author) {
                    $addarray['author'][$author->getAuthorOrder()]['first'] = $author->getAuthor()->getFirstName();
                    $addarray['author'][$author->getAuthorOrder()]['last'] = $author->getAuthor()->getLastName();
                    //$addarray['author'][]['jr'] = $author->getAuthor()->getMiddleName();
                }
                arsort($addarray['author']);
                $bibtex_data[] = $addarray;
                $bibtex->addEntry($addarray);
                unset($addarray);
            }
        }
        $data['bibtex_data'] = $bibtex_data[0];
        $data['bibtex'] = ltrim(rtrim(print_r($bibtex->bibTex(), 1)));
        $data['schemaMetaTag'] = '<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />';
        $data['meta'] = $this->get('ojs.article_service')->generateMetaTags($data['article']);
        $data['journal'] = $data['article']->getJournal();
        $data['isJournalHosting'] = $isJournalHosting;
        $data['page'] = 'journals';
        $data['articleFileType'] = ArticleFileParams::$FILE_TYPES;
        $data['blocks'] = $em->getRepository('OjsJournalBundle:Block')->journalBlocks($data['journal']);
        $data['journal']->setPublicURI($journalService->generateUrl($data['journal']));
        if ($isJournalHosting) {
            $data['archive_uri'] = $this->generateUrl('journal_hosting_archive', [], true);
        } else {
            $data['archive_uri'] = $this->generateUrl('ojs_archive_index', ['slug' => $journal->getSlug()], true);
        }
        $data['token'] = $this->get('security.csrf.token_manager')->refreshToken('article_view');
        return $this->render('OjsSiteBundle:Article:article_page.html.twig', $data);
    }