/**
  * @return class_admin_formgenerator|null
  */
 public function getAdminForm()
 {
     $objForm = parent::getAdminForm();
     $arrNavigationsDropdown = array();
     foreach (class_module_navigation_tree::getObjectList() as $objOneNavigation) {
         $arrNavigationsDropdown[$objOneNavigation->getSystemid()] = $objOneNavigation->getStrDisplayName();
     }
     $objForm->getField("repo")->setArrKeyValues($arrNavigationsDropdown);
     return $objForm;
 }
 /**
  * @see interface_admin_systemtask::executeTask()
  * @return string
  */
 public function executeTask()
 {
     if (!class_module_system_module::getModuleByName("navigation")->rightEdit()) {
         return $this->getLang("commons_error_permissions");
     }
     $strReturn = "";
     //load all navigation points, tree by tree
     $arrTrees = class_module_navigation_tree::getObjectList();
     foreach ($arrTrees as $objOneTree) {
         $strReturn .= $this->getLang("systemtask_navigationcheck_treescan") . " \"" . $objOneTree->getStrName() . "\"...<br />";
         if (validateSystemid($objOneTree->getStrFolderId())) {
             $strReturn .= $this->getLang("systemtask_navigationcheck_autogenerated") . "<br />";
         } else {
             $strReturn .= $this->processLevel($objOneTree->getSystemid(), 0) . "<br />";
         }
     }
     return $strReturn;
 }
 /**
  * Returns a list of the current level
  *
  * @return string
  * @autoTestable
  * @permissions view
  */
 protected function actionList()
 {
     $strReturn = "";
     //Decide, whether to return the list of navigation or the layer of a navigation
     if ($this->getSystemid() == "" || $this->getSystemid() == $this->getObjModule()->getSystemid()) {
         $objIterator = new class_array_section_iterator(class_module_navigation_tree::getObjectCount(class_module_system_module::getModuleIdByNr(_navigation_modul_id_)));
         $objIterator->setPageNumber($this->getParam("pv"));
         $objIterator->setArraySection(class_module_navigation_tree::getObjectList("", $objIterator->calculateStartPos(), $objIterator->calculateEndPos()));
         return $this->renderList($objIterator);
     } else {
         $objIterator = new class_array_section_iterator(class_module_navigation_point::getObjectCount($this->getSystemid()));
         $objIterator->setPageNumber($this->getParam("pv"));
         $objIterator->setArraySection(class_module_navigation_point::getNaviLayer($this->getSystemid(), false, $objIterator->calculateStartPos(), $objIterator->calculateEndPos()));
         $strReturn .= $this->renderList($objIterator, true, "naviPoints", true);
         if ($this->strPeAddon == "") {
             $strReturn = $this->generateTreeView($strReturn);
         }
         return $strReturn;
     }
 }
 /**
  * Removes the elements / modules handled by the current installer.
  * Use the reference param to add a human readable logging.
  *
  * @param string &$strReturn
  *
  * @return bool
  */
 public function remove(&$strReturn)
 {
     //delete the page-element
     $objElement = class_module_pages_element::getElement("navigation");
     if ($objElement != null) {
         $strReturn .= "Deleting page-element 'navigation'...\n";
         $objElement->deleteObjectFromDatabase();
     } else {
         $strReturn .= "Error finding page-element 'navigation', aborting.\n";
         return false;
     }
     /** @var class_module_navigation_tree $objOneObject */
     foreach (class_module_navigation_tree::getObjectList() as $objOneObject) {
         $strReturn .= "Deleting object '" . $objOneObject->getStrDisplayName() . "' ...\n";
         if (!$objOneObject->deleteObjectFromDatabase()) {
             $strReturn .= "Error deleting object, aborting.\n";
             return false;
         }
     }
     //delete the module-node
     $strReturn .= "Deleting the module-registration...\n";
     $objModule = class_module_system_module::getModuleByName($this->objMetadata->getStrTitle(), true);
     if (!$objModule->deleteObjectFromDatabase()) {
         $strReturn .= "Error deleting module, aborting.\n";
         return false;
     }
     //delete the tables
     foreach (array("navigation", "element_navigation") as $strOneTable) {
         $strReturn .= "Dropping table " . $strOneTable . "...\n";
         if (!$this->objDB->_pQuery("DROP TABLE " . $this->objDB->encloseTableName(_dbprefix_ . $strOneTable) . "", array())) {
             $strReturn .= "Error deleting table, aborting.\n";
             return false;
         }
     }
     return true;
 }