Ojs\JournalBundle\Controller\ArticleSubmissionController::newAction PHP Метод

newAction() публичный Метод

public newAction ( Request $request ) : RedirectResponse | Response
$request Symfony\Component\HttpFoundation\Request
Результат Symfony\Component\HttpFoundation\RedirectResponse | Symfony\Component\HttpFoundation\Response
    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));
    }