Пример #1
0
 /**
  * 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)
 {
     //remove the workflow
     if (class_module_system_module::getModuleByName("workflows") !== null) {
         foreach (class_module_workflows_workflow::getWorkflowsForClass("class_workflow_ldap_sync") as $objOneWorkflow) {
             if (!$objOneWorkflow->deleteObjectFromDatabase()) {
                 $strReturn .= "Error deleting workflow, aborting.\n";
                 return false;
             }
         }
         $objHandler = class_module_workflows_handler::getHandlerByClass("class_workflow_ldap_sync");
         if (!$objHandler->deleteObjectFromDatabase()) {
             $strReturn .= "Error deleting workflow handler, aborting.\n";
             return false;
         }
     }
     //fetch associated users
     foreach ($this->objDB->getPArray("SELECT * FROM " . _dbprefix_ . "user_ldap", array()) as $arrOneRow) {
         $objOneUser = new class_module_user_user($arrOneRow["user_ldap_id"]);
         echo "Deleting ldap user " . $objOneUser->getStrDisplayName() . "...\n";
         $objOneUser->deleteObjectFromDatabase();
     }
     //fetch associated groups
     foreach ($this->objDB->getPArray("SELECT * FROM " . _dbprefix_ . "user_group_ldap", array()) as $arrOneRow) {
         $objOneUser = new class_module_user_group($arrOneRow["group_ldap_id"]);
         echo "Deleting ldap group " . $objOneUser->getStrDisplayName() . "...\n";
         $objOneUser->deleteObjectFromDatabase();
     }
     //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("user_group_ldap", "user_ldap") 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;
 }