diff --git a/workflow/engine/methods/cases/main_init.php b/workflow/engine/methods/cases/main_init.php index eb242a040..10c9e1bcd 100644 --- a/workflow/engine/methods/cases/main_init.php +++ b/workflow/engine/methods/cases/main_init.php @@ -69,7 +69,6 @@ if (isset($_SESSION['__OPEN_APPLICATION_UID__'])) { $confDefaultOption = 'CASES_SEARCH'; $action = 'search'; - $arrayResult = $case->getStatusInfo($_SESSION['__OPEN_APPLICATION_UID__'], 0, $_SESSION['USER_LOGGED']); $arrayDelIndex = []; @@ -89,9 +88,21 @@ if (isset($_SESSION['__OPEN_APPLICATION_UID__'])) { $arrayDelIndex = $arrayResult['DEL_INDEX']; } else { - $arrayResult = $case->getStatusInfo($_SESSION['__OPEN_APPLICATION_UID__']); - - $arrayDelIndex = $arrayResult['DEL_INDEX']; + $arrayResultData = $case->getStatusInfo($_SESSION['__OPEN_APPLICATION_UID__']); + $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); + $isSupervisor = $supervisor->isUserProcessSupervisor($arrayResultData['PRO_UID'], $_SESSION['USER_LOGGED']); + if ($isSupervisor) { + $arrayResult = $arrayResultData; + $arrayDelIndex = $arrayResultData['DEL_INDEX']; + } else { + $_SESSION['PROCESS'] = $arrayResultData['PRO_UID']; + $_GET['APP_UID'] = $_SESSION['__OPEN_APPLICATION_UID__']; + $_SESSION['ACTION'] = 'jump'; + $_SESSION['APPLICATION'] = $_SESSION['__OPEN_APPLICATION_UID__']; + $_SESSION['INDEX'] = $arrayResultData['DEL_INDEX'][0]; + require_once(PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php'); + exit(); + } } if (count($arrayDelIndex) == 1) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 93c38834f..986069f88 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -2386,7 +2386,7 @@ class Cases if ($rsCriteria->next()) { $record = $rsCriteria->getRow(); - $arrayData = ['APP_STATUS' => $record['APP_STATUS'], 'DEL_INDEX' => []]; + $arrayData = ['APP_STATUS' => $record['APP_STATUS'], 'DEL_INDEX' => [], 'PRO_UID' => $record['PRO_UID']]; $arrayData['DEL_INDEX'][] = $record['DEL_INDEX']; while ($rsCriteria->next()) { @@ -2427,6 +2427,7 @@ class Cases $criteria->setDistinct(); $criteria->addSelectColumn($delimiter . 'PAUSED' . $delimiter . ' AS APP_STATUS'); $criteria->addSelectColumn(\AppDelayPeer::APP_DEL_INDEX . " AS DEL_INDEX"); + $criteria->addSelectColumn(\AppDelayPeer::PRO_UID); $criteria->add(\AppDelayPeer::APP_UID, $applicationUid, \Criteria::EQUAL); $criteria->add(\AppDelayPeer::APP_TYPE, "PAUSE", \Criteria::EQUAL); @@ -2468,6 +2469,7 @@ class Cases $criteria->clearSelectColumns(); $criteria->addSelectColumn($delimiter . 'UNASSIGNED' . $delimiter . ' AS APP_STATUS'); $criteria->addSelectColumn(\AppCacheViewPeer::DEL_INDEX); + $criteria->addSelectColumn(\AppCacheViewPeer::PRO_UID); $criteria->add(\AppCacheViewPeer::APP_UID, $applicationUid, \Criteria::EQUAL); @@ -2489,6 +2491,7 @@ class Cases $criteria->setDistinct(); $criteria->addSelectColumn(\ApplicationPeer::APP_STATUS); + $criteria->addSelectColumn(\ApplicationPeer::PRO_UID); $criteria->addSelectColumn(\AppDelegationPeer::DEL_INDEX); $arrayCondition = array(); @@ -2529,6 +2532,7 @@ class Cases $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\ApplicationPeer::APP_STATUS); + $criteria->addSelectColumn(\ApplicationPeer::PRO_UID); $criteria->addSelectColumn(\AppDelegationPeer::DEL_INDEX); $arrayCondition = array(); @@ -2568,6 +2572,7 @@ class Cases $criteria2->addSelectColumn($delimiter . 'PARTICIPATED' . $delimiter . ' AS APP_STATUS'); $criteria2->addSelectColumn(\AppDelegationPeer::DEL_INDEX); $criteria2->addSelectColumn(\ApplicationPeer::APP_UID); + $criteria2->addSelectColumn(\ApplicationPeer::PRO_UID); $rsCriteria2 = \ApplicationPeer::doSelectRS($criteria2); $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);