public function memberSortAction(Request $request, $boardId)
{
$em = $this->getDoctrine()->getManager();
$journal = $this->get('ojs.journal_service')->getSelectedJournal();
$members = $em->getRepository(BoardMember::class)->findBy(['board' => $boardId]);
usort($members, function ($a, $b) {
return $a->getSeq() > $b->getSeq();
});
$sortData = [];
foreach ($members as $member) {
$sortData[$member->getId()] = $member->getSeq();
}
if ($request->getMethod() == 'POST' && $request->request->has('sortData')) {
$sortData = json_decode($request->request->get('sortData'));
foreach ($sortData as $memberId => $order) {
foreach ($members as $member) {
if ($member->getId() == $memberId) {
$member->setSeq($order);
$em->persist($member);
}
}
}
$em->flush();
$this->successFlashBag('successful.update');
return $this->redirectToRoute('ojs_journal_board_member_sort', ['journalId' => $journal->getId(), 'boardId' => $boardId]);
}
return $this->render('OjsJournalBundle:Board:member_sort.html.twig', ['members' => $members, 'jsonSortData' => json_encode($sortData), 'boardId' => $boardId]);
}