/** * Get all Triggers of a Step * * @param string $stepUid Unique id of Step * @param string $taskUid Unique id of Task * * return array Return an array with all Triggers of a Step */ public function getTriggers($stepUid, $taskUid = "") { try { $arrayTrigger = array(); //Verify data if ($stepUid != "") { $this->throwExceptionIfNotExistsStep($stepUid); } if ($stepUid == "") { $this->throwExceptionIfNotExistsTask($taskUid); } //Get data $bmTrigger = new \ProcessMaker\BusinessModel\Trigger(); $bmStepTrigger = new \ProcessMaker\BusinessModel\Step\Trigger(); $stepTrigger = new \StepTrigger(); if ($stepUid != "") { //Load Step $step = new \Step(); $arrayStepData = $step->load($stepUid); $taskUid = $arrayStepData["TAS_UID"]; } $arrayTriggerType1 = array( "BEFORE" => "BEFORE", "AFTER" => "AFTER" ); $arrayTriggerType2 = array( "BEFORE_ASSIGNMENT" => "BEFORE", "BEFORE_ROUTING" => "BEFORE", "AFTER_ROUTING" => "AFTER" ); $arrayTriggerType = ($stepUid != "")? $arrayTriggerType1 : $arrayTriggerType2; foreach ($arrayTriggerType as $index => $value) { $triggerType = $index; $type = $value; $flagStepAssignTask = 0; switch ($triggerType) { case "BEFORE_ASSIGNMENT": $stepUid = "-1"; $flagStepAssignTask = 1; break; case "BEFORE_ROUTING": $stepUid = "-2"; $flagStepAssignTask = 1; break; case "AFTER_ROUTING": $stepUid = "-2"; $flagStepAssignTask = 1; break; } $stepTrigger->orderPosition($stepUid, $taskUid, $type); //Criteria $criteria = $bmTrigger->getTriggerCriteria(); $criteria->addSelectColumn(\StepTriggerPeer::ST_TYPE); $criteria->addSelectColumn(\StepTriggerPeer::ST_CONDITION); $criteria->addSelectColumn(\StepTriggerPeer::ST_POSITION); $criteria->addJoin(\StepTriggerPeer::TRI_UID, \TriggersPeer::TRI_UID, \Criteria::LEFT_JOIN); $criteria->add(\StepTriggerPeer::STEP_UID, $stepUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::ST_TYPE, $type, \Criteria::EQUAL); $criteria->addAscendingOrderByColumn(\StepTriggerPeer::ST_POSITION); $rsCriteria = \StepTriggerPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); if ($flagStepAssignTask == 1) { $row["ST_TYPE"] = $triggerType; } $arrayTrigger[] = $bmStepTrigger->getTriggerDataFromRecord($row); } } return $arrayTrigger; } catch (\Exception $e) { throw $e; } }
/** * Get data of a Trigger * * @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 * * return array Return an array with data of a Trigger */ public function getTrigger($stepUid, $type, $taskUid, $triggerUid) { try { $typeIni = $type; $flagStepAssignTask = 0; if ($stepUid == "") { $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 (!$this->existsRecord($stepUid, $type, $taskUid, $triggerUid)) { throw new \Exception(\G::LoadTranslation("ID_RECORD_DOES_NOT_EXIST_IN_TABLE", array($stepUid . ", " . $type . ", " . $taskUid . ", " . $triggerUid, "STEP_TRIGGER"))); } //Get data $trigger = new \ProcessMaker\BusinessModel\Trigger(); $criteria = $trigger->getTriggerCriteria(); $criteria->addSelectColumn(\StepTriggerPeer::ST_TYPE); $criteria->addSelectColumn(\StepTriggerPeer::ST_CONDITION); $criteria->addSelectColumn(\StepTriggerPeer::ST_POSITION); $criteria->addJoin(\StepTriggerPeer::TRI_UID, \TriggersPeer::TRI_UID, \Criteria::LEFT_JOIN); $criteria->add(\TriggersPeer::TRI_UID, $triggerUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::STEP_UID, $stepUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::ST_TYPE, $type, \Criteria::EQUAL); $rsCriteria = \StepTriggerPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); $row = $rsCriteria->getRow(); if ($flagStepAssignTask == 1) { $row["ST_TYPE"] = $typeIni; } return $this->getTriggerDataFromRecord($row); } catch (\Exception $e) { throw $e; } }