public function createAction(Request $request)
{
$journal = $this->get('ojs.journal_service')->getSelectedJournal();
if (!$this->isGranted('CREATE', $journal, 'articles')) {
throw new AccessDeniedException("You not authorized for this page!");
}
$dispatcher = $this->get('event_dispatcher');
$entity = new Article();
$entity = $entity->setJournal($journal);
$form = $this->createCreateForm($entity, $journal);
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
if ($form->isSubmitted()) {
$authorOrder = 1;
$citationOrder = 1;
foreach ($entity->getArticleAuthors() as $author) {
$author->setAuthorOrder($authorOrder++);
$author->setArticle($entity);
}
foreach ($entity->getCitations() as $citation) {
$citation->setOrderNum($citationOrder++);
}
foreach ($entity->getArticleFiles() as $file) {
$file->setVersion(0);
$file->setArticle($entity);
}
$entity->setStatus(ArticleStatuses::STATUS_PUBLISH_READY);
$entity->setSubmissionDate(new \DateTime());
}
$violations = $this->get('validator')->validate($entity, null, ['submission']);
if ($violations->count() == 0) {
$entity->setCurrentLocale($request->getDefaultLocale());
$entity->setStatus(ArticleStatuses::STATUS_PUBLISH_READY);
$event = new JournalItemEvent($entity);
$dispatcher->dispatch(ArticleEvents::PRE_CREATE, $event);
$em->persist($event->getItem());
$em->flush();
$this->successFlashBag('article.successful.create');
$event = new JournalItemEvent($event->getItem());
$dispatcher->dispatch(ArticleEvents::POST_CREATE, $event);
if ($event->getResponse()) {
return $event->getResponse();
}
return $this->redirectToRoute('ojs_journal_article_show', ['id' => $event->getItem()->getId(), 'journalId' => $journal->getId()]);
}
$submissionSetting = $em->getRepository('OjsJournalBundle:SubmissionSetting')->findOneBy([]);
$abstractTemplates = [];
if ($submissionSetting) {
/** @var SubmissionSettingTranslation $translation */
foreach ($submissionSetting->getTranslations() as $translation) {
$abstractTemplates[$translation->getLocale()] = $translation->getSubmissionAbstractTemplate();
}
}
$data = ['entity' => $entity, 'form' => $form->createView(), 'abstractTemplates' => $abstractTemplates];
return $this->render('OjsJournalBundle:Article:new.html.twig', $data);
}