private function processSinglePoint(class_module_navigation_point $objPoint)
 {
     $strReturn = "";
     $bitError = false;
     $strReturn .= $objPoint->getStrName() . ": ";
     if ($objPoint->getStrPageI() == "" && $objPoint->getStrPageE() == "") {
         $strReturn .= $this->getLang("systemtask_navigationcheck_invalidEmpty");
         $bitError = true;
     } else {
         if ($objPoint->getStrPageI() != "" && $objPoint->getStrPageE() != "") {
             $strReturn .= $this->getLang("systemtask_navigationcheck_invalidBoth");
             $bitError = true;
         } else {
             if ($objPoint->getStrPageI() != "" && $objPoint->getStrPageE() == "") {
                 //try to load internal page and check if it exists
                 $objPage = class_module_pages_page::getPageByName($objPoint->getStrPageI());
                 if ($objPage == null) {
                     $strReturn .= $this->getLang("systemtask_navigationcheck_invalidInternal") . " " . $objPoint->getStrPageI() . ")";
                     $bitError = true;
                 } else {
                     $strReturn .= $this->getLang("systemtask_navigationcheck_valid") . " " . $objPoint->getStrPageI() . $objPoint->getStrPageE() . ")";
                 }
             } else {
                 $strReturn .= $this->getLang("systemtask_navigationcheck_valid") . " " . $objPoint->getStrPageI() . $objPoint->getStrPageE() . ")";
             }
         }
     }
     if ($bitError) {
         $strReturn = "<b>" . $strReturn . "</b>";
     }
     return $strReturn . "<br />";
 }
 /**
  * Fetches all child-nodes of the passed node.
  * Used by the tree-view in module-navigation admin view.
  *
  * @return string
  * @since 3.3.0
  * @xml
  * @permissions view
  */
 protected function actionGetChildNodes()
 {
     $arrNavigations = class_module_navigation_point::getNaviLayer($this->getSystemid());
     $arrReturn = array();
     if (count($arrNavigations) > 0) {
         /** @var class_module_navigation_point $objSinglePoint */
         foreach ($arrNavigations as $objSinglePoint) {
             if ($objSinglePoint->rightView()) {
                 $arrReturn[] = array("data" => array("title" => class_adminskin_helper::getAdminImage($objSinglePoint->getStrIcon()) . "&nbsp;" . $objSinglePoint->getStrDisplayName()), "state" => count(class_module_navigation_point::getNaviLayer($objSinglePoint->getSystemid())) == 0 ? "" : "closed", "attr" => array("id" => $objSinglePoint->getSystemid(), "systemid" => $objSinglePoint->getSystemid(), "link" => class_link::getLinkAdminHref("navigation", "list", "&systemid=" . $objSinglePoint->getSystemid(), false)));
             }
         }
     }
     $objCurNode = class_objectfactory::getInstance()->getObject($this->getSystemid());
     if ($objCurNode instanceof class_module_navigation_tree) {
         $arrReturn = array("data" => array("title" => class_adminskin_helper::getAdminImage($objCurNode->getStrIcon()) . "&nbsp;" . $objCurNode->getStrDisplayName()), "state" => "", "attr" => array("id" => $objCurNode->getSystemid(), "systemid" => $objCurNode->getSystemid(), "link" => ""), "children" => $arrReturn);
     }
     class_response_object::getInstance()->setStrResponseType(class_http_responsetypes::STR_TYPE_JSON);
     return json_encode($arrReturn);
 }
 /**
  * Creates the html-code for one single navigationpoint. The check if the user has the needed rights should have been made before!
  *
  * @param class_module_navigation_point $objPointData
  * @param bool $bitActive
  * @param int $intLevel
  * @param bool $bitFirst
  * @param bool $bitLast
  *
  * @return string
  */
 private function createNavigationPoint(class_module_navigation_point $objPointData, $bitActive, $intLevel, $bitFirst = false, $bitLast = false)
 {
     //and start to create a link and all needed stuff
     $arrTemp = array();
     $arrTemp["page_intern"] = $objPointData->getStrPageI();
     $arrTemp["page_extern"] = $objPointData->getStrPageE();
     $arrTemp["systemid"] = $objPointData->getSystemid();
     $arrTemp["text"] = $objPointData->getStrName();
     $arrTemp["link"] = getLinkPortal($arrTemp["page_intern"], $arrTemp["page_extern"], $objPointData->getStrTarget(), $arrTemp["text"], $objPointData->getStrLinkAction(), "", $objPointData->getStrLinkSystemid());
     $arrTemp["href"] = getLinkPortalHref($arrTemp["page_intern"], $arrTemp["page_extern"], $objPointData->getStrLinkAction(), "", $objPointData->getStrLinkSystemid());
     $arrTemp["target"] = $objPointData->getStrTarget();
     if ($objPointData->getStrImage() != "") {
         $arrTemp["image"] = getLinkPortal($arrTemp["page_intern"], $arrTemp["page_extern"], $objPointData->getStrTarget(), "<img src=\"" . _webpath_ . $objPointData->getStrImage() . "\" border=\"0\" alt=\"" . $arrTemp["text"] . "\"/>", $objPointData->getStrLinkAction(), "", $objPointData->getStrSystemid());
         $arrTemp["image_src"] = $objPointData->getStrImage();
     }
     if ($objPointData->getStrPageI() != "") {
         $objPage = class_module_pages_page::getPageByName($objPointData->getStrPageI());
         if ($objPage != null && $objPage->getIntLmTime() != "") {
             $arrTemp["lastmodified"] = strftime("%Y-%m-%dT%H:%M:%S", $objPage->getIntLmTime());
         }
     }
     //Load the correct template
     $strSection = "level_" . $intLevel . "_" . ($bitActive ? "active" : "inactive") . ($bitFirst ? "_first" : "") . ($bitLast ? "_last" : "");
     $strTemplateId = $this->objTemplate->readTemplate("/module_navigation/" . $this->arrElementData["navigation_template"], $strSection);
     //Fill the template
     $strReturn = $this->objTemplate->fillTemplate($arrTemp, $strTemplateId, false);
     //BUT: if we received an empty string and are in the situation of a first or last point, then maybe the template
     //     didn't supply a first / last section. so we'll try to load a regular point
     if ($strReturn == "" && ($bitFirst || $bitLast)) {
         $strSection = "level_" . $intLevel . "_" . ($bitActive ? "active" : "inactive");
         $strTemplateId = $this->objTemplate->readTemplate("/module_navigation/" . $this->arrElementData["navigation_template"], $strSection);
         //And fill it once more
         $strReturn = $this->objTemplate->fillTemplate($arrTemp, $strTemplateId, false);
     }
     return $strReturn;
 }
 /**
  * Does the hard work: installs the module and registers needed constants
  *
  * @return string
  */
 public function install()
 {
     //search the master page
     $objMaster = class_module_pages_page::getPageByName("master");
     if ($objMaster != null) {
         $this->strMasterID = $objMaster->getSystemid();
     }
     //fetch navifolder-id
     $strNaviFolderId = "";
     $arrFolder = class_module_pages_folder::getFolderList();
     foreach ($arrFolder as $objOneFolder) {
         if ($objOneFolder->getStrName() == "mainnavigation") {
             $strNaviFolderId = $objOneFolder->getSystemid();
         }
     }
     $strReturn = "";
     $strReturn .= "Creating new mainnavigation-tree\n";
     $objNaviTree = new class_module_navigation_tree();
     $objNaviTree->setStrName("mainnavigation");
     $objNaviTree->setStrFolderId($strNaviFolderId);
     $objNaviTree->updateObjectToDb();
     $strTreeId = $objNaviTree->getSystemid();
     $strReturn .= "ID of new navigation-tree: " . $strTreeId . "\n";
     $strReturn .= "Creating new portalnavigation-tree\n";
     $objNaviTree = new class_module_navigation_tree();
     $objNaviTree->setStrName("portalnavigation");
     $objNaviTree->updateObjectToDb();
     $strTreePortalId = $objNaviTree->getSystemid();
     $strReturn .= "ID of new navigation-tree: " . $strTreePortalId . "\n";
     $strReturn .= "Creating navigation points\n";
     $objNaviPoint = new class_module_navigation_point();
     $objNaviPoint->setStrName("Home");
     $objNaviPoint->setStrPageI("index");
     $objNaviPoint->updateObjectToDb($strTreePortalId);
     if ($this->strMasterID != "") {
         $strReturn .= "Adding mainnavigation to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("navigation") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("mastermainnavi_navigation");
             $objPagelement->setStrName("mastermainnavi");
             $objPagelement->setStrElement("navigation");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                                SET navigation_id= ?,\n                                    navigation_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strTreeId, "mainnavi.tpl", $strElementId))) {
                 $strReturn .= "Navigation element created.\n";
             } else {
                 $strReturn .= "Error creating navigation element.\n";
             }
         }
         $strReturn .= "Adding portalnavigation to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("navigation") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("masterportalnavi_navigation");
             $objPagelement->setStrName("masterportalnavi");
             $objPagelement->setStrElement("navigation");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                                SET navigation_id= ?,\n                                    navigation_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strTreePortalId, "portalnavi.tpl", $strElementId))) {
                 $strReturn .= "Navigation element created.\n";
             } else {
                 $strReturn .= "Error creating navigation element.\n";
             }
         }
         $strReturn .= "Adding pathnavigation to master page\n";
         $strReturn .= "ID of master page: " . $this->strMasterID . "\n";
         if (class_module_pages_element::getElement("navigation") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("masterpathnavi_navigation");
             $objPagelement->setStrName("masterpathnavi");
             $objPagelement->setStrElement("navigation");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                                SET navigation_id= ?,\n                                    navigation_template = ?\n                                WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array($strTreeId, "breadcrumbnavi.tpl", $strElementId))) {
                 $strReturn .= "Navigation element created.\n";
             } else {
                 $strReturn .= "Error creating navigation element.\n";
             }
         }
     }
     $strReturn .= "Creating simple sitemap...\n";
     $objPage = new class_module_pages_page();
     $objPage->setStrName("sitemap");
     $objPage->setStrBrowsername("Sitemap");
     $objPage->setStrTemplate("standard.tpl");
     $objPage->updateObjectToDb();
     $strSitemapId = $objPage->getSystemid();
     $strReturn .= "ID of new page: " . $strSitemapId . "\n";
     $strReturn .= "Adding sitemap to new page\n";
     if (class_module_pages_element::getElement("navigation") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
         $objPagelement->setStrName("special");
         $objPagelement->setStrElement("navigation");
         $objPagelement->updateObjectToDb($strSitemapId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_navigation\n                            SET navigation_id=?,\n                                navigation_template = ?\n                                WHERE content_id = ?";
         if ($this->objDB->_pQuery($strQuery, array($strTreeId, "sitemap.tpl", $strElementId))) {
             $strReturn .= "Sitemapelement created.\n";
         } else {
             $strReturn .= "Error creating sitemapelement.\n";
         }
     }
     $strReturn .= "Adding headline-element to new page\n";
     if (class_module_pages_element::getElement("row") != null) {
         $objPagelement = new class_module_pages_pageelement();
         $objPagelement->setStrPlaceholder("headline_row");
         $objPagelement->setStrName("headline");
         $objPagelement->setStrElement("row");
         $objPagelement->updateObjectToDb($strSitemapId);
         $strElementId = $objPagelement->getSystemid();
         $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                            SET paragraph_title = ?\n                          WHERE content_id = ? ";
         if ($this->objDB->_pQuery($strQuery, array("Sitemap", $strElementId))) {
             $strReturn .= "Headline element created.\n";
         } else {
             $strReturn .= "Error creating headline element.\n";
         }
     }
     $strReturn .= "Creating navigation points\n";
     $objNaviPoint = new class_module_navigation_point();
     $objNaviPoint->setStrName("Sitemap");
     $objNaviPoint->setStrPageI("sitemap");
     $objNaviPoint->updateObjectToDb($strTreePortalId);
     $strReturn .= "ID of new navigation point " . $objNaviPoint->getSystemid() . ".\n";
     $objNaviPoint = new class_module_navigation_point();
     if ($this->strContentLanguage == "de") {
         $objNaviPoint->setStrName("Impressum");
     } else {
         $objNaviPoint->setStrName("Imprint");
     }
     $objNaviPoint->setStrPageI("imprint");
     $objNaviPoint->updateObjectToDb($strTreePortalId);
     $strReturn .= "ID of new navigation point " . $objNaviPoint->getSystemid() . ".\n";
     return $strReturn;
 }
 /**
  * @param string $strParentId
  *
  * @return array
  */
 private function getNavigationNodesHelper($strParentId)
 {
     $arrFoldersDB = class_module_mediamanager_file::loadFilesDB($strParentId, class_module_mediamanager_file::$INT_TYPE_FOLDER, true);
     $arrReturn = array();
     foreach ($arrFoldersDB as $objOneFolder) {
         $objPoint = new class_module_navigation_point();
         $objPoint->setIntRecordStatus(1);
         $objPoint->setStrName($objOneFolder->getStrName());
         $objPoint->setStrPageI($this->getPagename());
         $objPoint->setSystemid($objOneFolder->getSystemid());
         $objPoint->setStrLinkSystemid($objOneFolder->getSystemid());
         $objPoint->setStrLinkAction("mediaFolder");
         $objPoint->setBitIsForeignNode(true);
         $arrTemp = array("node" => $objPoint, "subnodes" => $this->getNavigationNodesHelper($objOneFolder->getSystemid()));
         $arrReturn[] = $arrTemp;
     }
     return $arrReturn;
 }
 /**
  * Loads the level of pages and/or folders stored under a single systemid.
  * Transforms a page- or a folder-node into a navigation-node.
  * This node is used for portal-actions only, so there's no way to edit the node.
  *
  * @param string $strSourceId
  *
  * @return class_module_navigation_point[]|array
  * @since 3.4
  */
 private static function loadPageLevelToNavigationNodes($strSourceId)
 {
     $arrPages = class_module_pages_page::getObjectList($strSourceId);
     $arrReturn = array();
     //transform the sublevel
     foreach ($arrPages as $objOneEntry) {
         //validate status
         if ($objOneEntry->getIntRecordStatus() == 0 || !$objOneEntry->rightView()) {
             continue;
         }
         $objLanguage = new class_module_languages_language();
         if ($objOneEntry instanceof class_module_pages_page) {
             //validate if the page to be linked has a template assigned and at least a single element created
             if ($objOneEntry->getIntType() == class_module_pages_page::$INT_TYPE_ALIAS || $objOneEntry->getStrTemplate() != "" && count(class_module_pages_pageelement::getPlainElementsOnPage($objOneEntry->getSystemid(), true, $objLanguage->getStrPortalLanguage())) > 0) {
                 $objPoint = new class_module_navigation_point();
                 $objPoint->setStrName($objOneEntry->getStrBrowsername() != "" ? $objOneEntry->getStrBrowsername() : $objOneEntry->getStrName());
                 $objPoint->setIntRecordStatus(1);
                 //if in alias mode, then check what type of target is requested
                 if ($objOneEntry->getIntType() == class_module_pages_page::$INT_TYPE_ALIAS) {
                     $strAlias = uniStrtolower($objOneEntry->getStrAlias());
                     if (uniStrpos($strAlias, "http") !== false) {
                         $objPoint->setStrPageE($objOneEntry->getStrAlias());
                     } else {
                         $objPoint->setStrPageI($objOneEntry->getStrAlias());
                     }
                     $objPoint->setStrTarget($objOneEntry->getStrTarget());
                 } else {
                     $objPoint->setStrPageI($objOneEntry->getStrName());
                 }
                 $objPoint->setSystemid($objOneEntry->getSystemid());
                 $arrReturn[] = $objPoint;
             }
         }
     }
     //merge with elements on the page - if given
     /** @var $objInstance class_module_pages_page */
     $objInstance = class_objectfactory::getInstance()->getObject($strSourceId);
     if ($objInstance instanceof class_module_pages_page) {
         if ($objInstance->getIntType() != class_module_pages_page::$INT_TYPE_ALIAS) {
             $arrReturn = array_merge($arrReturn, self::getAdditionalEntriesForPage($objInstance));
         }
         //else
         //    $arrReturn = array_merge($arrReturn, self::getAdditionalEntriesForPage(class_module_pages_page::getPageByName($objInstance->getStrAlias())));
     }
     return $arrReturn;
 }
 /**
  * Loads a singe level of nodes, internal recursion helper
  *
  * @param string $strParentNode
  *
  * @return array
  */
 private function loadSingleLevel($strParentNode)
 {
     $arrReturn = array();
     $arrCurLevel = class_module_navigation_point::getDynamicNaviLayer($strParentNode);
     if (isset($arrCurLevel["node"]) && isset($arrCurLevel["subnodes"])) {
         //switch between added nodes and "real" nodes
         $arrTemp = array();
         $arrTemp["node"] = $arrCurLevel["node"];
         $arrTemp["subnodes"] = $arrCurLevel["subnodes"];
         $arrReturn[] = $arrCurLevel;
     }
     /** @var class_module_navigation_point $objOneNode */
     foreach ($arrCurLevel as $strKey => $objOneNode) {
         if ($strKey !== "node" && $strKey !== "subnodes") {
             if ($objOneNode->getIntRecordStatus() == 1 && $objOneNode->rightView()) {
                 $arrTemp = array();
                 $arrTemp["node"] = $objOneNode;
                 $arrTemp["subnodes"] = $this->loadSingleLevel($objOneNode->getSystemid());
                 $arrReturn[] = $arrTemp;
             }
         }
     }
     return $arrReturn;
 }
 /**
  * Does the hard work: installs the module and registers needed constants
  */
 public function install()
 {
     $strReturn = "";
     //fetch navifolder-id
     //navigations installed?
     $objModule = null;
     try {
         $objModule = class_module_system_module::getModuleByName("pages", true);
     } catch (class_exception $objException) {
         $objModule = null;
     }
     if ($objModule != null) {
         $strSystemFolderId = "";
         $arrFolder = class_module_pages_folder::getFolderList();
         foreach ($arrFolder as $objOneFolder) {
             if ($objOneFolder->getStrName() == "_system") {
                 $strSystemFolderId = $objOneFolder->getSystemid();
             }
         }
         //search the master page
         $objMaster = class_module_pages_page::getPageByName("master");
         if ($objMaster != null) {
             $this->strMasterID = $objMaster->getSystemid();
         }
         $strReturn .= "Adding search-element to master page\n";
         if ($this->strMasterID != "" && class_module_pages_element::getElement("search") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("mastersearch_search");
             $objPagelement->setStrName("mastersearch");
             $objPagelement->setStrElement("search");
             $objPagelement->updateObjectToDb($this->strMasterID);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_search\n                                        SET search_template = ?,\n                                            search_amount = ?,\n                                            search_page = ?\n                                        WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array("search_ajax_small.tpl", 0, "search", $strElementId))) {
                 $strReturn .= "Search element created.\n";
             } else {
                 $strReturn .= "Error creating search element.\n";
             }
         }
         $strReturn .= "Creating search page\n";
         $objPage = new class_module_pages_page();
         $objPage->setStrName("search");
         if ($this->strContentLanguage == "de") {
             $objPage->setStrBrowsername("Suchergebnisse");
         } else {
             $objPage->setStrBrowsername("Search results");
         }
         $objPage->setStrTemplate("standard.tpl");
         $objPage->updateObjectToDb($strSystemFolderId);
         $strSearchresultsId = $objPage->getSystemid();
         $strReturn .= "ID of new page: " . $strSearchresultsId . "\n";
         $strReturn .= "Adding search-element to new page\n";
         if (class_module_pages_element::getElement("search") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("special_news|guestbook|downloads|gallery|galleryRandom|form|tellafriend|maps|search|navigation|faqs|postacomment|votings|userlist|rssfeed|tagto|portallogin|portalregistration|portalupload|directorybrowser|lastmodified|tagcloud|downloadstoplist|flash|mediaplayer|tags|eventmanager");
             $objPagelement->setStrName("special");
             $objPagelement->setStrElement("search");
             $objPagelement->updateObjectToDb($strSearchresultsId);
             $strElementId = $objPagelement->getSystemid();
             $strQuery = "UPDATE " . _dbprefix_ . "element_search\n                                        SET search_template = ?,\n                                            search_amount = ?,\n                                            search_page = ?\n                                        WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, array("search_ajax.tpl", 0, "", $strElementId))) {
                 $strReturn .= "Search element created.\n";
             } else {
                 $strReturn .= "Error creating search element.\n";
             }
         }
         $strReturn .= "Adding headline-element to new page\n";
         if (class_module_pages_element::getElement("row") != null) {
             $objPagelement = new class_module_pages_pageelement();
             $objPagelement->setStrPlaceholder("headline_row");
             $objPagelement->setStrName("headline");
             $objPagelement->setStrElement("row");
             $objPagelement->updateObjectToDb($strSearchresultsId);
             $strElementId = $objPagelement->getSystemid();
             $arrParams = array();
             if ($this->strContentLanguage == "de") {
                 $arrParams = array("Suchergebnisse", $strElementId);
             } else {
                 $arrParams = array("Search results", $strElementId);
             }
             $strQuery = "UPDATE " . _dbprefix_ . "element_paragraph\n                                        SET paragraph_title = ?\n                                        WHERE content_id = ?";
             if ($this->objDB->_pQuery($strQuery, $arrParams)) {
                 $strReturn .= "Headline element created.\n";
             } else {
                 $strReturn .= "Error creating headline element.\n";
             }
         }
     }
     $strReturn .= "Creating navigation point.\n";
     //navigations installed?
     $objModule = null;
     try {
         $objModule = class_module_system_module::getModuleByName("navigation", true);
     } catch (class_exception $objException) {
         $objModule = null;
     }
     if ($objModule != null) {
         $objNavi = class_module_navigation_tree::getNavigationByName("portalnavigation");
         $strTreeId = $objNavi->getSystemid();
         $objNaviPoint = new class_module_navigation_point();
         if ($this->strContentLanguage == "de") {
             $objNaviPoint->setStrName("Suche");
         } else {
             $objNaviPoint->setStrName("Search");
         }
         $objNaviPoint->setStrPageI("search");
         $objNaviPoint->updateObjectToDb($strTreeId);
         $strReturn .= "ID of new navigation point: " . $objNaviPoint->getSystemid() . "\n";
     }
     return $strReturn;
 }