/** * Create a new position or edit an existing position. * * @Route("/edit/{pid}", requirements={"pid" = "^[1-9]\d*$"}) * @Theme("admin") * @Template * * @param BlockPositionEntity $positionEntity * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function editAction(BlockPositionEntity $positionEntity) { if (!$this->hasPermission('ZikulaBlocksModule::', '::', ACCESS_ADMIN)) { throw new AccessDeniedException(); } $allBlocks = $this->getDoctrine()->getManager()->getRepository('ZikulaBlocksModule:BlockEntity')->findAll(); $assignedBlocks = []; foreach ($positionEntity->getPlacements() as $blockPlacement) { $bid = $blockPlacement->getBlock()->getBid(); foreach ($allBlocks as $key => $allblock) { if ($allblock->getBid() == $bid) { unset($allBlocks[$key]); } } $assignedBlocks[] = $blockPlacement->getBlock(); } return ['position' => $positionEntity, 'positionChoices' => $this->getDoctrine()->getRepository('ZikulaBlocksModule:BlockPositionEntity')->getPositionChoiceArray(), 'assignedblocks' => $assignedBlocks, 'unassignedblocks' => $allBlocks]; }