/** * @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); } }
public function getPageDraftTargetParentPageID() { return parent::getPageDraftTargetParentPageID(); }