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

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

public editAction ( Request $request, $id ) : RedirectResponse | Response
$request Symfony\Component\HttpFoundation\Request
$id
Результат Symfony\Component\HttpFoundation\RedirectResponse | Symfony\Component\HttpFoundation\Response
    public function editAction(Request $request, $id)
    {
        $journal = $this->get('ojs.journal_service')->getSelectedJournal();
        if ($this->submissionsNotAllowed($request)) {
            return $this->respondAsNotAllowed();
        }
        $em = $this->getDoctrine()->getManager();
        /** @var User $user */
        $user = $this->getUser();
        if (!$journal) {
            $this->throw404IfNotFound($journal);
        }
        /** @var ArticleRepository $articleRepository */
        $articleRepository = $em->getRepository('OjsJournalBundle:Article');
        /** @var Article $article */
        $article = $articleRepository->findOneBy(array('id' => $id, 'submitterUser' => $user, 'status' => ArticleStatuses::STATUS_NOT_SUBMITTED));
        $this->throw404IfNotFound($article);
        $originalAuthors = new ArrayCollection();
        $originalFiles = new ArrayCollection();
        foreach ($article->getArticleAuthors() as $author) {
            $originalAuthors->add($author);
        }
        foreach ($article->getArticleFiles() as $file) {
            $originalFiles->add($file);
        }
        $form = $this->createEditForm($article, $journal);
        $form->handleRequest($request);
        if ($form->isValid()) {
            $k = 1;
            foreach ($article->getArticleAuthors() as $f_articleAuthor) {
                $f_articleAuthor->setAuthorOrder($k);
                $f_articleAuthor->setArticle($article);
                $k++;
            }
            $i = 1;
            foreach ($article->getCitations() as $f_citations) {
                $f_citations->setOrderNum($i);
                $i++;
            }
            foreach ($originalAuthors as $author) {
                if ($article->getArticleAuthors()->contains($author) === false) {
                    $em->remove($author);
                }
            }
            foreach ($originalFiles as $file) {
                if ($article->getArticleFiles()->contains($file) === false) {
                    $em->remove($file);
                }
            }
            foreach ($article->getArticleFiles() as $f_articleFile) {
                $f_articleFile->setVersion(0);
                $f_articleFile->setArticle($article);
            }
            $em->persist($article);
            $em->flush();
            return $this->redirectToRoute('ojs_journal_submission_preview', array('journalId' => $journal->getId(), 'articleId' => $article->getId()));
        }
        return $this->render('OjsJournalBundle:ArticleSubmission:edit.html.twig', array('article' => $article, 'journal' => $journal, 'form' => $form->createView()));
    }