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()));
}