Inheritance: extends Prezent\Doctrine\Translatable\Entity\AbstractTranslatable, implements Ojs\JournalBundle\Entity\JournalItemInterface, use trait Ojs\CoreBundle\Entity\GenericEntityTrait, use trait Ojs\CoreBundle\Entity\AnalyticsTrait
Example #1
0
 /**
  * @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;
 }
Example #2
0
 /**
  * @param Issue $lastIssue
  * @param boolean $isJournalHosting
  * @return Issue mixed
  */
 private function setupArticleURIs(Issue $lastIssue, $isJournalHosting)
 {
     foreach ($lastIssue->getArticles() as $article) {
         if ($isJournalHosting) {
             $article->setPublicURI($this->generateUrl('journal_hosting_issue_article', ['issue_id' => $article->getIssue()->getId(), 'article_id' => $article->getId()], true));
         } else {
             $article->setPublicURI($this->generateUrl('publisher_hosting_journal_issue_article', ['slug' => $article->getIssue()->getJournal()->getSlug(), 'issue_id' => $article->getIssue()->getId(), 'article_id' => $article->getId()], true));
         }
     }
     return $lastIssue;
 }
Example #3
0
 /**
  * @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;
 }
Example #4
0
 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();
     }
 }
Example #5
0
 /**
  * Set issue
  *
  * @param Issue $issue
  * @return IssueFile
  */
 public function setIssue(Issue $issue)
 {
     $this->issue = $issue;
     $issue->addIssueFile($this);
     return $this;
 }
Example #6
0
 /**
  * @param Issue $last_issue
  * @return Issue|null
  */
 private function setupArticleURIs($last_issue)
 {
     if ($last_issue) {
         /** @var Article $article */
         foreach ($last_issue->getArticles() as $article) {
             $article->setPublicURI($this->generateUrl('ojs_article_page', ['publisher' => $article->getIssue()->getJournal()->getPublisher()->getSlug(), 'slug' => $article->getIssue()->getJournal()->getSlug(), 'issue_id' => $article->getIssue()->getId(), 'article_id' => $article->getId()], true));
         }
         return $last_issue;
     }
     return null;
 }
