/** * Triggers all subelements in order to fetch the additional navigation * entries. * * @param class_module_pages_page $objPage * * @see class_element_portal::getNavigationEntries() * @return class_module_navigation_point[]|array * @since 4.0 */ private static function getAdditionalEntriesForPage(class_module_pages_page $objPage) { $arrReturn = array(); $objLanguage = new class_module_languages_language(); $arrPlainElements = class_module_pages_pageelement::getPlainElementsOnPage($objPage->getSystemid(), true, $objLanguage->getStrPortalLanguage()); $strOldPageName = $objPage->getParam("page"); foreach ($arrPlainElements as $arrOneElementOnPage) { //Build the class-name for the object $strClassname = uniSubstr($arrOneElementOnPage["element_class_portal"], 0, -4); if ($strClassname::providesNavigationEntries()) { /** @var class_element_portal $objElement */ $objElement = new $strClassname(new class_module_pages_pageelement($arrOneElementOnPage["system_id"])); $objElement->setParam("page", $objPage->getStrName()); $arrNavigationPoints = $objElement->getNavigationEntries(); if ($arrNavigationPoints !== false) { $arrReturn = array_merge($arrReturn, $arrNavigationPoints); } } } $objPage->setParam("page", $strOldPageName); return $arrReturn; }