public function newAction(Request $request)
{
$journal = $this->get('ojs.journal_service')->getSelectedJournal();
$currentTime = date('H:i:s \\O\\n d/m/Y');
if ($this->submissionsNotAllowed($request) || $journal->getEndingDate() !== null && $currentTime < $journal->getEndingDate()) {
return $this->respondAsNotAllowed();
}
$em = $this->getDoctrine()->getManager();
$session = $this->get('session');
if (!$session->has('submissionFiles')) {
return $this->redirectToRoute('ojs_journal_submission_start', array('journalId' => $journal->getId()));
}
$defaultCountryId = $this->container->getParameter('country_id');
$defaultCountry = $em->getRepository('BulutYazilimLocationBundle:Country')->find($defaultCountryId);
/** @var User $user */
$user = $this->getUser();
if (!$journal) {
return $this->redirectToRoute('ojs_journal_user_register_list');
}
$article = new Article();
$articleAuthor = new ArticleAuthor();
$author = new Author();
$author->setUser($user)->setFirstName($user->getFirstName())->setLastName($user->getLastName())->setEmail($user->getEmail())->setAddress($user->getAddress());
if ($defaultCountry) {
$author->setCountry($defaultCountry);
}
$articleAuthor->setAuthor($author);
$submissionSetting = $em->getRepository('OjsJournalBundle:SubmissionSetting')->findOneBy([]);
$abstractTemplates = [];
if ($submissionSetting) {
foreach ($submissionSetting->getTranslations() as $translation) {
$abstractTemplates[$translation->getLocale()] = $translation->getSubmissionAbstractTemplate();
}
}
$article->setSubmitterUser($user)->setStatus(ArticleStatuses::STATUS_NOT_SUBMITTED)->setJournal($journal)->addArticleFile(new ArticleFile())->addArticleAuthor($articleAuthor);
$defaultLocale = $journal->getMandatoryLang()->getCode();
$article->setCurrentLocale($defaultLocale);
$form = $this->createCreateForm($article, $journal);
$form->handleRequest($request);
if ($request->isMethod('POST')) {
$k = 1;
foreach ($article->getArticleAuthors() as $f_articleAuthor) {
$f_articleAuthor->setAuthorOrder($k);
$f_articleAuthor->setArticle($article);
$k++;
}
$citationCounter = 1;
foreach ($article->getCitations() as $f_citations) {
$f_citations->setOrderNum($citationCounter);
$citationCounter++;
}
foreach ($article->getArticleFiles() as $f_articleFile) {
$f_articleFile->setArticle($article);
$f_articleFile->setVersion(0);
}
$journalSubmissionFiles = $em->getRepository('OjsJournalBundle:JournalSubmissionFile')->findBy(['visible' => true, 'locale' => $request->getLocale()]);
foreach ($session->get('submissionFiles') as $fileKey => $submissionFile) {
if (!is_null($submissionFile)) {
/** @var JournalSubmissionFile $journalEqualFile */
$journalEqualFile = $journalSubmissionFiles[$fileKey];
$articleSubmissionFile = new ArticleSubmissionFile();
$articleSubmissionFile->setTitle($journalEqualFile->getTitle())->setDetail($journalEqualFile->getDetail())->setLocale($journalEqualFile->getLocale())->setRequired($journalEqualFile->getRequired())->setFile($submissionFile)->setArticle($article);
$em->persist($articleSubmissionFile);
}
}
$em->persist($article);
$em->flush();
return $this->redirectToRoute('ojs_journal_submission_preview', array('journalId' => $journal->getId(), 'articleId' => $article->getId()));
}
return $this->render('OjsJournalBundle:ArticleSubmission:new.html.twig', array('article' => $article, 'journal' => $journal, 'form' => $form->createView(), 'abstractTemplates' => $abstractTemplates));
}