/** * @param SitemapPopulateEvent $event * @param Issue $issue * @return SitemapPopulateEvent */ private function generateArticleLinks(SitemapPopulateEvent $event, Issue $issue) { $articles = $issue->getArticles(); $journal = $issue->getJournal(); foreach ($articles as $article) { $event->getGenerator()->addUrl(new UrlConcrete($this->router->generate('ojs_article_page', ['publisher' => $journal->getPublisher()->getSlug(), 'slug' => $journal->getSlug(), 'issue_id' => $issue->getId(), 'article_id' => $article->getId()], true), new \DateTime(), UrlConcrete::CHANGEFREQ_WEEKLY, 1), 'journals-' . $journal->getSlug()); } return $event; }
public static function numerateIssue(Issue $issue, ObjectManager $entityManager) { $journal = $issue->getJournal(); if ($issue->getNumerator() === null) { try { $numerator = $entityManager->getRepository('OjsJournalBundle:Numerator')->getIssueNumerator($journal); $last = $numerator->getLast() + 1; $numerator->setLast($last); $issue->setNumerator($last); } catch (NoResultException $exception) { $numerator = new Numerator(); $numerator->setJournal($journal); $numerator->setType('issue'); $numerator->setLast(1); $issue->setNumerator(1); } $entityManager->persist($issue); $entityManager->persist($numerator); $entityManager->flush(); } }
/** * @param Issue $issue * @return ArrayCollection */ private function setupIssueSections(Issue $issue) { $sections = []; foreach ($issue->getJournal()->getSections() as $section) { $sectionHaveIssueArticle = false; foreach ($section->getArticles() as $article) { if ($article->getIssue() !== null) { if ($article->getIssue()->getId() == $issue->getId()) { $sectionHaveIssueArticle = true; } } } if ($sectionHaveIssueArticle) { $sections[] = $section; } } //order sections by section order uasort($sections, function ($a, $b) { return (int) $a->getSectionOrder() > (int) $b->getSectionOrder() ? 1 : -1; }); return $sections; }