Example #7
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $output->writeln('Creating sample data...');
     $em = $this->getContainer()->get('doctrine')->getManager();
     $manipulator = $this->getContainer()->get('fos_user.util.user_manipulator');
     $manipulator->create('sample_author', 'author', '*****@*****.**', false, false);
     $user = $em->getRepository('OjsUserBundle:User')->findOneBy(['username' => 'sample_author']);
     $announcement = new AdminAnnouncement();
     $announcement->setTitle('We are online!');
     $announcement->setContent('We are now online and accepting submissions!');
     $em->persist($announcement);
     $em->flush();
     $post = new AdminPost();
     $post->setCurrentLocale('en');
     $post->setTitle('Welcome to OJS!');
     $post->setSlug('Welcome to OJS!');
     $post->setContent('Hello! We are now online and waiting for your submissions. ' . 'Our readers will be able to follow you and read your work ' . 'right after it gets published!');
     $em->persist($post);
     $em->flush();
     $publisherTypes = ['University', 'Government', 'Association', 'Foundation', 'Hospital', 'Chamber', 'Private'];
     foreach ($publisherTypes as $typeName) {
         $publisherType = new PublisherTypes();
         $publisherType->setCurrentLocale('en');
         $publisherType->setName($typeName);
         $em->persist($publisherType);
     }
     $em->flush();
     $slug = $this->getContainer()->getParameter('defaultPublisherSlug');
     $publisherType = $em->getRepository('OjsJournalBundle:PublisherTypes')->find(1);
     $publisher = new Publisher();
     $publisher->setCurrentLocale('en');
     $publisher->setName('OJS');
     $publisher->setSlug($slug);
     $publisher->setEmail('*****@*****.**');
     $publisher->setAddress('First Avenue, Exampletown');
     $publisher->setPhone('+908501234567');
     $publisher->setVerified(1);
     $publisher->setStatus(PublisherStatuses::STATUS_COMPLETE);
     $publisher->setPublisherType($publisherType);
     $em->persist($publisher);
     $em->flush();
     $subject1 = new Subject();
     $subject1->setCurrentLocale('en');
     $subject1->setSubject('Computer Science');
     $subject1->setTags('computer, science');
     $subject2 = new Subject();
     $subject2->setCurrentLocale('en');
     $subject2->setSubject('Journalism');
     $subject2->setTags('journalism');
     $em->persist($subject1);
     $em->persist($subject2);
     $em->flush();
     $language1 = new Lang();
     $language1->setCurrentLocale('en');
     $language1->setName('English');
     $language1->setCode('en');
     $language1->setRtl(false);
     $language2 = new Lang();
     $language2->setCurrentLocale('tr');
     $language2->setName('Türkçe');
     $language2->setCode('tr');
     $language2->setRtl(false);
     $em->persist($language1);
     $em->persist($language2);
     $em->flush();
     $articleTypes = [['Case Report', 'Olgu Sunumu'], ['Research papers', 'Araştırma Makalesi'], ['Translation', 'Çeviri'], ['Note', 'Not'], ['Letter', 'Editöre Mektup'], ['Review Articles', 'Derleme'], ['Book review', 'Kitap İncelemesi'], ['Correction', 'Düzeltme'], ['Editorial', 'Editoryal'], ['Short Communication', 'Kısa Bildiri'], ['Meeting abstract', 'Toplantı Özetleri'], ['Conference Paper', 'Konferans Bildirisi'], ['Biography', 'Biyografi'], ['Bibliography', 'Bibliyografi'], ['News', 'Haber'], ['Report', 'Rapor'], ['Legislation Review', 'Yasa İncelemesi'], ['Decision Review', 'Karar İncelemesi'], ['Art and Literature', 'Sanat ve Edebiyat'], ['Other', 'Diğer']];
     foreach ($articleTypes as $typeNames) {
         $type = new ArticleTypes();
         $type->setCurrentLocale('en');
         $type->setName($typeNames[0]);
         $type->setCurrentLocale('tr');
         $type->setName($typeNames[1]);
         $em->persist($type);
     }
     $em->flush();
     $contactTypes = ['Journal Contact', 'Primary Contact', 'Technical Contact', 'Author Support', 'Subscription Support', 'Publisher Support', 'Submission Support', 'Advertising', 'Media', 'Editor', 'Co-Editor'];
     foreach ($contactTypes as $typeName) {
         $type = new ContactTypes();
         $type->setCurrentLocale('en');
         $type->setName($typeName);
         $em->persist($type);
     }
     $em->flush();
     $journal = new Journal();
     $journal->setCurrentLocale('en');
     $journal->setPublisher($publisher);
     $journal->setTitle('Introduction to OJS');
     $journal->setSubtitle('How to use OJS');
     $journal->setDescription('A journal about OJS');
     $journal->setTitleAbbr('INTROJS');
     $journal->setUrl('http://ojs.io');
     $journal->setSlug('intro');
     $journal->addSubject($subject1);
     $journal->addSubject($subject2);
     $journal->addLanguage($language1);
     $journal->addLanguage($language2);
     $journal->setMandatoryLang($language2);
     $journal->setFounded(new \DateTime('now'));
     $journal->setIssn('1234-5679');
     $journal->setEissn('1234-5679');
     $journal->setStatus(JournalStatuses::STATUS_PUBLISHED);
     $journal->setPublished(1);
     $em->persist($journal);
     $em->flush();
     $this->createDemoFiles();
     $issueFile = new IssueFile();
     $issueFile->setCurrentLocale('en');
     $issueFile->setTitle('Demo File');
     $issueFile->setDescription('A file');
     $issueFile->setFile('issue.txt');
     $issueFile->setLangCode('en');
     $issueFile->setType(0);
     $issueFile->setVersion(0);
     $issueFile->setUpdatedBy($user->getUsername());
     $issueFileHistory = new FileHistory();
     $issueFileHistory->setFileName('issue.txt');
     $issueFileHistory->setOriginalName('issue.txt');
     $issueFileHistory->setType('issuefiles');
     $em->persist($issueFile);
     $em->persist($issueFileHistory);
     $em->flush();
     $issue = new Issue();
     $issue->setCurrentLocale('en');
     $issue->setJournal($journal);
     $issue->setTitle('First Issue: Hello OJS!');
     $issue->setDescription('First issue of the journal');
     $issue->setNumber(1);
     $issue->setVolume(1);
     $issue->setYear(2015);
     $issue->setSpecial(1);
     $issue->setDatePublished(new \DateTime('now'));
     $issue->setTags('first, guide, tutorial');
     $issue->setDatePublished(new \DateTime('now'));
     $issue->addIssueFile($issueFile);
     $em->persist($issue);
     $em->flush();
     $section = new Section();
     $section->setCurrentLocale('en');
     $section->setJournal($journal);
     $section->setTitle('Tutorials');
     $section->setHideTitle(0);
     $section->setAllowIndex(1);
     $em->persist($section);
     $em->flush();
     $citation1 = new Citation();
     $citation1->setCurrentLocale('en');
     $citation1->setRaw('The Matrix [Motion picture]. (2001). Warner Bros. Pictures.');
     $citation1->setOrderNum(0);
     $em->persist($citation1);
     $em->flush();
     $articleFile = new ArticleFile();
     $articleFile->setCurrentLocale('en');
     $articleFile->setTitle('Demo File');
     $articleFile->setDescription('A file');
     $articleFile->setFile('article.txt');
     $articleFile->setLangCode('en');
     $articleFile->setType(0);
     $articleFile->setVersion(0);
     $articleFile->setUpdatedBy($user->getUsername());
     $articleFileHistory = new FileHistory();
     $articleFileHistory->setFileName('article.txt');
     $articleFileHistory->setOriginalName('article.txt');
     $articleFileHistory->setType('articlefiles');
     $em->persist($articleFile);
     $em->persist($articleFileHistory);
     $em->flush();
     $author = new Author();
     $author->setCurrentLocale('en');
     $author->setTitle('Dr.');
     $author->setFirstName('John');
     $author->setLastName('Doe');
     $author->setEmail('*****@*****.**');
     $em->persist($author);
     $em->flush();
     $article1 = new Article();
     $article1->setCurrentLocale('en');
     $article1->setJournal($journal);
     $article1->setSection($section);
     $article1->setIssue($issue);
     $article1->setTitle('Getting Started with OJS');
     $article1->setAbstract('A tutorial about using OJS');
     $article1->setSubjects('OJS');
     $article1->setKeywords('ojs, intro, starting');
     $article1->setDoi('10.5281/zenodo.14791');
     $article1->setSubmissionDate(new \DateTime('now'));
     $article1->setPubdate(new \DateTime('now'));
     $article1->setAnonymous(0);
     $article1->setFirstPage(1);
     $article1->setLastPage(5);
     $article1->setStatus(ArticleStatuses::STATUS_PUBLISHED);
     $article1->addCitation($citation1);
     $article1->addArticleFile($articleFile);
     $em->persist($article1);
     $em->flush();
     $articleAuthor = new ArticleAuthor();
     $articleAuthor->setAuthor($author);
     $articleAuthor->setArticle($article1);
     $articleAuthor->setAuthorOrder(0);
     $em->persist($articleAuthor);
     $em->flush();
     $checklistItems = [['The title page should include necessary information.', "<ul>\n                    <li>The name(s) of the author(s)</li>\n                     <li>A concise and informative title</li>\n                     <li>The affiliation(s) of the author(s)</li>\n                     <li>The e-mail address, telephone number of the corresponding author </li>\n                 </ul>"], ['Manuscript must be approved.', 'All authors must have read and approved the most recent version of the manuscript.'], ['Manuscript must be <i>spell checked</i>.', 'The most recent version of the manuscript must be spell checked.']];
     foreach ($checklistItems as $checklistItem) {
         $label = $checklistItem[0];
         $detail = $checklistItem[1];
         $item = new SubmissionChecklist();
         $item->setLabel($label);
         $item->setDetail($detail);
         $item->setLocale('en');
         $item->setJournal($journal);
         $em->persist($item);
     }
     $em->flush();
     $periods = ['Monthly', 'Bimonthly', 'Quarterly', 'Triquarterly', 'Biannually', 'Annually', 'Spring', 'Summer', 'Fall', 'Winter'];
     foreach ($periods as $period) {
         $journalPeriod = new Period();
         $journalPeriod->setCurrentLocale('en');
         $journalPeriod->setPeriod($period);
         $em->persist($journalPeriod);
     }
     $em->flush();
 }
 /**
  * @param  int $id Issue's ID
  * @param  int $newJournalId new Journal's ID
  * @param  array $sectionIds Journal's section IDs
  * @return Issue Created issue
  * @throws \Doctrine\DBAL\DBALException
  * @throws \Doctrine\ORM\ORMException
  */
 public function importIssue($id, $newJournalId, $sectionIds)
 {
     /** @var Journal $journal */
     $journal = $this->em->getReference('OjsJournalBundle:Journal', $newJournalId);
     $this->consoleOutput->writeln("Reading issue #" . $id . "... ", true);
     $issueSql = "SELECT * FROM issues WHERE issue_id = :id LIMIT 1";
     $issueStatement = $this->dbalConnection->prepare($issueSql);
     $issueStatement->bindValue('id', $id);
     $issueStatement->execute();
     $settingsSql = "SELECT locale, setting_name, setting_value FROM issue_settings WHERE issue_id = :id";
     $settingsStatement = $this->dbalConnection->prepare($settingsSql);
     $settingsStatement->bindValue('id', $id);
     $settingsStatement->execute();
     $pkpIssue = $issueStatement->fetch();
     $pkpSettings = $settingsStatement->fetchAll();
     $settings = [];
     foreach ($pkpSettings as $setting) {
         $locale = !empty($setting['locale']) ? $setting['locale'] : 'en_US';
         $name = $setting['setting_name'];
         $value = $setting['setting_value'];
         $settings[$locale][$name] = $value;
     }
     $issue = new Issue();
     $issue->setJournal($journal);
     $issue->setVolume(is_numeric($pkpIssue['volume']) ? $pkpIssue['volume'] : '');
     $issue->setNumber($pkpIssue['number']);
     $issue->setYear(DateTime::createFromFormat('Y-m-d H:i:s', $pkpIssue['year'] . '-01-01 00:00:00'));
     $issue->setPublished($pkpIssue['published']);
     $issue->setSpecial(false);
     foreach (array_values($sectionIds) as $sectionId) {
         if ($sectionId !== null) {
             /** @var Section $section */
             $section = $this->em->getReference('OjsJournalBundle:Section', $sectionId);
             $issue->addSection($section);
         }
     }
     // In some instances, imported data is not in a proper date format so DateTime::createFromFormat returns false
     // This part handles cases where data_published column is empty or when the data is in a bad format
     $date = false;
     if (!empty($pkpIssue['date_published'])) {
         // This might assign 'false' to the variable
         $date = DateTime::createFromFormat('Y-m-d H:i:s', $pkpIssue['date_published']);
     }
     // Current date & time is used when date is false
     $issue->setDatePublished($date ? $date : new DateTime());
     $cover = null;
     foreach ($settings as $fieldLocale => $fields) {
         if (!$cover && !empty($fields['fileName'])) {
             $cover = $fields['fileName'];
         }
         $issue->setCurrentLocale(mb_substr($fieldLocale, 0, 2, 'UTF-8'));
         $issue->setTitle(!empty($fields['title']) ? $fields['title'] : '-');
         $issue->setDescription(!empty($fields['description']) ? $fields['description'] : '-');
     }
     if ($cover) {
         $baseDir = '/../web/uploads/journal/imported/';
         $croppedBaseDir = '/../web/uploads/journal/croped/imported/';
         $coverPath = $pkpIssue['journal_id'] . '/' . $cover;
         $pendingDownload = new PendingDownload();
         $pendingDownload->setSource('public/journals/' . $coverPath)->setTarget($baseDir . $coverPath)->setTag('issue-cover');
         $croppedPendingDownload = new PendingDownload();
         $croppedPendingDownload->setSource('public/journals/' . $coverPath)->setTarget($croppedBaseDir . $coverPath)->setTag('issue-cover');
         $history = $this->em->getRepository(FileHistory::class)->findOneBy(['fileName' => 'imported/' . $coverPath]);
         if (!$history) {
             $history = new FileHistory();
             $history->setFileName('imported/' . $coverPath);
             $history->setOriginalName('imported/' . $coverPath);
             $history->setType('journal');
             $this->em->persist($history);
         }
         $this->em->persist($croppedPendingDownload);
         $this->em->persist($pendingDownload);
         $issue->setCover('imported/' . $coverPath);
     }
     $importer = new IssueFileImporter($this->dbalConnection, $this->em, $this->logger, $this->consoleOutput);
     $importer->importIssueFiles($issue, $id, $journal->getSlug());
     $this->em->persist($issue);
     return $issue;
 }
