/** * @param Request $request * @return RedirectResponse|Response */ public function newAction(Request $request) { if ($this->submissionsNotAllowed()) { return $this->respondAsNotAllowed(); } $journal = $this->get('ojs.journal_service')->getSelectedJournal(); $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('OkulBilisimLocationBundle:Country')->find($defaultCountryId); /** @var User $user */ $user = $this->getUser(); if (!$journal) { return $this->redirect($this->generateUrl('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); $article->setSubmitterUser($user)->setStatus(ArticleStatuses::STATUS_NOT_SUBMITTED)->setJournal($journal)->addArticleFile(new ArticleFile())->addArticleAuthor($articleAuthor); $locales = []; $submissionLangObjects = $journal->getLanguages(); foreach ($submissionLangObjects as $submissionLangObject) { $locales[] = $submissionLangObject->getCode(); } $defaultLocale = $journal->getMandatoryLang()->getCode(); $article->setCurrentLocale($defaultLocale); $form = $this->createCreateForm($article, $journal, $locales, $defaultLocale); $form->handleRequest($request); if ($request->isMethod('POST')) { $k = 0; foreach ($article->getArticleAuthors() as $f_articleAuthor) { $f_articleAuthor->setAuthorOrder($k); $f_articleAuthor->setArticle($article); $k++; } $citationCounter = 0; 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())); }