diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php index 679241873..f18d0effb 100755 --- a/workflow/engine/classes/class.applications.php +++ b/workflow/engine/classes/class.applications.php @@ -200,6 +200,7 @@ class Applications $CriteriaCount->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); //Previous user + if (($action == "todo" || $action == "selfservice" || $action == "unassigned" || $action == "paused" || $action == "to_revise" || $action == "sent") || ($status == "TO_DO" || $status == "DRAFT" || $status == "PAUSED" || $status == "CANCELLED" || $status == "COMPLETED")) { $Criteria->addAlias( 'PU', 'USERS' ); $Criteria->addJoin( AppCacheViewPeer::PREVIOUS_USR_UID, 'PU.USR_UID', Criteria::LEFT_JOIN ); @@ -407,7 +408,7 @@ class Applications //Check also $distinct in the method getListCounters(), this in AppCacheView.php $distinct = true; - if (($action == "todo" || $action == "selfservice" || $action == "unassigned" || $action == "to_reassign") || ($status == "TO_DO")) { + if (($action == "todo" || $action == "selfservice" || $action == "unassigned" || $action == "to_reassign" || $action == "to_revise") || ($status == "TO_DO")) { $distinct = false; } @@ -429,7 +430,6 @@ class Applications require_once (PATH_DB . SYS_SYS . PATH_SEP . "classes" . PATH_SEP . $tableName . ".php"); } } - $totalCount = AppCacheViewPeer::doCount($CriteriaCount, $distinct); } @@ -528,13 +528,14 @@ class Applications $maxDataset->close(); }*/ - //Current delegation (*) - if (($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") && ($status != "TO_DO")) { + //Current delegation (*) || $action == "search" || $action == "to_revise" + if (($action == "sent" || $action == "simple_search" || $action == "to_reassign") && ($status != "TO_DO")) { //Current task $aRow["APP_TAS_TITLE"] = $aRow["APPCVCR_APP_TAS_TITLE"]; //Current user - if ($action != "to_reassign" ) { + //if ($action != "to_reassign" ) { + if (($action != "to_reassign") && ($action != "search") && ($action != "to revise")) { $aRow["USR_UID"] = $aRow["USRCR_USR_UID"]; $aRow["USR_FIRSTNAME"] = $aRow["USRCR_USR_FIRSTNAME"]; $aRow["USR_LASTNAME"] = $aRow["USRCR_USR_LASTNAME"]; diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 95ce55a41..9d1768b98 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -507,7 +507,7 @@ class Cases * @return Fields */ - public function loadCase($sAppUid, $iDelIndex = 0) + public function loadCase($sAppUid, $iDelIndex = 0, $jump = '') { try { $oApp = new Application; @@ -575,9 +575,25 @@ class Cases $aFields['DEL_FINISH_DATE'] = $aAppDel['DEL_FINISH_DATE']; $aFields['CURRENT_USER_UID'] = $aAppDel['USR_UID']; try { + //$oCurUser = new Users(); + //$oCurUser->load($aAppDel['USR_UID']); + //$aFields['CURRENT_USER'] = $oCurUser->getUsrFirstname() . ' ' . $oCurUser->getUsrLastname(); $oCurUser = new Users(); - $oCurUser->load($aAppDel['USR_UID']); - $aFields['CURRENT_USER'] = $oCurUser->getUsrFirstname() . ' ' . $oCurUser->getUsrLastname(); + if ($jump != '') { + $aCases = $oAppDel->LoadParallel($sAppUid); + $aFields['TAS_UID'] = ''; + $aFields['CURRENT_USER'] = ''; + foreach ($aCases as $key => $value) { + $oCurUser->load($value['USR_UID']); + $aFields['CURRENT_USER'][]= $oCurUser->getUsrFirstname() . ' ' . $oCurUser->getUsrLastname(); + $aFields['TAS_UID'].= $value['TAS_UID'].'-'; + } + $aFields['CURRENT_USER'] = implode(" - ", array_values($aFields['CURRENT_USER'])); + } else { + $oCurUser->load($aAppDel['USR_UID']); + $aFields['CURRENT_USER'] = $oCurUser->getUsrFirstname() . ' ' . $oCurUser->getUsrLastname(); + } + } catch (Exception $oError) { $aFields['CURRENT_USER'] = ''; } diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php index 6cd2af457..748219305 100755 --- a/workflow/engine/classes/model/AppDelegation.php +++ b/workflow/engine/classes/model/AppDelegation.php @@ -203,6 +203,41 @@ class AppDelegation extends BaseAppDelegation } } + /* Load the Application Delegation row specified in [app_id] column value. + * + * @param string $AppUid the uid of the application + * @return array $Fields the fields + */ + + public function LoadParallel ($AppUid) + { + $c = new Criteria( 'workflow' ); + $c->addSelectColumn( AppDelegationPeer::APP_UID ); + $c->addSelectColumn( AppDelegationPeer::DEL_INDEX ); + $c->addSelectColumn( AppDelegationPeer::PRO_UID ); + $c->addSelectColumn( AppDelegationPeer::TAS_UID ); + $c->addSelectColumn( AppDelegationPeer::USR_UID ); + + $c->add( AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN' ); + $c->add( AppDelegationPeer::APP_UID, $AppUid ); + $c->addDescendingOrderByColumn( AppDelegationPeer::DEL_INDEX ); + $rs = AppDelegationPeer::doSelectRS( $c ); + $row= $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + + $rs->next(); + $row = $rs->getRow(); + + while (is_array($row)) { + $case['TAS_UID'] = $row['TAS_UID']; + $case['USR_UID'] = $row['USR_UID']; + $aCases[] = $case; + $rs->next(); + $row = $rs->getRow(); + } + + return $aCases; + } + /** * Update the application row * @@ -290,7 +325,7 @@ class AppDelegation extends BaseAppDelegation $aCalendarUID = ''; } - //use the dates class to calculate dates + //use the dates class to calculate dates $calendar = new calendar(); if ($calendar->pmCalendarUid == '') { diff --git a/workflow/engine/methods/cases/cases_Open.php b/workflow/engine/methods/cases/cases_Open.php index 88bfbadc6..fa4530a7f 100755 --- a/workflow/engine/methods/cases/cases_Open.php +++ b/workflow/engine/methods/cases/cases_Open.php @@ -188,7 +188,14 @@ try { $_SESSION['INDEX'] = $row['DEL_INDEX']; $_SESSION['PROCESS'] = $aFields['PRO_UID']; $_SESSION['TASK'] = - 1; - $Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'] ); + //$Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'] ); + if ($_action == 'jump') { + $Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'], 1); + $_SESSION['ACTION'] = 'jump'; + } else { + $Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX']); + } + $_SESSION['CURRENT_TASK'] = $Fields['TAS_UID']; $_SESSION['STEP_POSITION'] = 0; require_once (PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php'); diff --git a/workflow/engine/methods/cases/cases_Resume.php b/workflow/engine/methods/cases/cases_Resume.php index b705697e8..8c36217ae 100755 --- a/workflow/engine/methods/cases/cases_Resume.php +++ b/workflow/engine/methods/cases/cases_Resume.php @@ -49,7 +49,13 @@ $G_ID_SUB_MENU_SELECTED = '_'; /* Prepare page before to show */ $oCase = new Cases(); -$Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'] ); +//$Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'] ); +if (isset($_SESSION['ACTION']) && ($_SESSION['ACTION'] == 'jump')) { + $Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['ACTION']); +} else { + $Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX']); +} + $participated = $oCase->userParticipatedInCase( $_GET['APP_UID'], $_SESSION['USER_LOGGED'] ); if ($RBAC->userCanAccess( 'PM_ALLCASES' ) < 0 && $participated == 0) { @@ -110,9 +116,21 @@ $aProc = $objProc->load( $Fields['PRO_UID'] ); $Fields['PRO_TITLE'] = $aProc['PRO_TITLE']; $objTask = new Task(); -$aTask = $objTask->load( $Fields['TAS_UID'] ); -$Fields['TAS_TITLE'] = $aTask['TAS_TITLE']; +//$aTask = $objTask->load( $Fields['TAS_UID'] ); +//$Fields['TAS_TITLE'] = $aTask['TAS_TITLE']; +if (isset($_SESSION['ACTION']) && ($_SESSION['ACTION'] == 'jump')) { + $task = explode('-', $Fields['TAS_UID']); + $Fields['TAS_TITLE'] = ''; + for( $i = 0; $i < sizeof($task)-1; $i ++ ) { + $aTask = $objTask->load( $task[$i] ); + $Fields['TAS_TITLE'][] = $aTask['TAS_TITLE']; + } + $Fields['TAS_TITLE'] = implode(" - ", array_values($Fields['TAS_TITLE'])); +} else { + $aTask = $objTask->load( $Fields['TAS_UID'] ); + $Fields['TAS_TITLE'] = $aTask['TAS_TITLE']; +} $oHeadPublisher = & headPublisher::getSingleton(); $oHeadPublisher->addScriptFile( '/jscore/cases/core/cases_Step.js' ); $G_PUBLISH = new Publisher(); diff --git a/workflow/engine/methods/cases/open.php b/workflow/engine/methods/cases/open.php index 79fe84a11..215c9fb70 100755 --- a/workflow/engine/methods/cases/open.php +++ b/workflow/engine/methods/cases/open.php @@ -61,7 +61,12 @@ foreach ($_GET as $k => $v) { $uri .= ($uri == '') ? "$k=$v" : "&$k=$v"; } -$case = $oCase->loadCase( $_GET['APP_UID'], $_GET['DEL_INDEX'] ); +//$case = $oCase->loadCase( $_GET['APP_UID'], $_GET['DEL_INDEX'] ); +if( isset($_GET['action']) && ($_GET['action'] == 'jump') ) { + $case = $oCase->loadCase( $_GET['APP_UID'], $_GET['DEL_INDEX'], $_GET['action']); +} else { + $case = $oCase->loadCase( $_GET['APP_UID'], $_GET['DEL_INDEX'] ); +} if (! isset( $_GET['to_revise'] )) { $script = 'cases_Open?';