Example #9
0
 /**
  * Get article list by issue_id with orderNum attribute ordered
  * @param  Issue $issue
  * @param  bool $asc
  * @param  int $status default 3 (published)  see Ojs\Common\CommonParams
  * @return Article[]
  */
 public function getOrderedArticlesByIssue(Issue $issue, $asc = false, $status = 3)
 {
     $q = $this->createQueryBuilder('a')->select('a')->where('a.issueId = :issue_id AND a.status = :status')->orderBy('a.orderNum', $asc ? 'ASC' : 'DESC')->setParameter('issue_id', $issue->getId())->setParameter('status', $status)->getQuery();
     $articles = $q->getResult();
     return $articles;
 }
Example #10
0
 /**
  * @param Issue $issue
  * @return string
  */
 public function issueTextGenerate(Issue $issue)
 {
     $issueText = '';
     if ($issue->getDisplayMode() == null || $issue->getDisplayMode() == IssueDisplayModes::SHOW_ALL) {
         if (!empty($issue->getVolume())) {
             $issueText .= $this->translator->trans('volume') . ': ' . $issue->getVolume() . ' ';
         }
         if (!empty($issue->getNumber())) {
             $issueText .= $this->translator->trans('issue') . ': ' . $issue->getNumber();
         }
         if (!empty($issue->getTitle()) && $issue->getTitle() !== '-') {
             $issueText .= ' - ' . $issue->getTitle();
         }
         return $issueText;
     } elseif ($issue->getDisplayMode() == IssueDisplayModes::SHOW_VOLUME_AND_NUMBER) {
         if (!empty($issue->getVolume())) {
             $issueText .= $this->translator->trans('volume') . ': ' . $issue->getVolume() . ' ';
         }
         if (!empty($issue->getNumber())) {
             $issueText .= $this->translator->trans('issue') . ': ' . $issue->getNumber();
         }
         return $issueText;
     } elseif ($issue->getDisplayMode() == IssueDisplayModes::SHOW_TITLE) {
         return $issue->getTitle();
     }
     return $issueText;
 }
