/** * @param $name * @return string */ public function __invoke($name) { if ($this->fragments == null) { // $serviceManager = $this->event->getApplication()->getServiceManager(); // get translator $translator = $serviceManager->get('Translator'); $locale = $translator->getLocale(); $language = \Locale::getPrimaryLanguage($locale); // try to get fragments from cache $cache = $serviceManager->get('Application\\Cache'); if ($cache) { $cacheKey = sprintf('page-fragments-%s-%s', $this->page->getId(), $language); $page_fragments = $cache->getItem($cacheKey); } // fetch from the DB if ($page_fragments == null) { /** @var \Doctrine\ORM\EntityManager $entity_manager */ $entity_manager = $serviceManager->get('Doctrine\\ORM\\EntityManager'); $page_fragments_repository = $entity_manager->getRepository('Msingi\\Cms\\Entity\\PageFragment'); $page_fragments = $page_fragments_repository->fetchFragmentsArray($this->page->getId(), $language); } // store to cache if ($cache) { $cache->setItem($cacheKey, $page_fragments); } $this->fragments = $page_fragments; } return isset($this->fragments[$name]) ? $this->fragments[$name] : ''; }
/** * @param string $route * @return \Msingi\Cms\Entity\Page */ public function fetchOrCreate($route) { $page = $this->findOneBy(array('type' => PageType::PAGE_MVC, 'path' => $route)); if ($page == null) { $root = $this->find(1); if ($root == null) { $root = new Page(); $root->setId(1); $root->setType(PageType::PAGE_MVC); $root->setPath('frontend/index'); $root->setTemplate('frontend/index'); $this->getEntityManager()->persist($root); } $page = new Page(); $page->setParent($root); $page->setType(PageType::PAGE_MVC); $page->setPath($route); $page->setTemplate($route); $this->getEntityManager()->persist($page); $this->getEntityManager()->flush(); } return $page; }