/** * {@inheritdoc} */ public function getSetting($name) { if (!array_key_exists($name, $this->settings)) { throw new \RuntimeException(sprintf('Unable to find the option `%s` (%s) - define the option in the related BlockServiceInterface', $name, $this->block->getType())); } return $this->settings[$name]; }
/** * {@inheritdoc} */ public function render(BlockInterface $block, Response $response = null) { if ($this->logger) { $this->logger->info(sprintf('[cms::renderBlock] block.id=%d, block.type=%s ', $block->getId(), $block->getType())); } try { $service = $this->blockServiceManager->get($block); $service->load($block); // load the block $response = $service->execute($block, $response); if (!$response instanceof Response) { throw new \RuntimeException('A block service must return a Response object'); } } catch (\Exception $e) { if ($this->logger) { $this->logger->crit(sprintf('[cms::renderBlock] block.id=%d - error while rendering block - %s', $block->getId(), $e->getMessage())); } if ($this->debug) { throw $e; } $response = new Response(); $response->setPrivate(); } return $response; }
/** * @param BlockInterface $block * @param OutputInterface $output * @param int $spance */ public function renderBlock(BlockInterface $block, OutputInterface $output, $extended, $space = 0) { $output->writeln(sprintf("%s <comment>> Id: %d - type: %s - name: %s</comment>", str_repeat(" ", $space), $block->getId(), $block->getType(), $block->getName())); if ($extended) { foreach ($block->getSettings() as $name => $value) { $output->writeln(sprintf("%s %s: %s", str_repeat(" ", $space + 1), $name, var_export($value, 1))); } } foreach ($block->getChildren() as $block) { $this->renderBlock($block, $output, $extended, $space + 1); } }
/** * @param BlockInterface $block * * @return array */ protected function startTracing(BlockInterface $block) { $this->traces[$block->getId()] = $this->stopwatch->start(sprintf('%s (id: %s, type: %s)', $block->getName(), $block->getId(), $block->getType())); return array('name' => $block->getName(), 'type' => $block->getType(), 'duration' => false, 'memory_start' => memory_get_usage(true), 'memory_end' => false, 'memory_peak' => false, 'cache' => array('keys' => array(), 'contextual_keys' => array(), 'handler' => false, 'from_cache' => false, 'ttl' => 0, 'created_at' => false, 'lifetime' => 0, 'age' => 0), 'assets' => array('js' => array(), 'css' => array())); }
/** * @param \Sonata\BlockBundle\Model\BlockInterface $block * @return \Sonata\CacheBundle\Cache\CacheInterface; */ protected function getCacheService(BlockInterface $block) { $type = isset($this->cacheBlocks[$block->getType()]) ? $this->cacheBlocks[$block->getType()] : false; if (!$type) { return false; } return $this->cacheManager->getCacheService($type); }
/** * @todo: this function should be remove into a proper statefull object * * {@inheritdoc} */ public function validate(ErrorElement $errorElement, BlockInterface $block) { if (!$block->getId() && !$block->getType()) { return; } if ($this->inValidate) { return; } // As block can be nested, we only need to validate the main block, no the children try { $this->inValidate = true; $this->get($block)->validateBlock($errorElement, $block); $this->inValidate = false; } catch (\Exception $e) { $this->inValidate = false; } }
/** * Returns the exception filter for given block. * * @param BlockInterface $block * * @return FilterInterface * * @throws \RuntimeException */ public function getBlockFilter(BlockInterface $block) { $type = $block->getType(); $name = isset($this->blockFilters[$type]) ? $this->blockFilters[$type] : $this->defaultFilter; $service = $this->getFilterService($name); if (!$service instanceof FilterInterface) { throw new \RuntimeException(sprintf('The service "%s" is not an exception filter', $name)); } return $service; }
/** * @param BlockInterface $block * * @return array */ protected function createBlocks(BlockInterface $block) { $content = array(); $content['id'] = $block->getId(); $content['name'] = $block->getName(); $content['enabled'] = $block->getEnabled(); $content['position'] = $block->getPosition(); $content['settings'] = $block->getSettings(); $content['type'] = $block->getType(); $content['created_at'] = $block->getCreatedAt()->format('U'); $content['updated_at'] = $block->getUpdatedAt()->format('U'); $content['blocks'] = array(); foreach ($block->getChildren() as $child) { $content['blocks'][] = $this->createBlocks($child); } return $content; }
/** * {@inheritdoc} */ public function validate(ErrorElement $errorElement, BlockInterface $block) { if (!$block->getId() && !$block->getType()) { return; } $this->get($block)->validateBlock($errorElement, $block); }