public static function onRender(RendererEvent $event) { $renderer = $event->getRenderer(); self::$application = $event->getApplication(); self::$em = self::$application->getEntityManager(); $content = $renderer->getObject(); $mediaRepository = self::$em->getRepository('BackBee\\ClassContent\\Media\\Image'); $mediasParam = $content->getParamValue('medias'); $linksParam = $content->getParamValue('links'); $slides = []; $i = 0; foreach ($mediasParam as $mediaParam) { if (isset($mediaParam['uid'])) { $media = $mediaRepository->find($mediaParam['uid']); if (null !== $media) { $slides[$i] = []; $slides[$i]['media'] = $media; if (isset($linksParam[$i])) { $slides[$i]['link'] = self::getLink($linksParam[$i]); } } } $i++; } $renderer->assign('slides', $slides); }
public static function onRender(RendererEvent $event) { self::$renderer = $event->getRenderer(); self::$application = self::$renderer->getApplication(); self::$em = self::$application->getEntityManager(); $content = $event->getTarget(); $parentNode = self::getParentNode($content->getParamValue('parent_node')); $selector = ['parentnode' => [$parentNode !== null ? $parentNode->getUid() : null]]; $contents = self::$em->getRepository('BackBee\\ClassContent\\AbstractClassContent')->getSelection($selector, in_array('multipage', $content->getParamValue('multipage')), in_array('recursive', $content->getParamValue('recursive')), (int) $content->getParamValue('start'), (int) $content->getParamValue('limit'), self::$application->getBBUserToken() === null, false, (array) $content->getParamValue('content_to_show'), (int) $content->getParamValue('delta')); $count = $contents instanceof Paginator ? $contents->count() : count($contents); self::$renderer->assign('contents', $contents); self::$renderer->assign('nbContents', $count); self::$renderer->assign('parentNode', $parentNode); }
/** * Computes the URL of a page according to a scheme. * * @param array $scheme The scheme to apply * @param Page $page The page * @param AbstractClassContent $content The optionnal main content of the page * @return string The generated URL */ private function doGenerate($scheme, Page $page, AbstractClassContent $content = null) { $replacement = ['$parent' => $page->isRoot() ? '' : $page->getParent()->getUrl(false), '$title' => StringUtils::urlize($page->getTitle()), '$datetime' => $page->getCreated()->format('ymdHis'), '$date' => $page->getCreated()->format('ymd'), '$time' => $page->getCreated()->format('His')]; $matches = []; if (preg_match_all('/(\\$content->[a-z]+)/i', $scheme, $matches)) { foreach ($matches[1] as $pattern) { $property = explode('->', $pattern); $property = array_pop($property); try { $replacement[$pattern] = StringUtils::urlize($content->{$property}); } catch (\Exception $e) { $replacement[$pattern] = ''; } } } $matches = []; if (preg_match_all('/(\\$ancestor\\[([0-9]+)\\])/i', $scheme, $matches)) { foreach ($matches[2] as $level) { $ancestor = $this->application->getEntityManager()->getRepository('BackBee\\CoreDomain\\NestedNode\\Page')->getAncestor($page, $level); if (null !== $ancestor && $page->getLevel() > $level) { $replacement['$ancestor[' . $level . ']'] = $ancestor->getUrl(false); } else { $replacement['$ancestor[' . $level . ']'] = ''; } } } $url = preg_replace('/\\/+/', '/', str_replace(array_keys($replacement), array_values($replacement), $scheme)); return $this->getUniqueness($page, $url); }
/** * Return the current root of the page to be rendered. * * @return null|BackBee\CoreDomain\NestedNode\Page */ public function getCurrentRoot() { if (null !== $this->getCurrentPage()) { return $this->getCurrentPage()->getRoot(); } elseif (null === $this->getCurrentSite()) { return; } else { return $this->application->getEntityManager()->getRepository('BackBee\\CoreDomain\\NestedNode\\Page')->getRoot($this->getCurrentSite()); } }