/** * {@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 * @param array $stats */ protected function stopTracing(BlockInterface $block, array $stats) { $e = $this->traces[$block->getId()]->stop(); $this->traces[$block->getId()] = array_merge($stats, array('duration' => $e->getDuration(), 'memory_end' => memory_get_usage(true), 'memory_peak' => memory_get_peak_usage(true))); $this->traces[$block->getId()]['cache']['lifetime'] = $this->traces[$block->getId()]['cache']['age'] + $this->traces[$block->getId()]['cache']['ttl']; }
/** * @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; } }
/** * {@inheritdoc} */ public function getCacheKeys(BlockInterface $block) { return array('block_id' => $block->getId(), 'updated_at' => $block->getUpdatedAt() ? $block->getUpdatedAt()->format('U') : strtotime('now')); }
/** * {@inheritdoc} */ public function getCacheKeys(BlockInterface $block) { return array('name' => $this->getName(), 'block_id' => $block->getId(), 'updated_at' => $block->getUpdatedAt()->format('U')); }
/** * @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); }