public function subscribeAction(Request $request, $slug, $isJournalHosting = false)
{
$referer = $request->headers->get('referer');
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
/** @var Journal $journal */
$journal = $em->getRepository('OjsJournalBundle:Journal')->findOneBy(array('slug' => $slug));
$this->throw404IfNotFound($journal);
if ($journal->getStatus() !== JournalStatuses::STATUS_PUBLISHED || $journal->getPublisher()->getStatus() !== PublisherStatuses::STATUS_COMPLETE) {
$journal = null;
$this->throw404IfNotFound($journal);
}
$email = $request->get('mail');
$emailConstraint = new EmailConstraint();
$errors = $this->get('validator')->validateValue($email, $emailConstraint);
if (count($errors) > 0 || empty($email)) {
$this->errorFlashBag('invalid.mail');
return $this->redirect($referer);
}
$subscribeMail = new SubscribeMailList();
$subscribeMail->setMail($email);
$subscribeMail->setJournal($journal);
$em->persist($subscribeMail);
$em->flush();
$this->successFlashBag('successfully.subscribed');
return $this->redirect($referer);
}