/**
  * 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));
 }
示例#12
0
 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));
 }