/** * 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; }
/** * 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) { $strReturn .= "Removing system settings...\n"; if (class_module_system_setting::getConfigByName("_workflows_trigger_authkey_") != null) { class_module_system_setting::getConfigByName("_workflows_trigger_authkey_")->deleteObjectFromDatabase(); } /** @var class_module_workflows_workflow $objOneObject */ foreach (class_module_workflows_workflow::getObjectList() as $objOneObject) { $strReturn .= "Deleting object '" . $objOneObject->getStrDisplayName() . "' ...\n"; if (!$objOneObject->deleteObjectFromDatabase()) { $strReturn .= "Error deleting object, aborting.\n"; return false; } } /** @var class_module_workflows_handler $objOneObject */ foreach (class_module_workflows_handler::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("workflows_handler", "workflows") 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; }
/** * @return string * @permissions right1 */ protected function actionStartInstance() { $strReturn = ""; $objHandler = new class_module_workflows_handler($this->getSystemid()); $objWorkflow = new class_module_workflows_workflow(); $objWorkflow->setStrClass($objHandler->getStrHandlerClass()); $objWorkflow->setStrAffectedSystemid($this->getParam("instance_systemid")); $objWorkflow->setStrResponsible($this->getParam("instance_responsible_id")); $objWorkflow->updateObjectToDb(); $this->adminReload(getLinkAdminHref($this->getArrModule("modul"), "list")); return $strReturn; }
/** * Synchronizes the list of handlers available on the filesystem compared to the list * of handlers available in the database. * Adds or removes handlers from or to the database. * */ public static function synchronizeHandlerList() { //load the list of handlers in the filesystem $arrFiles = class_resourceloader::getInstance()->getFolderContent("/system/workflows", array(".php")); foreach ($arrFiles as $strOneFile) { $strClassname = uniStrReplace(".php", "", $strOneFile); $objReflection = new ReflectionClass($strClassname); if (!$objReflection->isAbstract()) { $objWorkflow = class_module_workflows_handler::getHandlerByClass($strClassname); if ($objWorkflow == null) { $objWorkflow = new class_module_workflows_handler(); $objWorkflow->setStrHandlerClass($strClassname); $arrDefault = $objWorkflow->getObjInstanceOfHandler()->getDefaultValues(); if (isset($arrDefault[0])) { $objWorkflow->setStrConfigVal1($arrDefault[0]); } if (isset($arrDefault[1])) { $objWorkflow->setStrConfigVal2($arrDefault[1]); } if (isset($arrDefault[2])) { $objWorkflow->setStrConfigVal3($arrDefault[2]); } $objWorkflow->updateObjectToDb(); } } } //find workflows to remove $arrWorkflows = self::getObjectList(); /** @var class_module_workflows_handler $objOneWorkflow */ foreach ($arrWorkflows as $objOneWorkflow) { if (!in_array($objOneWorkflow->getStrHandlerClass() . ".php", $arrFiles)) { $objOneWorkflow->deleteObjectFromDatabase(); } } }
/** * Returns the current workflow-handler * * @throws class_exception * @return interface_workflows_handler */ public function getObjWorkflowHandler() { $strClassname = $this->getStrClass(); if (class_exists($strClassname)) { //load the config-object $objConfig = class_module_workflows_handler::getHandlerByClass($strClassname); /** @var $objHandler interface_workflows_handler */ $objHandler = new $strClassname(); $objHandler->setObjWorkflow($this); if ($objConfig != null) { $objHandler->setConfigValues($objConfig->getStrConfigVal1(), $objConfig->getStrConfigVal2(), $objConfig->getStrConfigVal3()); } return $objHandler; } else { throw new class_exception("workflow handler " . $strClassname . " not exisiting", class_exception::$level_ERROR); } }