Example #11
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $output->writeln('Creating sample data...');
     $em = $this->getContainer()->get('doctrine')->getManager();
     $manipulator = $this->getContainer()->get('fos_user.util.user_manipulator');
     $manipulator->create('sample_author', 'author', '*****@*****.**', false, false);
     $announcement = new AdminAnnouncement();
     $announcement->setTitle('We are online!');
     $announcement->setContent('We are now online and accepting submissions!');
     $em->persist($announcement);
     $em->flush();
     $post = new AdminPost();
     $post->setCurrentLocale('en');
     $post->setTitle('Welcome to OJS!');
     $post->setSlug('Welcome to OJS!');
     $post->setContent('Hello! We are now online and waiting for your submissions. ' . 'Our readers will be able to follow you and read your work ' . 'right after it gets published!');
     $em->persist($post);
     $em->flush();
     $slug = $this->getContainer()->getParameter('defaultPublisherSlug');
     $publisher = new Publisher();
     $publisher->setCurrentLocale('en');
     $publisher->setName('OJS');
     $publisher->setSlug($slug);
     $publisher->setVerified(1);
     $publisher->setStatus(1);
     $em->persist($publisher);
     $em->flush();
     $subject1 = new Subject();
     $subject1->setCurrentLocale('en');
     $subject1->setSubject('Computer Science');
     $subject2 = new Subject();
     $subject2->setCurrentLocale('en');
     $subject2->setSubject('Journalism');
     $em->persist($subject1);
     $em->persist($subject2);
     $em->flush();
     $language1 = new Lang();
     $language1->setCurrentLocale('en');
     $language1->setName('English');
     $language1->setCode('en');
     $language1->setRtl(0);
     $language2 = new Lang();
     $language2->setCurrentLocale('tr');
     $language2->setName('Türkçe');
     $language2->setCode('tr');
     $language2->setRtl(0);
     $em->persist($language1);
     $em->persist($language2);
     $em->flush();
     $articleTypes = ['Research', 'Analysis', 'Clinical Review', 'Practice', 'Research Methods and Reporting', 'Christmas Issue', 'Editorials', 'Blogs', 'Case Reports', 'Letters (rapid responses)', 'Obituaries', 'Personal Views', 'Fillers', 'Minerva Pictures', 'Endgames', 'What Your Patient is Thinking'];
     foreach ($articleTypes as $typeName) {
         $type = new ArticleTypes();
         $type->setCurrentLocale('en');
         $type->setName($typeName);
         $em->persist($type);
     }
     $em->flush();
     $contactTypes = ['Journal Contact', 'Primary Contact', 'Technical Contact', 'Author Support', 'Subscription Support', 'Publisher Support', 'Submission Support', 'Advertising', 'Media'];
     foreach ($contactTypes as $typeName) {
         $type = new ContactTypes();
         $type->setCurrentLocale('en');
         $type->setName($typeName);
         $em->persist($type);
     }
     $em->flush();
     $journal = new Journal();
     $journal->setCurrentLocale('en');
     $journal->setPublisher($publisher);
     $journal->setTitle('Introduction to OJS');
     $journal->setSubtitle('How to use OJS');
     $journal->setTitleAbbr('INTROJS');
     $journal->setUrl('http://ojs.io');
     $journal->setSlug('intro');
     $journal->addSubject($subject1);
     $journal->addSubject($subject2);
     $journal->setMandatoryLang($language2);
     $em->persist($journal);
     $em->flush();
     $issue = new Issue();
     $issue->setCurrentLocale('en');
     $issue->setJournal($journal);
     $issue->setTitle('First Issue: Hello OJS!');
     $issue->setNumber(1);
     $issue->setVolume(1);
     $issue->setYear(2015);
     $issue->setSpecial(1);
     $issue->setTags('fisrt, guide, tutorial');
     $issue->setDatePublished(new \DateTime('now'));
     $em->persist($issue);
     $em->flush();
     $section = new Section();
     $section->setCurrentLocale('en');
     $section->setJournal($journal);
     $section->setTitle('Tutorials');
     $section->setHideTitle(0);
     $section->setAllowIndex(1);
     $em->persist($section);
     $em->flush();
     $citation1 = new Citation();
     $citation1->setCurrentLocale('en');
     $citation1->setRaw('The Matrix [Motion picture]. (2001). Warner Bros. Pictures.');
     $em->persist($citation1);
     $em->flush();
     $article1 = new Article();
     $article1->setCurrentLocale('en');
     $article1->setJournal($journal);
     $article1->setSection($section);
     $article1->setIssue($issue);
     $article1->setTitle('Getting Started with OJS');
     $article1->setKeywords('ojs, intro, starting');
     $article1->setDoi('10.5281/zenodo.14791');
     $article1->setPubdate(new \DateTime('now'));
     $article1->setIsAnonymous(0);
     $article1->setFirstPage(1);
     $article1->setLastPage(5);
     $article1->setStatus(3);
     $article1->addCitation($citation1);
     $em->persist($article1);
     $em->flush();
 }