From 093558e1d0e763cac3e9ba627e5013b35c86e02c Mon Sep 17 00:00:00 2001 From: jennylee Date: Mon, 29 Oct 2012 16:41:27 -0400 Subject: [PATCH] BUG-8905 Unpause a Case from a supervisor session. I modified the function getPaused, in file 'workflow/engine/classes/model/AppCacheView.php', showing the cases that are paused by the current user and the ones that he supervises. --- .../engine/classes/model/AppCacheView.php | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 21287c419..442eb7835 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -427,6 +427,23 @@ class AppCacheView extends BaseAppCacheView */ public function getPaused($userUid, $doCount) { + //finding cases PRO_UID where $userUid is supervising + require_once ('classes/model/ProcessUser.php'); + require_once ('classes/model/GroupUser.php'); + + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ProcessUserPeer::USR_UID, $userUid); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aProcesses = array(); + + while ($aRow = $oDataset->getRow()) { + $aProcesses[] = $aRow['PRO_UID']; + $oDataset->next(); + } + //adding configuration fields from the configuration options //and forming the criteria object if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { @@ -435,7 +452,12 @@ class AppCacheView extends BaseAppCacheView $criteria = $this->addPMFieldsToCriteria('paused'); } - $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + //add a validation to show the processes of which $userUid is supervisor + //$criteria->add(AppCacheViewPeer::USR_UID, $userUid); + $criteria->add( + $criteria->getNewCriterion(AppCacheViewPeer::USR_UID, $userUid)-> + addOr($criteria->getNewCriterion(AppCacheViewPeer::PRO_UID, $aProcesses, Criteria::IN)) + ); //join with APP_DELAY table using APP_UID and DEL_INDEX $appDelayConds[] = array(AppCacheViewPeer::APP_UID, AppDelayPeer::APP_UID); @@ -513,7 +535,6 @@ class AppCacheView extends BaseAppCacheView $oDataset->next(); } - if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { $c = new Criteria('workflow'); } else {