/** * 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; }