/** * Validate Process Uid * @var string $pro_uid. Uid for Process * @var string $tas_uid. Uid for Task * @var string $step_uid. Uid for Step * @var string $step_pos. Position for Step * * @author Brayan Pereyra (Cochalo) <*****@*****.**> * @copyright Colosa - Bolivia * * @return void */ public function moveStepTriggers($tasUid, $stepUid, $triUid, $type, $newPos) { $stepTrigger = new \ProcessMaker\BusinessModel\Step(); $tempStep = $stepUid; $typeCompare = $type; if ($tempStep == '-1' || $tempStep == '-2') { $tempStep = ''; if ($stepUid == '-1' && $type == 'BEFORE') { $typeCompare = "BEFORE_ASSIGNMENT"; } elseif ($stepUid == '-2' && $type == 'BEFORE') { $typeCompare = "BEFORE_ROUTING"; } elseif ($stepUid == '-2' && $type == 'AFTER') { $typeCompare = "AFTER_ROUTING"; } } $aStepTriggers = $stepTrigger->getTriggers($tempStep, $tasUid); foreach ($aStepTriggers as $dataStep) { if ($dataStep['st_type'] == $typeCompare && $dataStep['tri_uid'] == $triUid) { $prStepPos = (int) $dataStep['st_position']; } } $seStepPos = $newPos; //Principal Step is up if ($prStepPos == $seStepPos) { return true; } elseif ($prStepPos < $seStepPos) { $modPos = 'UP'; $newPos = $seStepPos; $iniPos = $prStepPos + 1; $finPos = $seStepPos; } else { $modPos = 'DOWN'; $newPos = $seStepPos; $iniPos = $seStepPos; $finPos = $prStepPos - 1; } $range = range($iniPos, $finPos); $stepChangeIds = array(); $stepChangePos = array(); foreach ($aStepTriggers as $dataStep) { if ($dataStep['st_type'] == $typeCompare && in_array($dataStep['st_position'], $range) && $dataStep['tri_uid'] != $triUid) { $stepChangeIds[] = $dataStep['tri_uid']; $stepChangePos[] = $dataStep['st_position']; } } foreach ($stepChangeIds as $key => $value) { if ($modPos == 'UP') { $tempPos = (int) $stepChangePos[$key] - 1; $this->changePosStep($stepUid, $tasUid, $value, $type, $tempPos); } else { $tempPos = (int) $stepChangePos[$key] + 1; $this->changePosStep($stepUid, $tasUid, $value, $type, $tempPos); } } $this->changePosStep($stepUid, $tasUid, $triUid, $type, $newPos); }
/** * Update Trigger of a Step * * @param string $stepUid Unique id of Step * @param string $type Type (BEFORE, AFTER, BEFORE_ASSIGNMENT, BEFORE_ROUTING, AFTER_ROUTING) * @param string $taskUid Unique id of Task * @param string $triggerUid Unique id of Trigger * @param array $arrayData Data * * return array Data updated of the Trigger assigned to a Step */ public function updateAll($stepUid, $type, $taskUid, $triggerUid, $arrayData) { try { $flagStepAssignTask = 0; if ($stepUid == "" || $stepUid == "-1" || $stepUid == "-2") { $flagStepAssignTask = 1; switch ($type) { case "BEFORE_ASSIGNMENT": $stepUid = "-1"; $type = "BEFORE"; break; case "BEFORE_ROUTING": $stepUid = "-2"; $type = "BEFORE"; break; case "AFTER_ROUTING": $stepUid = "-2"; $type = "AFTER"; break; } } //Verify data if ($flagStepAssignTask == 0) { $step = new \Step(); if (!$step->StepExists($stepUid)) { throw new \Exception(\G::LoadTranslation("ID_STEP_DOES_NOT_EXIST", array("step_uid", $stepUid))); } } $trigger = new \Triggers(); if (!$trigger->TriggerExists($triggerUid)) { throw new \Exception(\G::LoadTranslation("ID_TRIGGER_DOES_NOT_EXIST", array("tri_uid", $triggerUid))); } //Update $stepTrigger = new \StepTrigger(); $arrayUpdateData = array(); $arrayUpdateData["STEP_UID"] = $stepUid; $arrayUpdateData["TAS_UID"] = $taskUid; $arrayUpdateData["TRI_UID"] = $triggerUid; $arrayUpdateData["ST_TYPE"] = $type; if (isset($arrayData["st_condition"])) { $arrayUpdateData["ST_CONDITION"] = $arrayData["st_condition"]; } $stepTrigger->update($arrayUpdateData); return array_change_key_case($arrayUpdateData, CASE_LOWER); } catch (\Exception $e) { throw $e; } }
/** * Delete a output document of a project * * @param string $sProcessUID * @param string $sOutputDocumentUID * * @access public */ public function deleteOutputDocument($sProcessUID, $sOutputDocumentUID) { try { require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "OutputDocument.php"; require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "ObjectPermission.php"; require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Step.php"; $this->throwExceptionIfItsAssignedInOtherObjects($sOutputDocumentUID, "outputDocumentUid"); \G::LoadClass('processMap'); $oOutputDocument = new \OutputDocument(); $fields = $oOutputDocument->load($sOutputDocumentUID); $oOutputDocument->remove($sOutputDocumentUID); $oStep = new \Step(); $oStep->removeStep('OUTPUT_DOCUMENT', $sOutputDocumentUID); $oOP = new \ObjectPermission(); $oOP->removeByObject('OUTPUT', $sOutputDocumentUID); //refresh dbarray with the last change in outputDocument $oMap = new \processMap(); $oCriteria = $oMap->getOutputDocumentsCriteria($fields['PRO_UID']); } catch (\Exception $e) { throw $e; } }