public function fetchBlock($slotDir, $slotName, $blockName) { $filename = $slotDir . '/blocks/' . $blockName . '.json'; if (!file_exists($filename)) { return null; } if ($this->isProduction) { return file_get_contents($filename); } $block = $this->updateBlock($filename, $slotName, $blockName); if (null === $block) { return null; } $block->setHistory($this->fetchArchivedBlocks($slotDir . '/archive/' . $blockName, $slotName)); return JsonTools::toJson($this->serializer, $block); }
/** * Renders the slots * @param \RedKiteCms\FilesystemEntity\Page $page * * @return array */ protected function renderSlots(Page $page) { $templateRenderer = $this->options['page_renderer']; // We need to render all blocks to avoid problems when a kind ok block is // not present on a page $availableBlocks = array(); $blocks = BlockFactory::createAllBlocks(); foreach ($blocks as $block) { if ($block->isInternal()) { continue; } $availableBlocks[$block->getType()] = JsonTools::toJson($this->options["serializer"], $block); } $templateRenderer->render($page, array('available_blocks' => $availableBlocks)); $slots = $templateRenderer->getSlots(); $cmsBlocks = $templateRenderer->renderCmsBlocks($blocks, $this->options["username"], array('available_blocks' => $availableBlocks)); return array('slots' => $slots, 'cms_blocks' => $cmsBlocks, 'available_blocks' => $availableBlocks); }