diff --git a/workflow/engine/classes/Cases.php b/workflow/engine/classes/Cases.php
index 1f0b75495..f3b0a64c8 100644
--- a/workflow/engine/classes/Cases.php
+++ b/workflow/engine/classes/Cases.php
@@ -3428,40 +3428,40 @@ class Cases
/**
* Execute trigger in task
* @name executeTriggers
- * @param string $sTasUid
- * @param string $sStepType
- * @param array $sStepUidObj
- * @param string $sTriggerType
- * @param array $aFields
+ * @param string $tasUid
+ * @param string $stepType
+ * @param array $stepUidObj
+ * @param string $triggerType
+ * @param array $fieldsCase
+ *
* @return integer
*/
- public function executeTriggers($sTasUid, $sStepType, $sStepUidObj, $sTriggerType, $aFields = array())
+ public function executeTriggers($tasUid, $stepType, $stepUidObj, $triggerType, $fieldsCase = [])
{
/*----------------------------------********---------------------------------*/
ChangeLog::getChangeLog()
- ->setObjectUid($sStepUidObj)
- ->getExecutedAtIdByTriggerType($sTriggerType);
+ ->setObjectUid($stepUidObj)
+ ->getExecutedAtIdByTriggerType($triggerType);
/*----------------------------------********---------------------------------*/
- $aTriggers = $this->loadTriggers($sTasUid, $sStepType, $sStepUidObj, $sTriggerType);
+ $listTriggers = $this->loadTriggers($tasUid, $stepType, $stepUidObj, $triggerType);
- if (count($aTriggers) > 0) {
+ if (count($listTriggers) > 0) {
global $oPMScript;
$oPMScript = new PMScript();
- $oPMScript->setFields($aFields);
+ $oPMScript->setFields($fieldsCase);
/*----------------------------------********---------------------------------*/
$cs = new CodeScanner(config("system.workspace"));
-
$strFoundDisabledCode = "";
/*----------------------------------********---------------------------------*/
- foreach ($aTriggers as $aTrigger) {
+ foreach ($listTriggers as $trigger) {
/*----------------------------------********---------------------------------*/
if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
//Check disabled code
- $arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $aTrigger["TRI_WEBBOT"]);
+ $arrayFoundDisabledCode = $cs->checkDisabledCode("SOURCE", $trigger["TRI_WEBBOT"]);
if (!empty($arrayFoundDisabledCode)) {
$strCodeAndLine = "";
@@ -3470,30 +3470,40 @@ class Cases
$strCodeAndLine .= (($strCodeAndLine != "") ? ", " : "") . G::LoadTranslation("ID_DISABLED_CODE_CODE_AND_LINE", array($key, implode(", ", $value)));
}
- $strFoundDisabledCode .= "
- " . $aTrigger["TRI_TITLE"] . ": " . $strCodeAndLine;
+ $strFoundDisabledCode .= "
- " . $trigger["TRI_TITLE"] . ": " . $strCodeAndLine;
continue;
}
}
/*----------------------------------********---------------------------------*/
//Execute
- $bExecute = true;
+ $execute = true;
- if ($aTrigger['ST_CONDITION'] !== '') {
- $oPMScript->setDataTrigger($aTrigger);
- $oPMScript->setScript($aTrigger['ST_CONDITION']);
+ if ($trigger['ST_CONDITION'] !== '') {
+ $oPMScript->setDataTrigger($trigger);
+ $oPMScript->setScript($trigger['ST_CONDITION']);
$oPMScript->setExecutedOn(PMScript::CONDITION);
- $bExecute = $oPMScript->evaluate();
+ $execute = $oPMScript->evaluate();
}
- if ($bExecute) {
- $oPMScript->setDataTrigger($aTrigger);
- $oPMScript->setScript($aTrigger['TRI_WEBBOT']);
- $executedOn = $oPMScript->getExecutionOriginForAStep($sStepType, $sStepUidObj, $sTriggerType);
+ if ($execute) {
+ $oPMScript->setDataTrigger($trigger);
+ $oPMScript->setScript($trigger['TRI_WEBBOT']);
+ $executedOn = $oPMScript->getExecutionOriginForAStep($stepType, $stepUidObj, $triggerType);
$oPMScript->setExecutedOn($executedOn);
$oPMScript->execute();
+ $fieldsTrigger = $oPMScript->aFields;
- $this->arrayTriggerExecutionTime[$aTrigger['TRI_UID']] = $oPMScript->scriptExecutionTime;
+ //We will be load the last appData
+ if ($oPMScript->executedOn() === $oPMScript::AFTER_ROUTING) {
+ $appUid = !empty($fieldsCase['APPLICATION']) ? $fieldsCase['APPLICATION'] : '';
+ if (!empty($appUid)) {
+ $lastAppFields = $this->loadCase($appUid)['APP_DATA'];
+ $fieldsTrigger = array_merge($lastAppFields, $fieldsTrigger);
+ }
+ }
+
+ $this->arrayTriggerExecutionTime[$trigger['TRI_UID']] = $oPMScript->scriptExecutionTime;
}
}
/*----------------------------------********---------------------------------*/
@@ -3502,9 +3512,9 @@ class Cases
}
/*----------------------------------********---------------------------------*/
- return $oPMScript->aFields;
+ return $fieldsTrigger;
} else {
- return $aFields;
+ return $fieldsCase;
}
}