Merged in bugfix/HOR-4859 (pull request #6620)
HOR-4859 Approved-by: Dante Loayza <dante.loayza@colosa.com> Approved-by: Paula Quispe <paula.quispe@processmaker.com>
This commit is contained in:
@@ -380,45 +380,57 @@ class Cases
|
||||
return $rows;
|
||||
}
|
||||
|
||||
public function isSelfService($USR_UID, $TAS_UID, $APP_UID = '')
|
||||
/**
|
||||
* Checks if at least one of the user’s tasks is self-service
|
||||
*
|
||||
* @param string $usrUid
|
||||
* @param string $tasUid
|
||||
* @param string $appUid
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isSelfService($usrUid, $tasUid, $appUid = '')
|
||||
{
|
||||
$tasks = $this->getSelfServiceTasks($USR_UID);
|
||||
|
||||
$selfServiceVariable = Task::getVariableUsedInSelfService($tasUid);
|
||||
switch ($selfServiceVariable){
|
||||
case Task::TASK_ASSIGN_TYPE_NO_SELF_SERVICE:
|
||||
return false;
|
||||
break;
|
||||
case Task::SELF_SERVICE_WITHOUT_VARIABLE:
|
||||
$tasks = $this->getSelfServiceTasks($usrUid);
|
||||
foreach ($tasks as $key => $val) {
|
||||
if ($TAS_UID === $val['uid']) {
|
||||
if ($tasUid === $val['uid']) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($APP_UID)) {
|
||||
$task = new Task();
|
||||
$arrayTaskData = $task->load($TAS_UID);
|
||||
|
||||
$taskGroupVariable = trim($arrayTaskData['TAS_GROUP_VARIABLE'], ' @#');
|
||||
|
||||
$caseData = $this->loadCase($APP_UID);
|
||||
|
||||
if (isset($caseData['APP_DATA'][$taskGroupVariable])) {
|
||||
$dataVariable = $caseData['APP_DATA'][$taskGroupVariable];
|
||||
|
||||
return false;
|
||||
break;
|
||||
default://When is "Self Service Value Based Assignment"
|
||||
if (!empty($appUid)) {
|
||||
//If is Self service Value Based we will be get the value of variable defined in $selfServiceType
|
||||
$selfServiceType = trim($selfServiceVariable, ' @#');
|
||||
$caseData = $this->loadCase($appUid);
|
||||
if (isset($caseData['APP_DATA'][$selfServiceType])) {
|
||||
$dataVariable = $caseData['APP_DATA'][$selfServiceType];
|
||||
if (empty($dataVariable)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$dataVariable = is_array($dataVariable) ? $dataVariable : (array)trim($dataVariable);
|
||||
|
||||
if (in_array($USR_UID, $dataVariable, true)) {
|
||||
if (in_array($usrUid, $dataVariable, true)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$groups = new Groups();
|
||||
foreach ($groups->getActiveGroupsForAnUser($USR_UID) as $key => $group) {
|
||||
foreach ($groups->getActiveGroupsForAnUser($usrUid) as $key => $group) {
|
||||
if (in_array($group, $dataVariable, true)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
*/
|
||||
class Task extends BaseTask
|
||||
{
|
||||
const TASK_ASSIGN_TYPE_NO_SELF_SERVICE = null;
|
||||
const TASK_ASSIGN_TYPE_SELF_SERVICE = 'SELF_SERVICE';
|
||||
const SELF_SERVICE_WITHOUT_VARIABLE = 'YES';
|
||||
|
||||
const tas_type_events = [
|
||||
'INTERMEDIATE-THROW-MESSAGE-EVENT',
|
||||
'INTERMEDIATE-THROW-EMAIL-EVENT',
|
||||
@@ -845,6 +849,38 @@ class Task extends BaseTask
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Review if the task is "Self Service"
|
||||
* If the task is not self service, the function returns null
|
||||
* If the task is self service, the function returns the self service variable
|
||||
*
|
||||
* @param string $tasUid
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public static function getVariableUsedInSelfService($tasUid)
|
||||
{
|
||||
$criteria = new Criteria();
|
||||
$criteria->add(TaskPeer::TAS_UID, $tasUid);
|
||||
$task = TaskPeer::doSelectOne($criteria);
|
||||
if (!is_null($task)) {
|
||||
//Review if is "Self Service"
|
||||
if ($task->getTasAssignType() === self::TASK_ASSIGN_TYPE_SELF_SERVICE) {
|
||||
$variableInSelfService = $task->getTasGroupVariable();
|
||||
//Review if is "Self Service Value Based Assignment"
|
||||
if (empty($variableInSelfService)) {
|
||||
return self::SELF_SERVICE_WITHOUT_VARIABLE;
|
||||
} else {
|
||||
return $variableInSelfService;
|
||||
}
|
||||
} else {
|
||||
self::TASK_ASSIGN_TYPE_NO_SELF_SERVICE;
|
||||
}
|
||||
} else {
|
||||
self::TASK_ASSIGN_TYPE_NO_SELF_SERVICE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ if ($RBAC->userCanAccess( 'PM_CASES' ) != 1) {
|
||||
}
|
||||
}
|
||||
|
||||
$oCase = new Cases();
|
||||
$caseInstance = new Cases();
|
||||
|
||||
//cleaning the case session data
|
||||
Cases::clearCaseSessionData();
|
||||
@@ -49,8 +49,8 @@ Cases::clearCaseSessionData();
|
||||
try {
|
||||
//Loading data for a Jump request
|
||||
if (!isset($_GET['APP_UID']) && isset($_GET['APP_NUMBER'])) {
|
||||
$_GET['APP_UID'] = $oCase->getApplicationUIDByNumber( $_GET['APP_NUMBER'] );
|
||||
$_GET['DEL_INDEX'] = $oCase->getCurrentDelegation( $_GET['APP_UID'], $_SESSION['USER_LOGGED'] );
|
||||
$_GET['APP_UID'] = $caseInstance->getApplicationUIDByNumber( $_GET['APP_NUMBER'] );
|
||||
$_GET['DEL_INDEX'] = $caseInstance->getCurrentDelegation( $_GET['APP_UID'], $_SESSION['USER_LOGGED'] );
|
||||
|
||||
//if the application doesn't exist
|
||||
if (is_null($_GET['APP_UID'])) {
|
||||
@@ -65,8 +65,6 @@ try {
|
||||
G::header( 'location: casesListExtJs' );
|
||||
exit();
|
||||
}
|
||||
//wrong implemented, need refactored
|
||||
//$participated = $oCase->userParticipatedInCase($_GET['APP_UID'], $_SESSION['USER_LOGGED']); ???????
|
||||
}
|
||||
|
||||
$sAppUid = $_GET['APP_UID'];
|
||||
@@ -74,7 +72,7 @@ try {
|
||||
$_action = isset($_GET['action']) ? $_GET['action'] : '';
|
||||
|
||||
//loading application data
|
||||
$aFields = $oCase->loadCase( $sAppUid, $iDelIndex );
|
||||
$aFields = $caseInstance->loadCase( $sAppUid, $iDelIndex );
|
||||
|
||||
if (!isset($_SESSION['CURRENT_TASK'])) {
|
||||
$_SESSION['CURRENT_TASK'] = $aFields['TAS_UID'];
|
||||
@@ -149,7 +147,7 @@ try {
|
||||
$_SESSION['CURRENT_TASK'] = $aFields['TAS_UID'];
|
||||
|
||||
//if the task is in the valid selfservice tasks for this user, then catch the case, else just view the resume
|
||||
if ($oCase->isSelfService( $_SESSION['USER_LOGGED'], $aFields['TAS_UID'], $sAppUid )) {
|
||||
if ($caseInstance->isSelfService($_SESSION['USER_LOGGED'], $aFields['TAS_UID'], $sAppUid)) {
|
||||
require_once(PATH_METHODS . 'cases' . PATH_SEP . 'cases_CatchSelfService.php');
|
||||
} else {
|
||||
require_once(PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php');
|
||||
@@ -164,8 +162,8 @@ try {
|
||||
$_SESSION['INDEX'] = $iDelIndex;
|
||||
|
||||
if (is_null( $aFields['DEL_INIT_DATE'] )) {
|
||||
$oCase->setDelInitDate( $sAppUid, $iDelIndex );
|
||||
$aFields = $oCase->loadCase( $sAppUid, $iDelIndex );
|
||||
$caseInstance->setDelInitDate( $sAppUid, $iDelIndex );
|
||||
$aFields = $caseInstance->loadCase( $sAppUid, $iDelIndex );
|
||||
}
|
||||
|
||||
$_SESSION['PROCESS'] = $aFields['PRO_UID'];
|
||||
@@ -176,10 +174,10 @@ try {
|
||||
unset( $_SESSION['bNoShowSteps'] );
|
||||
|
||||
/* Execute Before Triggers for first Task*/
|
||||
$oCase->getExecuteTriggerProcess($sAppUid, 'OPEN');
|
||||
$caseInstance->getExecuteTriggerProcess($sAppUid, 'OPEN');
|
||||
/*end Execute Before Triggers for first Task*/
|
||||
|
||||
$aNextStep = $oCase->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] );
|
||||
$aNextStep = $caseInstance->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] );
|
||||
$sPage = $aNextStep['PAGE'];
|
||||
G::header( 'location: ' . $sPage );
|
||||
|
||||
@@ -208,7 +206,7 @@ try {
|
||||
$_SESSION['INDEX'] = $row['DEL_INDEX'];
|
||||
}
|
||||
|
||||
$Fields = $oCase->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $flagJump);
|
||||
$Fields = $caseInstance->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $flagJump);
|
||||
|
||||
$_SESSION['CURRENT_TASK'] = $Fields['TAS_UID'];
|
||||
require_once (PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php');
|
||||
@@ -217,11 +215,11 @@ try {
|
||||
break;
|
||||
default: //APP_STATUS IS COMPLETED OR CANCELLED
|
||||
$_SESSION['APPLICATION'] = $sAppUid;
|
||||
$_SESSION['INDEX'] = $oCase->getCurrentDelegationCase( $_GET['APP_UID'] );
|
||||
$_SESSION['INDEX'] = $caseInstance->getCurrentDelegationCase( $_GET['APP_UID'] );
|
||||
$_SESSION['PROCESS'] = $aFields['PRO_UID'];
|
||||
$_SESSION['TASK'] = - 1;
|
||||
$_SESSION['STEP_POSITION'] = 0;
|
||||
$Fields = $oCase->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $flagJump);
|
||||
$Fields = $caseInstance->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $flagJump);
|
||||
$_SESSION['CURRENT_TASK'] = $Fields['TAS_UID'];
|
||||
|
||||
require_once (PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php');
|
||||
|
||||
Reference in New Issue
Block a user