$aGatewayFields['GAT_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0]; $aGatewayFields['GAT_TYPE'] = ''; $oGateway->update($aGatewayFields); //$sGatewayUID = $oProcessMap->saveNewGateway($aData['PROCESS'], $aData['TASK'][0], $aData['ROU_NEXT_TASK'][0]); //echo $sGatewayUID.'|'; } //else // echo $aData['ROU_EVN_UID'].'|'; //sending route_event_uid in response G::LoadClass('tasks'); $oTasks = new Tasks(); $rou_id = 0; $aFields['GAT_UID'] = $aData['GAT_UID']; switch ($aData['action']) { case 'savePattern': foreach ($aData['TASK'] as $iKey => $aRow) { $oTasks->deleteAllRoutesOfTask($aData['PROCESS'], $aRow); } require_once 'classes/model/Route.php'; require_once 'classes/model/Event.php'; $oEvent = new Event(); $oRoute = new Route(); switch ($aData['ROU_TYPE']) { case 'SEQUENTIAL': case 'SEC-JOIN': $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK'][0]; $aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0]; $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; if (isset($aData['ROU_EVN_UID']) && $aData['ROU_EVN_UID'] != '') { $aFields['ROU_EVN_UID'] = $aData['ROU_EVN_UID']; $aDataEvent = array();
*/ G::LoadInclude('ajax'); //$oJSON = new Services_JSON(); if (isset($_POST['mode']) && $_POST['mode'] != '') { $aData = $_POST; } else { $aData = $_POST['form']; } G::LoadClass('tasks'); $oTasks = new Tasks(); $rou_id = 0; switch ($aData['action']) { case 'savePattern': //if ($aData['ROU_TYPE'] != $aData['ROU_TYPE_OLD']) //{ $oTasks->deleteAllRoutesOfTask($aData['PROCESS'], $aData['TASK']); //} require_once 'classes/model/Route.php'; $oRoute = new Route(); switch ($aData['ROU_TYPE']) { case 'SEQUENTIAL': case 'SEC-JOIN': /*if ($aData['ROU_UID'] != '') { $aFields['ROU_UID'] = $aData['ROU_UID']; }*/ $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK']; $aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK']; $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; //$aFields['ROU_TO_LAST_USER'] = $aData['ROU_TO_LAST_USER'];
if (($oData->delete) || ($oData->type == 0) || ($oData->type == 5) || ($oData->type == 8)) { G::LoadClass('tasks'); $oTasks = new Tasks(); $oTasks->deleteAllRoutesOfTask($oData->pro_uid, $oData->tas_uid); $oTasks->deleteAllGatewayOfTask($oData->pro_uid, $oData->tas_uid); } $oProcessMap->saveNewPattern($oData->pro_uid, $oData->tas_uid, $oData->next_task, $sType, $oData->delete); break; case 'deleteAllRoutes': G::LoadClass('tasks'); $oTaskNewPattern = new Task(); $taskInfo=$oTaskNewPattern->load($oData->tas_uid); $titleTask=$taskInfo['TAS_TITLE']; G::auditlog("DeleteRoutes",'Delete All Routes From Task -> '.$titleTask.' : '.$oData->tas_uid); $oTasks = new Tasks(); $oTasks->deleteAllRoutesOfTask($oData->pro_uid, $oData->tas_uid); break; case 'objectPermissions': $oProcessMap->objectsPermissionsList($oData->pro_uid); break; case 'newObjectPermission': $oProcessMap->newObjectPermission($oData->pro_uid); break; case 'editObjectPermission': // we also need the process uid variable for the function. $oProcessMap->editObjectPermission($oData->op_uid, $oData->pro_uid); break; case 'caseTracker': $oProcessMap->caseTracker($oData->pro_uid); break; case 'caseTrackerObjects':
/** * Delete a task * @param string $sTaskUID * @return void */ function deleteTask($sTaskUID = '') { try { //Instance classes $oTask = new Task(); $oTasks = new Tasks(); $oTaskUser = new TaskUser(); $oStep = new Step(); $oStepTrigger = new StepTrigger(); //Get task information $aFields = $oTask->load($sTaskUID); //Delete routes $oTasks->deleteAllRoutesOfTask($aFields['PRO_UID'], $sTaskUID, true); //Delete gateways $oTasks->deleteAllGatewayOfTask($aFields['PRO_UID'], $sTaskUID, true); //Delete the users assigned to task $oCriteria = new Criteria('workflow'); $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); $oDataset1 = TaskUserPeer::doSelectRS($oCriteria); $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset1->next(); while ($aRow1 = $oDataset1->getRow()) { $oTaskUser->remove($aRow1['TAS_UID'], $aRow1['USR_UID'], $aRow1['TU_TYPE'], $aRow1['TU_RELATION']); $oDataset1->next(); } //Delete the steps of task $oCriteria = new Criteria('workflow'); $oCriteria->add(StepPeer::TAS_UID, $sTaskUID); $oDataset1 = StepPeer::doSelectRS($oCriteria); $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset1->next(); while ($aRow1 = $oDataset1->getRow()) { //Delete the triggers assigned to step /*$oCriteria = new Criteria('workflow'); $oCriteria->add(StepTriggerPeer::STEP_UID, $aRow1['STEP_UID']); $oDataset2 = StepTriggerPeer::doSelectRS($oCriteria); $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset2->next(); while ($aRow2 = $oDataset2->getRow()) { $oStepTrigger->remove($aRow2['STEP_UID'], $aRow2['TAS_UID'], $aRow2['TRI_UID'], $aRow2['ST_TYPE']); $oDataset2->next(); }*/ $oStep->remove($aRow1['STEP_UID']); $oDataset1->next(); } //Delete step triggers $oCriteria = new Criteria('workflow'); $oCriteria->add(StepTriggerPeer::TAS_UID, $sTaskUID); StepTriggerPeer::doDelete($oCriteria); //Delete permissions $oCriteria = new Criteria('workflow'); $oCriteria->add(ObjectPermissionPeer::TAS_UID, $sTaskUID); ObjectPermissionPeer::doDelete($oCriteria); $oCriteria = new Criteria('workflow'); $oCriteria->add(ObjectPermissionPeer::OP_TASK_SOURCE, $sTaskUID); ObjectPermissionPeer::doDelete($oCriteria); //Delete task $oTask->remove($sTaskUID); //Delete cases schedulers added by krlos $oCriteria = new Criteria('workflow'); $oCriteria->add(CaseSchedulerPeer::TAS_UID, $sTaskUID); CaseSchedulerPeer::doDelete($oCriteria); } catch (Exception $oError) { throw $oError; } }
/** * Update WebEntry-Event * * @param string $webEntryEventUid Unique id of WebEntry-Event * @param string $userUidUpdater Unique id of updater User * @param array $arrayData Data * * return array Return data of the WebEntry-Event updated */ public function update($webEntryEventUid, $userUidUpdater, array $arrayData) { try { //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $validator = new \ProcessMaker\BusinessModel\Validator(); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); //Set data $arrayData = array_change_key_case($arrayData, CASE_UPPER); $arrayDataBackup = $arrayData; unset($arrayData["WEE_UID"]); unset($arrayData["PRJ_UID"]); unset($arrayData["WEE_WE_UID"]); unset($arrayData["WEE_WE_TAS_UID"]); //Set variables $arrayWebEntryEventData = $this->getWebEntryEvent($webEntryEventUid, true); $arrayFinalData = array_merge($arrayWebEntryEventData, $arrayData); //Verify data $this->throwExceptionIfNotExistsWebEntryEvent($webEntryEventUid, $this->arrayFieldNameForException["webEntryEventUid"]); $this->throwExceptionIfDataIsInvalid($webEntryEventUid, $arrayWebEntryEventData["PRJ_UID"], $arrayData); //Update $cnn = \Propel::getConnection("workflow"); $this->webEntryEventWebEntryUid = ""; $this->webEntryEventWebEntryTaskUid = ""; try { //WebEntry $option = "UPDATE"; if (isset($arrayData["WEE_STATUS"])) { if ($arrayData["WEE_STATUS"] == "ENABLED") { if ($arrayWebEntryEventData["WEE_STATUS"] == "DISABLED") { $option = "INSERT"; } } else { if ($arrayWebEntryEventData["WEE_STATUS"] == "ENABLED") { $option = "DELETE"; } } } switch ($option) { case "INSERT": $this->createWebEntry($arrayFinalData["PRJ_UID"], $arrayFinalData["EVN_UID"], $arrayFinalData["ACT_UID"], $arrayFinalData["DYN_UID"], $arrayFinalData["USR_UID"], $arrayFinalData["WEE_TITLE"], $arrayFinalData["WEE_DESCRIPTION"], $userUidUpdater); $arrayData["WEE_WE_UID"] = $this->webEntryEventWebEntryUid; $arrayData["WEE_WE_TAS_UID"] = $this->webEntryEventWebEntryTaskUid; break; case "UPDATE": if ($arrayWebEntryEventData["WEE_WE_UID"] != "") { $task = new \Tasks(); //Task - Step if (isset($arrayData["DYN_UID"]) && $arrayData["DYN_UID"] != $arrayWebEntryEventData["DYN_UID"]) { //Delete $step = new \Step(); $criteria = new \Criteria("workflow"); $criteria->add(\StepPeer::TAS_UID, $arrayWebEntryEventData["WEE_WE_TAS_UID"]); $rsCriteria = \StepPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $result = $step->remove($row["STEP_UID"]); } //Add $step = new \Step(); $stepUid = $step->create(array("PRO_UID" => $arrayWebEntryEventData["PRJ_UID"], "TAS_UID" => $arrayWebEntryEventData["WEE_WE_TAS_UID"])); $result = $step->update(array("STEP_UID" => $stepUid, "STEP_TYPE_OBJ" => "DYNAFORM", "STEP_UID_OBJ" => $arrayData["DYN_UID"], "STEP_POSITION" => 1, "STEP_MODE" => "EDIT")); } //Task - User if (isset($arrayData["USR_UID"]) && $arrayData["USR_UID"] != $arrayWebEntryEventData["USR_UID"]) { //Unassign $taskUser = new \TaskUser(); $criteria = new \Criteria("workflow"); $criteria->add(\TaskUserPeer::TAS_UID, $arrayWebEntryEventData["WEE_WE_TAS_UID"]); $rsCriteria = \TaskUserPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $result = $taskUser->remove($row["TAS_UID"], $row["USR_UID"], $row["TU_TYPE"], $row["TU_RELATION"]); } //Assign $result = $task->assignUser($arrayWebEntryEventData["WEE_WE_TAS_UID"], $arrayData["USR_UID"], 1); } //Route if (isset($arrayData["ACT_UID"]) && $arrayData["ACT_UID"] != $arrayWebEntryEventData["ACT_UID"]) { //Delete $result = $task->deleteAllRoutesOfTask($arrayWebEntryEventData["PRJ_UID"], $arrayWebEntryEventData["WEE_WE_TAS_UID"], true); //Add $workflow = \ProcessMaker\Project\Workflow::load($arrayWebEntryEventData["PRJ_UID"]); $result = $workflow->addRoute($arrayWebEntryEventData["WEE_WE_TAS_UID"], $arrayData["ACT_UID"], "SEQUENTIAL"); } //WebEntry $arrayDataAux = array(); if (isset($arrayData["DYN_UID"])) { $arrayDataAux["DYN_UID"] = $arrayData["DYN_UID"]; } if (isset($arrayData["USR_UID"])) { $arrayDataAux["USR_UID"] = $arrayData["USR_UID"]; } if (isset($arrayData["WEE_TITLE"])) { $arrayDataAux["WE_TITLE"] = $arrayData["WEE_TITLE"]; } if (isset($arrayData["WEE_DESCRIPTION"])) { $arrayDataAux["WE_DESCRIPTION"] = $arrayData["WEE_DESCRIPTION"]; } if (count($arrayDataAux) > 0) { $arrayDataAux = $this->webEntry->update($arrayWebEntryEventData["WEE_WE_UID"], $userUidUpdater, $arrayDataAux); } } break; case "DELETE": $this->deleteWebEntry($arrayWebEntryEventData["WEE_WE_UID"], $arrayWebEntryEventData["WEE_WE_TAS_UID"]); $arrayData["WEE_WE_UID"] = ""; $arrayData["WEE_WE_TAS_UID"] = ""; break; } //WebEntry-Event $webEntryEvent = \WebEntryEventPeer::retrieveByPK($webEntryEventUid); $webEntryEvent->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME); if ($webEntryEvent->validate()) { $cnn->begin(); $result = $webEntryEvent->save(); $cnn->commit(); //Set WEE_TITLE if (isset($arrayData["WEE_TITLE"])) { $result = \Content::addContent("WEE_TITLE", "", $webEntryEventUid, SYS_LANG, $arrayData["WEE_TITLE"]); } //Set WEE_DESCRIPTION if (isset($arrayData["WEE_DESCRIPTION"])) { $result = \Content::addContent("WEE_DESCRIPTION", "", $webEntryEventUid, SYS_LANG, $arrayData["WEE_DESCRIPTION"]); } //Return $arrayData = $arrayDataBackup; if (!$this->formatFieldNameInUppercase) { $arrayData = array_change_key_case($arrayData, CASE_LOWER); } return $arrayData; } else { $msg = ""; foreach ($webEntryEvent->getValidationFailures() as $validationFailure) { $msg = $msg . ($msg != "" ? "\n" : "") . $validationFailure->getMessage(); } throw new \Exception(\G::LoadTranslation("ID_REGISTRY_CANNOT_BE_UPDATED") . ($msg != "" ? "\n" . $msg : "")); } } catch (\Exception $e) { $cnn->rollback(); $this->deleteWebEntry($this->webEntryEventWebEntryUid, $this->webEntryEventWebEntryTaskUid); throw $e; } } catch (\Exception $e) { throw $e; } }
/** * Create Route * * @param string $processUid * @param string $taskUid * @param string $nextTaskUid * @param string $type * @param bool $delete * * return string Return UID of new Route * * @access public */ public function defineRoute($processUid, $taskUid, $nextTaskUid, $type, $delete = false) { //Copy of processmaker/workflow/engine/methods/processes/processes_Ajax.php //case 'saveNewPattern': $processMap = new \processMap(); if ($type != "SEQUENTIAL" && $type != "SEC-JOIN" && $type != "DISCRIMINATOR") { if ($processMap->getNumberOfRoutes($processUid, $taskUid, $nextTaskUid, $type) > 0) { //die(); throw (new \Exception()); } //unset($aRow); } if ($delete || $type == "SEQUENTIAL" || $type == "SEC-JOIN" || $type == "DISCRIMINATOR") { //\G::LoadClass("tasks"); $tasks = new \Tasks(); $tasks->deleteAllRoutesOfTask($processUid, $taskUid); $tasks->deleteAllGatewayOfTask($processUid, $taskUid); } return $processMap->saveNewPattern($processUid, $taskUid, $nextTaskUid, $type, $delete); }