documentElement; $journal = $request->getJournal(); $journalId = $journal->getId(); // Search $root->appendChild($this->_createUrlTree($doc, $request->url($journal->getPath(), 'search'))); // Issues if ($journal->getData('publishingMode') != \APP\journal\Journal::PUBLISHING_MODE_NONE) { $root->appendChild($this->_createUrlTree($doc, $request->url($journal->getPath(), 'issue', 'current'))); $root->appendChild($this->_createUrlTree($doc, $request->url($journal->getPath(), 'issue', 'archive'))); $publishedIssues = Repo::issue()->getCollector() ->filterByContextIds([$journalId]) ->filterByPublished(true) ->orderBy(Collector::ORDERBY_PUBLISHED_ISSUES) ->getMany(); foreach ($publishedIssues as $issue) { $root->appendChild($this->_createUrlTree($doc, $request->url($journal->getPath(), 'issue', 'view', $issue->getId()))); // Articles for issue $submissions = Repo::submission() ->getCollector() ->filterByContextIds([$journal->getId()]) ->filterByIssueIds([$issue->getId()]) ->filterByStatus([Submission::STATUS_PUBLISHED]) ->getMany(); foreach ($submissions as $submission) { // Abstract $root->appendChild($this->_createUrlTree($doc, $request->url($journal->getPath(), 'article', 'view', [$submission->getBestId()]))); // Galley files $galleys = Repo::galley() ->getCollector() ->filterByPublicationIds([($submission->getCurrentPublication()->getId())]) ->getMany(); foreach ($galleys as $galley) { $root->appendChild($this->_createUrlTree($doc, $request->url($journal->getPath(), 'article', 'view', [$submission->getBestId(), $galley->getBestGalleyId()]))); } } } } $doc->appendChild($root); // Enable plugins to change the sitemap Hook::call('SitemapHandler::createJournalSitemap', [&$doc]); return $doc; } }