예제 #1
0
 /**
  * @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] : '';
 }
예제 #2
0
파일: Pages.php 프로젝트: msingi/msingi
 /**
  * @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;
 }