diff --git a/workflow/engine/methods/cases/cases_Open.php b/workflow/engine/methods/cases/cases_Open.php index f279a9bf6..c4a3bd4f4 100755 --- a/workflow/engine/methods/cases/cases_Open.php +++ b/workflow/engine/methods/cases/cases_Open.php @@ -169,6 +169,15 @@ try { /* Redirect to next step */ unset( $_SESSION['bNoShowSteps'] ); + + /* Execute Before Triggers for first Task*/ + $oStep = new Step; + $oStep = $oStep->loadByProcessTaskPosition($_SESSION['PROCESS'], $_SESSION['TASK'], 1); + $triggerFields["APP_DATA"] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $oStep->getStepTypeObj(), $oStep->getStepUidObj(), 'BEFORE', $aFields['APP_DATA'] ); + $oCase->updateCase( $_SESSION['APPLICATION'], $triggerFields ); + $_SESSION['beforeTriggersExecuted'] = true; + /*end Execute Before Triggers for first Task*/ + $aNextStep = $oCase->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] ); $sPage = $aNextStep['PAGE']; G::header( 'location: ' . $sPage ); diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index 9b273a682..faa18cd32 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -159,7 +159,11 @@ if ($flagExecuteBeforeTriggers) { if (! isset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] )) { //Execute before triggers - Start - $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] ); + if (!isset($_SESSION['beforeTriggersExecuted'])) { + $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] ); + } else { + unset($_SESSION['beforeTriggersExecuted']); + } //Execute before triggers - End } else { unset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] );