/** * {@inheritDoc} */ protected function doLoad(ObjectManager $manager) { $j0 = new Journal(); $j0->setEmail('*****@*****.**'); $j0->setIssn('1234-1234'); $j0->setPublisherName('Test Publisher'); $j0->setPublisherUrl('http://example.com'); $j0->setTitle('I J Testing'); $j0->setUrl('http://journal.example.com'); $j0->setStatus('healthy'); $j0->setUuid('c0a65967-32bd-4ee8-96de-c469743e563a'); $j0->setOjsVersion('2.4.8.0'); $manager->persist($j0); $j0->setContacted(new DateTime('-10 days')); $j0->setNotified(new DateTime('-5 days')); $j1 = new Journal(); $j1->setEmail('*****@*****.**'); $j1->setIssn('4321-4321'); $j1->setPublisherName('Orange Inc'); $j1->setPublisherUrl('http://orangula.dev'); $j1->setTitle('J Oranges'); $j1->setUrl('http://journal.orangula.dev'); $j1->setStatus('new'); $j1->setUuid('A556CBF2-B674-444F-87B7-23DEE36F013D'); $j1->setContacted(new DateTime()); $manager->persist($j1); $manager->flush(); $this->setReference('journal', $j0); }
/** * Build and persist a journal from XML. * * @param SimpleXMLElement $xml * @param string $journal_uuid * * @return Journal */ public function fromXml(SimpleXMLElement $xml, $journal_uuid) { $journal = $this->em->getRepository('AppBundle:Journal')->findOneBy(array('uuid' => $journal_uuid)); if ($journal === null) { $journal = new Journal(); } $journal->setUuid($journal_uuid); $journal->setTitle($this->getXmlValue($xml, '//atom:title')); $journal->setUrl(html_entity_decode($this->getXmlValue($xml, '//pkp:journal_url'))); // & -> & $journal->setEmail($this->getXmlValue($xml, '//atom:email')); $journal->setIssn($this->getXmlValue($xml, '//pkp:issn')); $journal->setPublisherName($this->getXmlValue($xml, '//pkp:publisherName')); $journal->setPublisherUrl(html_entity_decode($this->getXmlValue($xml, '//pkp:publisherUrl'))); // & -> & $this->em->persist($journal); $this->em->flush($journal); return $journal; }
/** * The journal with UUID $uuid has contacted the PLN. Add a record for the * journal if there isn't one, otherwise update the timestamp. * * @param string $uuid * @param string $url * * @return Journal */ private function journalContact($uuid, $url) { $logger = $this->get('monolog.logger.sword'); $em = $this->getDoctrine()->getManager(); $journalRepo = $em->getRepository('AppBundle:Journal'); $journal = $journalRepo->findOneBy(array('uuid' => $uuid)); if ($journal !== null) { $journal->setTimestamp(); if ($journal->getUrl() !== $url) { $logger->warning("journal URL mismatch - {$uuid} - {$journal->getUrl()} - {$url}"); $journal->setUrl($url); } } else { $journal = new Journal(); $journal->setUuid($uuid); $journal->setUrl($url); $journal->setTimestamp(); $journal->setTitle('unknown'); $journal->setIssn('unknown'); $journal->setStatus('new'); $journal->setEmail('*****@*****.**'); $em->persist($journal); } if ($journal->getStatus() !== 'new') { $journal->setStatus('healthy'); } $em->flush($journal); return $journal; }