/** * Returns the target page for a page with internal target * @todo use this everywhere (resolver!) * @param \Cx\Core\ContentManager\Model\Entity\Page $page */ public function getTargetPage($page) { if (!$page->isTargetInternal()) { throw new PageRepositoryException('Tried to get target node, but page has no internal target'); } // TODO: basically the method \Cx\Core\ContentManager\Model\Entity\Page::cutTarget() would provide us a ready to use $crit array // Check if we could directly use the array from cutTarget() and implement a public method to cutTarget() $nodeId = $page->getTargetNodeId(); $module = $page->getTargetModule(); $cmd = $page->getTargetCmd(); $langId = $page->getTargetLangId(); if ($langId == 0) { $langId = FRONTEND_LANG_ID; } $page = $this->findOneByModuleCmdLang($module, $cmd, $langId); if (!$page) { $page = $this->findOneByModuleCmdLang($module, $cmd . '_' . $langId, FRONTEND_LANG_ID); } if (!$page) { $page = $this->findOneByModuleCmdLang($module, $langId, FRONTEND_LANG_ID); } if (!$page) { $page = $this->findOneBy(array('nodeIdShadowed' => $nodeId, 'lang' => $langId)); } return $page; }
public function isTargetInternal() { $this->_load(); return parent::isTargetInternal(); }