/**
  * Searches the current page in other navigation-trees found on the current page.
  * This can be useful to avoid a session-based "opening" of the current tree.
  * The user may find it confusing, if the current tree remains opened but he clicked
  * a navigation-point of another tree.
  *
  * @return bool
  */
 private function isPageVisibleInOtherNavigation()
 {
     //load the placeholders placed on the current page-template. therefore, instantiate a page-object
     $objPageData = class_module_pages_page::getPageByName($this->getPagename());
     $objMasterPageData = class_module_pages_page::getPageByName("master");
     if ($objPageData != null) {
         //analyze the placeholders on the page, faster than iterating the the elements available in the db
         $strTemplateId = $this->objTemplate->readTemplate("/module_pages/" . $objPageData->getStrTemplate());
         $arrElementsTemplate = array_merge($this->objTemplate->getElements($strTemplateId, 0), $this->objTemplate->getElements($strTemplateId, 1));
         //loop elements to remove navigation-elements. to do so, get the current elements-name (maybe the user renamed the default "navigation")
         foreach ($arrElementsTemplate as $arrPlaceholder) {
             if ($arrPlaceholder["placeholder"] != $this->arrElementData["page_element_ph_placeholder"]) {
                 //loop the elements-list
                 foreach ($arrPlaceholder["elementlist"] as $arrOneElement) {
                     if ($arrOneElement["element"] == $this->arrElementData["page_element_ph_element"]) {
                         //seems as we have a navigation-element different than the current one.
                         //check, if the element is installed on the current page
                         $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPageData->getSystemid(), $arrPlaceholder["placeholder"], $this->getStrPortalLanguage());
                         //maybe on the masters-page?
                         if (count($arrElements) == 0 && $objMasterPageData != null) {
                             $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objMasterPageData->getSystemid(), $arrPlaceholder["placeholder"], $this->getStrPortalLanguage());
                         }
                         if (count($arrElements) > 0) {
                             foreach ($arrElements as $objElement) {
                                 //wohooooo, an element was found.
                                 //check, if the current point is in the tree linked by the navigation - if it's a different navigation....
                                 //load the real-pageelement
                                 $objRealElement = new class_element_navigation_portal($objElement);
                                 $arrContent = $objRealElement->getElementContent($objElement->getSystemid());
                                 if (count($arrContent) == 0) {
                                     continue;
                                 }
                                 //navigation found. trigger loading of nodes if not yet happend
                                 if (!isset($this->arrTempNodes[$arrContent["navigation_id"]])) {
                                     $objNavigation = new class_module_navigation_tree($arrContent["navigation_id"]);
                                     if ($objNavigation->getStatus() == 0) {
                                         $this->arrTempNodes[$arrContent["navigation_id"]] = array("node" => null, "subnodes" => array());
                                     } else {
                                         $this->arrTempNodes[$arrContent["navigation_id"]] = $objNavigation->getCompleteNaviStructure();
                                     }
                                 }
                                 //search navigation tree
                                 $this->arrNodeTempHelper = array();
                                 foreach ($this->arrTempNodes[$arrContent["navigation_id"]]["subnodes"] as $objOneNodeToScan) {
                                     $this->searchPageInNavigationTreeHelper(0, $this->strCurrentSite, $objOneNodeToScan);
                                 }
                                 $intMaxLevel = 0;
                                 $objEntry = null;
                                 foreach ($this->arrNodeTempHelper as $intLevel => $arrNodes) {
                                     if (count($arrNodes) > 0 && $intLevel >= $intMaxLevel) {
                                         $intMaxLevel = $intLevel;
                                         $objEntry = $arrNodes[0];
                                     }
                                 }
                                 //jepp, page found in another tree, so return true
                                 if ($objEntry != null) {
                                     return true;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return false;
 }
 public function testPageElementDeleteSortingMultiLanguage()
 {
     $objPage = new class_module_pages_page();
     $objPage->setStrName("sortTest");
     $objPage->updateObjectToDb();
     $objPagelementb1 = new class_module_pages_pageelement();
     $objPagelementb1->setStrPlaceholder("b_test");
     $objPagelementb1->setStrName("b");
     $objPagelementb1->setStrElement("row");
     $objPagelementb1->setStrLanguage("a1");
     $objPagelementb1->updateObjectToDb($objPage->getSystemid());
     $objPagelementc1 = new class_module_pages_pageelement();
     $objPagelementc1->setStrPlaceholder("b_test");
     $objPagelementc1->setStrName("b");
     $objPagelementc1->setStrElement("row");
     $objPagelementc1->setStrLanguage("a2");
     $objPagelementc1->updateObjectToDb($objPage->getSystemid());
     $objPagelementb2 = new class_module_pages_pageelement();
     $objPagelementb2->setStrPlaceholder("b_test");
     $objPagelementb2->setStrName("b");
     $objPagelementb2->setStrElement("row");
     $objPagelementb2->setStrLanguage("a1");
     $objPagelementb2->updateObjectToDb($objPage->getSystemid());
     $objPagelementb3 = new class_module_pages_pageelement();
     $objPagelementb3->setStrPlaceholder("b_test");
     $objPagelementb3->setStrName("b");
     $objPagelementb3->setStrElement("row");
     $objPagelementb3->setStrLanguage("a1");
     $objPagelementb3->updateObjectToDb($objPage->getSystemid());
     $objPagelementc2 = new class_module_pages_pageelement();
     $objPagelementc2->setStrPlaceholder("b_test");
     $objPagelementc2->setStrName("b");
     $objPagelementc2->setStrElement("row");
     $objPagelementc2->setStrLanguage("a2");
     $objPagelementc2->updateObjectToDb($objPage->getSystemid());
     $objPagelementc3 = new class_module_pages_pageelement();
     $objPagelementc3->setStrPlaceholder("b_test");
     $objPagelementc3->setStrName("b");
     $objPagelementc3->setStrElement("row");
     $objPagelementc3->setStrLanguage("a2");
     $objPagelementc3->updateObjectToDb($objPage->getSystemid());
     $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a1", false);
     $this->assertEquals(3, count($arrElements));
     $this->assertEquals(1, $arrElements[0]->getIntSort());
     $this->assertEquals($objPagelementb1->getSystemid(), $arrElements[0]->getSystemid());
     $this->assertEquals(2, $arrElements[1]->getIntSort());
     $this->assertEquals($objPagelementb2->getSystemid(), $arrElements[1]->getSystemid());
     $this->assertEquals(3, $arrElements[2]->getIntSort());
     $this->assertEquals($objPagelementb3->getSystemid(), $arrElements[2]->getSystemid());
     $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a2", false);
     $this->assertEquals(3, count($arrElements));
     $this->assertEquals(1, $arrElements[0]->getIntSort());
     $this->assertEquals($objPagelementc1->getSystemid(), $arrElements[0]->getSystemid());
     $this->assertEquals(2, $arrElements[1]->getIntSort());
     $this->assertEquals($objPagelementc2->getSystemid(), $arrElements[1]->getSystemid());
     $this->assertEquals(3, $arrElements[2]->getIntSort());
     $this->assertEquals($objPagelementc3->getSystemid(), $arrElements[2]->getSystemid());
     $objPagelementb2->deleteObjectFromDatabase();
     $this->flushDBCache();
     $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a1", false);
     $this->assertEquals(2, count($arrElements));
     $this->assertEquals(1, $arrElements[0]->getIntSort());
     $this->assertEquals($objPagelementb1->getSystemid(), $arrElements[0]->getSystemid());
     $this->assertEquals(2, $arrElements[1]->getIntSort());
     $this->assertEquals($objPagelementb3->getSystemid(), $arrElements[1]->getSystemid());
     $arrElements = class_module_pages_pageelement::getElementsByPlaceholderAndPage($objPage->getSystemid(), "b_test", "a2", false);
     $this->assertEquals(3, count($arrElements));
     $this->assertEquals(1, $arrElements[0]->getIntSort());
     $this->assertEquals($objPagelementc1->getSystemid(), $arrElements[0]->getSystemid());
     $this->assertEquals(2, $arrElements[1]->getIntSort());
     $this->assertEquals($objPagelementc2->getSystemid(), $arrElements[1]->getSystemid());
     $this->assertEquals(3, $arrElements[2]->getIntSort());
     $this->assertEquals($objPagelementc3->getSystemid(), $arrElements[2]->getSystemid());
     $objPage->deleteObjectFromDatabase();
 }