Example #1
0
 /**
  * @param Page $page
  *
  * @return Section
  */
 public static function getBySectionOfSite($page)
 {
     $identifier = sprintf('/multilingual/section/%s', $page->getCollectionID());
     $cache = \Core::make('cache/request');
     $item = $cache->getItem($identifier);
     if (!$item->isMiss()) {
         $returnID = $item->get();
     } else {
         $returnID = null;
         $item->lock();
         if ($page->getPageTypeHandle() == STACKS_PAGE_TYPE) {
             $parent = Page::getByID($page->getCollectionParentID());
             if ($parent->getCollectionPath() == STACKS_PAGE_PATH) {
                 // this is the default multilingual section.
                 return static::getDefaultSection();
             } else {
                 // this is a stack category page type
                 $locale = $parent->getCollectionHandle();
                 return static::getByLocale($locale);
             }
         } else {
             if ($page->isPageDraft() && $page->getPageDraftTargetParentPageID()) {
                 $cParentID = $page->getPageDraftTargetParentPageID();
             } else {
                 $cParentID = $page->getCollectionParentID();
             }
             $parent = \Page::getByID($cParentID);
             $nav = \Core::make('helper/navigation');
             $pages = $nav->getTrailToCollection($parent);
             $pages = array_reverse($pages);
             $pages[] = $parent;
             $pages[] = $page;
             $ids = self::getIDList();
             $returnID = false;
             foreach ($pages as $pc) {
                 if (in_array($pc->getCollectionID(), $ids)) {
                     $returnID = $pc->getCollectionID();
                 }
             }
         }
         $item->set($returnID);
     }
     if ($returnID) {
         return static::getByID($returnID);
     }
 }
Example #2
0
 public function getPageDraftTargetParentPageID()
 {
     return parent::getPageDraftTargetParentPageID();
 }