/** * @Route("/changeorder", options={"expose"=true}) * @Method("POST") * * Changeblockorder. * * @param Request $request * * blockorder array of sorted blocks (value = block id) * position int zone id * * @return AjaxResponse|ForbiddenResponse true or Ajax error */ public function changeblockorderAction(Request $request) { $this->checkAjaxToken(); if (!SecurityUtil::checkPermission('ZikulaBlocksModule::', '::', ACCESS_ADMIN)) { return new ForbiddenResponse($this->__('No permission for this action.')); } $blockorder = $request->request->get('blockorder', array()); $position = $request->request->get('position'); // remove all blocks from this position $query = $this->entityManager->createQueryBuilder()->delete()->from('ZikulaBlocksModule:BlockPlacementEntity', 'p')->where('p.pid = :pid')->setParameter('pid', $position)->getQuery(); $query->getResult(); // add new block positions foreach ((array) $blockorder as $order => $bid) { $placement = new BlockPlacementEntity(); $placement->setPid($position); $placement->setBid($bid); $placement->setSortorder($order); $this->entityManager->persist($placement); } $this->entityManager->flush(); return new AjaxResponse(array('result' => true)); }