From f4fb74d70bfc5b252bb1330f8914427949283536 Mon Sep 17 00:00:00 2001 From: Julio Cesar Laura Date: Sun, 15 Jul 2012 22:27:06 -0400 Subject: [PATCH] Fixed bug with the function PMFNewCase - The session variables are overwrited - The session variables are restored to end of the function --- workflow/engine/classes/class.wsBase.php | 47 +++++++++++++++++++++--- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 50bc96ecc..210bb1ac3 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -1455,31 +1455,43 @@ class wsBase public function newCase($processId, $userId, $taskId, $variables) { try { - //GET, POST & $_SESSION Vars + $originalValues = array(); + //Unset any variable, because we are starting a new case if (isset($_SESSION['APPLICATION'])) { + $originalValues['APPLICATION'] = $_SESSION['APPLICATION']; unset($_SESSION['APPLICATION']); } if (isset($_SESSION['PROCESS'])) { + $originalValues['PROCESS'] = $_SESSION['PROCESS']; unset($_SESSION['PROCESS']); } if (isset($_SESSION['TASK'])) { + $originalValues['TASK'] = $_SESSION['TASK']; unset($_SESSION['TASK']); } if (isset($_SESSION['INDEX'])) { + $originalValues['INDEX'] = $_SESSION['INDEX']; unset($_SESSION['INDEX']); } if (isset($_SESSION['USER_LOGGED'])) { + $originalValues['USER_LOGGED'] = $_SESSION['USER_LOGGED']; unset($_SESSION['USER_LOGGED']); } - //if (isset($_SESSION['USR_USERNAME'])) unset($_SESSION['USR_USERNAME']); + if (isset($_SESSION['USR_USERNAME'])) { + $originalValues['USR_USERNAME'] = $_SESSION['USR_USERNAME']; + unset($_SESSION['USR_USERNAME']); + } - //if (isset($_SESSION['STEP_POSITION'])) unset($_SESSION['STEP_POSITION']); + if (isset($_SESSION['STEP_POSITION'])) { + $originalValues['STEP_POSITION'] = $_SESSION['STEP_POSITION']; + unset($_SESSION['STEP_POSITION']); + } $Fields = array(); @@ -1541,8 +1553,8 @@ class wsBase $_SESSION['TASK'] = $taskId; $_SESSION['INDEX'] = $case['INDEX']; $_SESSION['USER_LOGGED'] = $userId; - //$_SESSION['USR_USERNAME'] = $case['USR_USERNAME']; - //$_SESSION['STEP_POSITION'] = 0; + $_SESSION['USR_USERNAME'] = $case['USR_USERNAME']; + $_SESSION['STEP_POSITION'] = 0; $caseId = $case['APPLICATION']; $caseNr = $case['CASE_NUMBER']; @@ -1553,6 +1565,31 @@ class wsBase $up_case = $oCase->updateCase($caseId, $oldFields); + //Restore original values + if (isset($originalValues['APPLICATION'])) { + $_SESSION['APPLICATION'] = $originalValues['APPLICATION']; + } + + if (isset($originalValues['PROCESS'])) { + $_SESSION['PROCESS'] = $originalValues['PROCESS']; + } + + if (isset($originalValues['TASK'])) { + $_SESSION['TASK'] = $originalValues['TASK']; + } + + if (isset($originalValues['INDEX'])) { + $_SESSION['INDEX'] = $originalValues['INDEX']; + } + + if (isset($originalValues['USR_USERNAME'])) { + $_SESSION['USR_USERNAME'] = $originalValues['USR_USERNAME']; + } + + if (isset($originalValues['STEP_POSITION'])) { + $_SESSION['STEP_POSITION'] = $originalValues['STEP_POSITION']; + } + $result = new wsResponse(0, G::loadTranslation('ID_STARTED_SUCCESSFULLY')); $result->caseId = $caseId; $result->caseNumber = $caseNr;