From 093558e1d0e763cac3e9ba627e5013b35c86e02c Mon Sep 17 00:00:00 2001 From: jennylee Date: Mon, 29 Oct 2012 16:41:27 -0400 Subject: [PATCH 1/2] 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 { From c0a9d2b75cb7969b0b2d1147403d6dde372d1d38 Mon Sep 17 00:00:00 2001 From: jennylee Date: Tue, 30 Oct 2012 09:03:50 -0400 Subject: [PATCH 2/2] 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 | 87 +++++++++---------- 1 file changed, 39 insertions(+), 48 deletions(-) diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 442eb7835..3cf059205 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -419,6 +419,42 @@ class AppCacheView extends BaseAppCacheView return $this->getUnassigned($userUid, false); } + public function getProUidSupervisor($userUid) + { + //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(); + } + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); + $oCriteria->addJoin(ProcessUserPeer::USR_UID, GroupUserPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(GroupUserPeer::USR_UID, $userUid); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aProcesses[] = $aRow['PRO_UID']; + $oDataset->next(); + } + + return $aProcesses; + } + /** * gets the PAUSED cases list criteria * param $userUid the current userUid @@ -427,23 +463,6 @@ 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'])) { @@ -452,6 +471,8 @@ class AppCacheView extends BaseAppCacheView $criteria = $this->addPMFieldsToCriteria('paused'); } + $aProcesses = $this->getProUidSupervisor($userUid); + //add a validation to show the processes of which $userUid is supervisor //$criteria->add(AppCacheViewPeer::USR_UID, $userUid); $criteria->add( @@ -503,37 +524,7 @@ class AppCacheView extends BaseAppCacheView */ public function getToRevise($userUid, $doCount) { - require_once ('classes/model/ProcessUser.php'); - require_once ('classes/model/GroupUser.php'); - - //adding configuration fields from the configuration options - //and forming the criteria object - $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(); - } - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); - $oCriteria->addJoin(ProcessUserPeer::USR_UID, GroupUserPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(GroupUserPeer::USR_UID, $userUid); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - while ($aRow = $oDataset->getRow()) { - $aProcesses[] = $aRow['PRO_UID']; - $oDataset->next(); - } + $aProcesses = $this->getProUidSupervisor($userUid, $doCount); if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { $c = new Criteria('workflow');