From b986dd1a7d867cfa397130a7f3765126a908c68e Mon Sep 17 00:00:00 2001 From: Julio Cesar Laura Date: Tue, 19 Feb 2013 11:36:10 -0400 Subject: [PATCH] IMPROVEMENT in PMFunction PMFGetNextAssignedUser --- workflow/engine/classes/class.derivation.php | 3 +++ workflow/engine/classes/class.pmFunctions.php | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 93a24dcee..15da88b16 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -84,6 +84,9 @@ class Derivation $taskInfo = array (); $oUser = new Users(); + if (!class_exists('Cases')) { + G::LoadClass('case'); + } $this->case = new Cases(); // 1. there is no rule if (is_null( $aDerivation['ROU_NEXT_TASK'] )) { diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 1fbeaedad..ba781ed51 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -2395,7 +2395,7 @@ function PMFRedirectToStep ($sApplicationUID, $iDelegation, $sStepType, $sStepUi * @return array | $array | List of users | Return a list of users * */ -function PMFGetNextAssignedUser ($application, $task) +function PMFGetNextAssignedUser ($application, $task, $delIndex = null, $userUid = null) { require_once 'classes/model/AppDelegation.php'; @@ -2409,7 +2409,14 @@ function PMFGetNextAssignedUser ($application, $task) $TaskFields = $oTask->load( $task ); $typeTask = $TaskFields['TAS_ASSIGN_TYPE']; - if ($typeTask == 'BALANCED') { + $g = new G(); + + $g->sessionVarSave(); + + $_SESSION['INDEX'] = (!is_null($delIndex) ? $delIndex : (isset($_SESSION['INDEX']) ? $_SESSION['INDEX'] : null)); + $_SESSION['USER_LOGGED'] = (!is_null($userUid) ? $userUid : (isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : null)); + + if ($typeTask == 'BALANCED' && !is_null($_SESSION['INDEX']) && !is_null($_SESSION['USER_LOGGED'])) { G::LoadClass( 'derivation' ); $oDerivation = new Derivation(); @@ -2423,6 +2430,8 @@ function PMFGetNextAssignedUser ($application, $task) $aUsers[] = $aUser; } + $g->sessionVarRestore(); + if (count( $aUsers ) == 1) { return $aUser; } else { @@ -2430,6 +2439,7 @@ function PMFGetNextAssignedUser ($application, $task) } } else { + $g->sessionVarRestore(); return false; } }