/** * This method is called, when the widget should generate it's content. * Return the complete content using the methods provided by the base class. * Do NOT use the toolkit right here! * * @return string */ public function getWidgetOutput() { $strReturn = ""; $strReturn .= $this->widgetText($this->getLang("workflows_intro")); $strReturn .= $this->widgetText(class_module_workflows_workflow::getPendingWorkflowsForUserCount(array_merge(array(class_carrier::getInstance()->getObjSession()->getUserID()), class_carrier::getInstance()->getObjSession()->getGroupIdsAsArray()))); $strReturn .= $this->widgetText(getLinkAdmin("workflows", "myList", "", $this->getLang("workflows_show"))); return $strReturn; }
/** * In nearly all cases, the additional info is rendered left to the action-icons. * * @return string */ public function getStrAdditionalInfo() { //count the number of instances $intCount = 0; if ($this->getObjInstanceOfHandler() != null) { $intCount = class_module_workflows_workflow::getWorkflowsForClassCount(get_class($this->getObjInstanceOfHandler()), false); } return $this->getLang("handler_instances", "workflows", array($intCount)); }
/** * @return void */ public function schedule() { $objDate = clone $this->objWorkflow->getObjTriggerdate(); //reschedule for ($intI = 0; $intI < $this->intIntervalDays; $intI++) { $objDate->setNextDay(); } $objDate->setIntHour($this->intSendTime)->setIntMin(0)->setIntSec(0); if ($objDate->getLongTimestamp() < class_date::getCurrentTimestamp()) { $objDate = new class_date(); $objDate->setNextDay()->setIntHour($this->intSendTime)->setIntMin(0)->setIntSec(0); } $this->objWorkflow->setObjTriggerdate($objDate); }
/** * 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; }
/** * Searches for workflows assigned to the systemid to be deleted. * * @param string $strEventName * @param array $arrArguments * * @return bool */ public function handleEvent($strEventName, array $arrArguments) { //unwrap arguments list($strSystemid, $strSourceClass) = $arrArguments; $bitReturn = true; $objORM = new class_orm_objectlist(); $objORM->setObjHandleLogicalDeleted(class_orm_deletedhandling_enum::INCLUDED()); $objORM->addWhereRestriction(new class_orm_objectlist_restriction(" AND workflows_systemid = ?", $strSystemid)); if ($objORM->getObjectCount("class_module_workflows_workflow") == 0) { return true; } class_orm_base::setObjHandleLogicalDeletedGlobal(class_orm_deletedhandling_enum::INCLUDED()); $arrWorkflows = class_module_workflows_workflow::getWorkflowsForSystemid($strSystemid, false); foreach ($arrWorkflows as $objOneWorkflow) { if ($strEventName == class_system_eventidentifier::EVENT_SYSTEM_RECORDDELETED_LOGICALLY) { $bitReturn = $bitReturn && $objOneWorkflow->deleteObject(); } if ($strEventName == class_system_eventidentifier::EVENT_SYSTEM_RECORDDELETED) { $bitReturn = $bitReturn && $objOneWorkflow->deleteObjectFromDatabase(); } } class_orm_base::setObjHandleLogicalDeletedGlobal(class_orm_deletedhandling_enum::EXCLUDED()); return $bitReturn; }
public function schedule() { $newTriggerdate = $this->objWorkflow->getObjTriggerdate()->getTimeInOldStyle(); $newTriggerdate = $newTriggerdate + $this->intIntervalHours * 3600; $this->objWorkflow->setObjTriggerdate(new class_date($newTriggerdate)); }
/** * Runs a single workflow. * @param class_module_workflows_workflow $objOneWorkflow */ public function runSingleWorkflow($objOneWorkflow) { $objHandler = $objOneWorkflow->getObjWorkflowHandler(); if ($objOneWorkflow->getIntState() != class_module_workflows_workflow::$INT_STATE_SCHEDULED) { return; } //trigger the workflow class_logger::getInstance(self::STR_LOGFILE)->addLogRow("executing workflow " . $objOneWorkflow->getSystemid(), class_logger::$levelInfo); if ($objHandler->execute()) { //handler executed successfully. shift to state 'executed' $objOneWorkflow->setIntState(class_module_workflows_workflow::$INT_STATE_EXECUTED); class_logger::getInstance(self::STR_LOGFILE)->addLogRow(" execution finished, new state: executed", class_logger::$levelInfo); } else { //handler failed to execute. reschedule. $objHandler->schedule(); $objOneWorkflow->setIntState(class_module_workflows_workflow::$INT_STATE_SCHEDULED); class_logger::getInstance(self::STR_LOGFILE)->addLogRow(" execution finished, new state: scheduled", class_logger::$levelInfo); } $objOneWorkflow->setIntRuns($objOneWorkflow->getIntRuns() + 1); $objOneWorkflow->updateObjectToDb(); }
/** * @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; }
/** * schedule the workflow * @return void */ public function schedule() { $this->objWorkflow->setObjTriggerdate(new class_date(time() - 30 + $this->intIntervalHours * 36000)); }
/** * @return void */ public function schedule() { $this->objWorkflow->setObjTriggerdate(new class_date(time() + $this->intIntervall)); }
public function test_getWorkflowsForSystemid() { //execute test case with invlaid systemid $arrReturn = class_module_workflows_workflow::getWorkflowsForSystemid("ddd", false, array("clas_workflow_workflows_messagesummary")); $this->assertEquals(0, count($arrReturn)); }