Ejemplo n.º 1
0
 /**
  * Changeblockorder.
  *
  * @param blockorder array of sorted blocks (value = block id)
  * @param position int zone id
  *
  * @return mixed true or Ajax error
  */
 public function changeblockorderAction()
 {
     $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 BlockPlacement();
         $placement->setPid($position);
         $placement->setBid($bid);
         $placement->setSortorder($order);
         $this->entityManager->persist($placement);
     }
     $this->entityManager->flush();
     return new AjaxResponse(array('result' => true));
 }
Ejemplo n.º 2
0
 /**
  * Create a new block.
  *
  * @param string $block ['title'] the title of the block.
  * @param string $block ['description'] the description of the block.
  * @param int    $block ['mid'] the module ID of the block.
  * @param string $block ['language'] the language of the block.
  * @param int    $block ['bkey'] the key of the block.
  *
  * @return mixed block Id on success, false on failure.
  */
 public function create($args)
 {
     // Argument check
     if (!isset($args['title']) || !isset($args['description']) || !isset($args['mid']) || !isset($args['language']) || !isset($args['collapsable']) || !isset($args['defaultstate']) || !isset($args['bkey'])) {
         throw new \InvalidArgumentException('Invalid/missing arguments');
     }
     // Security check
     if (!System::isInstalling() && !SecurityUtil::checkPermission('Blocks::', "{$args['bkey']}:{$args['title']}:", ACCESS_ADD)) {
         throw new \Zikula\Framework\Exception\ForbiddenException();
     }
     // optional arguments
     if (!isset($args['content']) || !is_string($args['content'])) {
         $args['content'] = '';
     }
     $block = array('title' => $args['title'], 'description' => $args['description'], 'language' => $args['language'], 'collapsable' => $args['collapsable'], 'mid' => $args['mid'], 'defaultstate' => $args['defaultstate'], 'bkey' => $args['bkey'], 'content' => $args['content']);
     $item = new Block();
     $item->merge($block);
     $this->entityManager->persist($item);
     $this->entityManager->flush();
     // insert block positions for this block
     if (isset($args['positions']) && is_array($args['positions'])) {
         foreach ($args['positions'] as $position) {
             $placement = new BlockPlacement();
             $placement->setPid($position);
             $placement->setBid($item['bid']);
             $this->entityManager->persist($placement);
         }
         $this->entityManager->flush();
     }
     return $item['bid'];
 }