public function arrangeAction(Request $request, $id)
{
$journal = $this->get('ojs.journal_service')->getSelectedJournal();
if (!$this->isGranted('EDIT', $journal, 'issues')) {
throw new AccessDeniedException("You are not authorized for edit this journal's issue!");
}
$em = $this->getDoctrine()->getManager();
/** @var Issue $issue */
$issue = $em->getRepository('OjsJournalBundle:Issue')->find($id);
$this->throw404IfNotFound($issue);
/** @var ArticleRepository $articleRepo */
$articleRepo = $em->getRepository('OjsJournalBundle:Article');
if ($request->isMethod('POST') && $request->get('articleId')) {
// update with with new values
$articleIds = $request->get('articleId');
$orders = $request->get('order');
$firstPages = $request->get('firstPage');
$lastPages = $request->get('lastPage');
foreach ($articleIds as $i => $articleId) {
/** @var Article $article */
$article = $articleRepo->find($articleId);
$this->throw404IfNotFound($article);
$article->setOrderNum((int) $orders[$i]);
$article->setFirstPage((int) $firstPages[$i]);
$article->setLastPage((int) $lastPages[$i]);
$em->persist($article);
}
$em->flush();
$this->successFlashBag('successfully.arranged.articles');
}
$articles = $articleRepo->getOrderedArticlesByIssue($issue, true);
$articlesUnissued = $articleRepo->getArticlesUnissued();
$sections = $journal->getSections();
$data = ['articles' => $articles, 'journal' => $journal, 'issue' => $issue, 'sections' => $sections, 'articlesUnissued' => $articlesUnissued];
return $this->render('OjsJournalBundle:Issue:arrange.html.twig', $data);
}