/**
  * 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;
 }