/** * Changeblockorder. * * @param blockorder array of sorted blocks (value = block id) * @param position int zone id * * @return mixed true or Ajax error */ public function changeblockorder() { $this->checkAjaxToken(); $this->throwForbiddenUnless(SecurityUtil::checkPermission('Blocks::', '::', ACCESS_ADMIN)); $blockorder = $this->request->request->get('blockorder'); $position = $this->request->request->get('position'); // remove all blocks from this position $entity = $this->name . '_Entity_BlockPlacement'; $dql = "DELETE FROM $entity p WHERE p.pid = {$position}"; $query = $this->entityManager->createQuery($dql); $query->getResult(); // add new block positions foreach ((array)$blockorder as $order => $bid) { $placement = new Blocks_Entity_BlockPlacement(); $placement->setPid($position); $placement->setBid($bid); $placement->setSortorder($order); $this->entityManager->persist($placement); } $this->entityManager->flush(); return new Zikula_Response_Ajax(array('result' => true)); }