Merged in bugfix/HOR-3916 (pull request #6148)
HOR-3916 Approved-by: David Callizaya <david.callizaya@processmaker.com> Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
@@ -5664,48 +5664,55 @@ class Cases
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtain all user permits for Dynaforms, Input and output documents
|
* Obtain all user permits for Dynaforms, Input and output documents
|
||||||
|
* function getAllObjects ($proUid, $appUid, $tasUid, $usrUid)
|
||||||
*
|
*
|
||||||
* function getAllObjects ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID)
|
|
||||||
* @author Erik Amaru Ortiz <erik@colosa.com>
|
|
||||||
* @access public
|
* @access public
|
||||||
* @param Process ID, Application ID, Task ID and User ID
|
* @param string $proUid, Process ID
|
||||||
* @return Array within all user permitions all objects' types
|
* @param string $appUid, Application ID,
|
||||||
|
* @param string $tasUid, Task ID
|
||||||
|
* @param string $usrUid, User ID
|
||||||
|
* @param integer $delIndex, User ID
|
||||||
|
*
|
||||||
|
* @return array within all user permissions all objects' types
|
||||||
*/
|
*/
|
||||||
public function getAllObjects($PRO_UID, $APP_UID, $TAS_UID = '', $USR_UID = '', $delIndex = 0)
|
public function getAllObjects($proUid, $appUid, $tasUid = '', $usrUid = '', $delIndex = 0)
|
||||||
{
|
{
|
||||||
$ACTIONS = array('VIEW', 'BLOCK', 'DELETE'); //TO COMPLETE
|
$permissionAction = ['VIEW', 'BLOCK', 'DELETE']; //TO COMPLETE
|
||||||
$MAIN_OBJECTS = array();
|
$mainObjects = [];
|
||||||
$RESULT_OBJECTS = array();
|
$resultObjects = [];
|
||||||
|
|
||||||
foreach ($ACTIONS as $action) {
|
foreach ($permissionAction as $action) {
|
||||||
$MAIN_OBJECTS[$action] = $this->getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $action, $delIndex);
|
$mainObjects[$action] = $this->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, $action, $delIndex);
|
||||||
}
|
}
|
||||||
/* ADDITIONAL OPERATIONS */
|
//We will review data with VIEW and BLOCK
|
||||||
/* * * BETWEN VIEW AND BLOCK** */
|
//Dynaforms BLOCK it means does not show in the list
|
||||||
$RESULT_OBJECTS['DYNAFORMS'] = G::arrayDiff(
|
$resultObjects['DYNAFORMS'] = G::arrayDiff(
|
||||||
$MAIN_OBJECTS['VIEW']['DYNAFORMS'], $MAIN_OBJECTS['BLOCK']['DYNAFORMS']
|
$mainObjects['VIEW']['DYNAFORMS'], $mainObjects['BLOCK']['DYNAFORMS']
|
||||||
);
|
);
|
||||||
$RESULT_OBJECTS['INPUT_DOCUMENTS'] = G::arrayDiff(
|
//Input BLOCK it means does not show in the list
|
||||||
$MAIN_OBJECTS['VIEW']['INPUT_DOCUMENTS'], $MAIN_OBJECTS['BLOCK']['INPUT_DOCUMENTS']
|
$resultObjects['INPUT_DOCUMENTS'] = G::arrayDiff(
|
||||||
|
$mainObjects['VIEW']['INPUT_DOCUMENTS'], $mainObjects['BLOCK']['INPUT_DOCUMENTS']
|
||||||
);
|
);
|
||||||
$RESULT_OBJECTS['OUTPUT_DOCUMENTS'] = array_merge_recursive(
|
//Output BLOCK it means does not show in the list
|
||||||
G::arrayDiff($MAIN_OBJECTS['VIEW']['OUTPUT_DOCUMENTS'], $MAIN_OBJECTS['BLOCK']['OUTPUT_DOCUMENTS']), G::arrayDiff($MAIN_OBJECTS['DELETE']['OUTPUT_DOCUMENTS'], $MAIN_OBJECTS['BLOCK']['OUTPUT_DOCUMENTS'])
|
$resultObjects['OUTPUT_DOCUMENTS'] = array_merge_recursive(
|
||||||
|
G::arrayDiff($mainObjects['VIEW']['OUTPUT_DOCUMENTS'], $mainObjects['BLOCK']['OUTPUT_DOCUMENTS']), G::arrayDiff($mainObjects['DELETE']['OUTPUT_DOCUMENTS'], $mainObjects['BLOCK']['OUTPUT_DOCUMENTS'])
|
||||||
);
|
);
|
||||||
$RESULT_OBJECTS['CASES_NOTES'] = G::arrayDiff(
|
//Case notes BLOCK it means does not show in the list
|
||||||
$MAIN_OBJECTS['VIEW']['CASES_NOTES'], $MAIN_OBJECTS['BLOCK']['CASES_NOTES']
|
$resultObjects['CASES_NOTES'] = G::arrayDiff(
|
||||||
|
$mainObjects['VIEW']['CASES_NOTES'], $mainObjects['BLOCK']['CASES_NOTES']
|
||||||
);
|
);
|
||||||
array_push($RESULT_OBJECTS["DYNAFORMS"], -1, -2);
|
array_push($resultObjects["DYNAFORMS"], -1, -2);
|
||||||
array_push($RESULT_OBJECTS['INPUT_DOCUMENTS'], -1);
|
array_push($resultObjects['INPUT_DOCUMENTS'], -1);
|
||||||
array_push($RESULT_OBJECTS['OUTPUT_DOCUMENTS'], -1);
|
array_push($resultObjects['OUTPUT_DOCUMENTS'], -1);
|
||||||
array_push($RESULT_OBJECTS['CASES_NOTES'], -1);
|
array_push($resultObjects['CASES_NOTES'], -1);
|
||||||
|
|
||||||
return $RESULT_OBJECTS;
|
return $resultObjects;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtain all object permissions for Dynaforms, Input, Output and Message history
|
* Obtain all object permissions for Dynaforms, Input, Output and Message history
|
||||||
*
|
|
||||||
* This function return information about a specific object permissions or for all = ANY
|
* This function return information about a specific object permissions or for all = ANY
|
||||||
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $proUid
|
* @param string $proUid
|
||||||
* @param string $appUid
|
* @param string $appUid
|
||||||
@@ -5713,6 +5720,7 @@ class Cases
|
|||||||
* @param string $usrUid
|
* @param string $usrUid
|
||||||
* @param string $action some action [VIEW, BLOCK, RESEND]
|
* @param string $action some action [VIEW, BLOCK, RESEND]
|
||||||
* @param integer $delIndex
|
* @param integer $delIndex
|
||||||
|
*
|
||||||
* @return array within all user permissions all objects' types
|
* @return array within all user permissions all objects' types
|
||||||
*/
|
*/
|
||||||
public function getAllObjectsFrom($proUid, $appUid, $tasUid = '', $usrUid = '', $action = '', $delIndex = 0)
|
public function getAllObjectsFrom($proUid, $appUid, $tasUid = '', $usrUid = '', $action = '', $delIndex = 0)
|
||||||
@@ -5727,25 +5735,22 @@ class Cases
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$userPermissions = array();
|
$userPermissions = [];
|
||||||
$groupPermissions = array();
|
$groupPermissions = [];
|
||||||
$result = array(
|
|
||||||
"DYNAFORM" => array(),
|
|
||||||
"INPUT" => array(),
|
|
||||||
"ATTACHMENT" => array(),
|
|
||||||
"OUTPUT" => array(),
|
|
||||||
"CASES_NOTES" => 0,
|
|
||||||
"MSGS_HISTORY" => array()
|
|
||||||
/*----------------------------------********---------------------------------*/
|
|
||||||
, "SUMMARY_FORM" => 0
|
|
||||||
/*----------------------------------********---------------------------------*/
|
|
||||||
);
|
|
||||||
|
|
||||||
$oObjectPermission = new ObjectPermission();
|
$objectPermission = new ObjectPermission();
|
||||||
$userPermissions = $oObjectPermission->verifyObjectPermissionPerUser($usrUid, $proUid, $tasUid, $action, $caseData);
|
$userPermissions = $objectPermission->verifyObjectPermissionPerUser($usrUid, $proUid, $tasUid, $action, $caseData);
|
||||||
$groupPermissions = $oObjectPermission->verifyObjectPermissionPerGroup($usrUid, $proUid, $tasUid, $action, $caseData);
|
$groupPermissions = $objectPermission->verifyObjectPermissionPerGroup($usrUid, $proUid, $tasUid, $action, $caseData);
|
||||||
$permissions = array_merge($userPermissions, $groupPermissions);
|
$permissions = array_merge($userPermissions, $groupPermissions);
|
||||||
|
|
||||||
|
$resultDynaforms = [];
|
||||||
|
$resultInputs = [];
|
||||||
|
$resultAttachments = [];
|
||||||
|
$resultOutputs = [];
|
||||||
|
$resultCaseNotes = 0;
|
||||||
|
$resultSummary = 0;
|
||||||
|
$resultMessages = [];
|
||||||
|
|
||||||
foreach ($permissions as $row) {
|
foreach ($permissions as $row) {
|
||||||
$userUid = $row['USR_UID'];
|
$userUid = $row['USR_UID'];
|
||||||
$opUserRelation = $row['OP_USER_RELATION'];
|
$opUserRelation = $row['OP_USER_RELATION'];
|
||||||
@@ -5758,35 +5763,37 @@ class Cases
|
|||||||
//The values of obCaseStatus is [ALL, COMPLETED, DRAFT, TO_DO, PAUSED]
|
//The values of obCaseStatus is [ALL, COMPLETED, DRAFT, TO_DO, PAUSED]
|
||||||
//If the case is todo and we need the participate
|
//If the case is todo and we need the participate
|
||||||
//but we did not participated did not validate nothing and return array empty
|
//but we did not participated did not validate nothing and return array empty
|
||||||
$sw_participate = false; // must be false for default
|
$swParticipate = false; // must be false for default
|
||||||
if ($obCaseStatus != 'COMPLETED' && $opParticipated == 1) {
|
if ($obCaseStatus != 'COMPLETED' && $opParticipated == 1) {
|
||||||
$oCriteriax = new Criteria('workflow');
|
$criteria = new Criteria('workflow');
|
||||||
$oCriteriax->add(AppDelegationPeer::USR_UID, $usrUid);
|
$criteria->add(AppDelegationPeer::USR_UID, $usrUid);
|
||||||
$oCriteriax->add(AppDelegationPeer::APP_UID, $appUid);
|
$criteria->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
$datasetx = AppDelegationPeer::doSelectRS($oCriteriax);
|
$dataset = AppDelegationPeer::doSelectRS($criteria);
|
||||||
$datasetx->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
$datasetx->next();
|
$dataset->next();
|
||||||
$aRow = $datasetx->getRow();
|
$row = $dataset->getRow();
|
||||||
if (!is_array($aRow)) {
|
if (!is_array($row)) {
|
||||||
//The user was not participated in the case and the participation is required
|
//The user was not participated in the case and the participation is required
|
||||||
$sw_participate = true;
|
$swParticipate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//If user can be see the objects process
|
//If user can be see the objects process
|
||||||
//We will be prepare the data relate to the Type can be ANY, DYNAFORM, INPUT, OUTPUT, ...
|
//We will be prepare the data relate to the Type can be ANY, DYNAFORM, INPUT, OUTPUT, ...
|
||||||
if (!$sw_participate) {
|
if (!$swParticipate) {
|
||||||
switch ($opType) {
|
switch ($opType) {
|
||||||
case 'ANY':
|
case 'ANY':
|
||||||
//For dynaforms
|
//For dynaforms
|
||||||
$result['DYNAFORM'] = $oObjectPermission->objectPermissionByDynaform(
|
$listDynaform = $objectPermission->objectPermissionByDynaform(
|
||||||
$appUid,
|
$appUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultDynaforms = array_merge($resultDynaforms, $listDynaform);
|
||||||
|
|
||||||
//For Ouputs
|
//For Ouputs
|
||||||
$result['OUTPUT'] = $oObjectPermission->objectPermissionByOutputInput(
|
$listOutput = $objectPermission->objectPermissionByOutputInput(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
@@ -5794,8 +5801,10 @@ class Cases
|
|||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultOutputs = array_merge($resultOutputs, $listOutput);
|
||||||
|
|
||||||
//For Inputs
|
//For Inputs
|
||||||
$result['INPUT'] = $oObjectPermission->objectPermissionByOutputInput(
|
$listInput = $objectPermission->objectPermissionByOutputInput(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
@@ -5803,8 +5812,10 @@ class Cases
|
|||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultInputs = array_merge($resultInputs, $listInput);
|
||||||
|
|
||||||
//For Attachment
|
//For Attachment
|
||||||
$result['ATTACHMENT'] = $oObjectPermission->objectPermissionByOutputInput(
|
$listAttachment = $objectPermission->objectPermissionByOutputInput(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
@@ -5812,14 +5823,15 @@ class Cases
|
|||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultAttachments = array_merge($resultAttachments, $listAttachment);
|
||||||
|
|
||||||
$result['CASES_NOTES'] = 1;
|
$resultCaseNotes = 1;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
$result['SUMMARY_FORM'] = 1;
|
$resultSummary = 1;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
|
|
||||||
//Message History
|
//Message History
|
||||||
$result['MSGS_HISTORY'] = $oObjectPermission->objectPermissionMessage(
|
$listMessage = $objectPermission->objectPermissionMessage(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$userUid,
|
$userUid,
|
||||||
@@ -5829,17 +5841,19 @@ class Cases
|
|||||||
$caseData['APP_STATUS'],
|
$caseData['APP_STATUS'],
|
||||||
$opParticipated
|
$opParticipated
|
||||||
);
|
);
|
||||||
|
$resultMessages = array_merge($resultMessages, $listMessage);
|
||||||
break;
|
break;
|
||||||
case 'DYNAFORM':
|
case 'DYNAFORM':
|
||||||
$result['DYNAFORM'] = $oObjectPermission->objectPermissionByDynaform(
|
$listDynaform = $objectPermission->objectPermissionByDynaform(
|
||||||
$appUid,
|
$appUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultDynaforms = array_merge($resultDynaforms, $listDynaform);
|
||||||
break;
|
break;
|
||||||
case 'INPUT':
|
case 'INPUT':
|
||||||
$result['INPUT'] = $oObjectPermission->objectPermissionByOutputInput(
|
$listInput = $objectPermission->objectPermissionByOutputInput(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
@@ -5847,9 +5861,10 @@ class Cases
|
|||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultInputs = array_merge($resultInputs, $listInput);
|
||||||
break;
|
break;
|
||||||
case 'ATTACHMENT':
|
case 'ATTACHMENT':
|
||||||
$result['ATTACHMENT'] = $oObjectPermission->objectPermissionByOutputInput(
|
$listAttachment = $objectPermission->objectPermissionByOutputInput(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
@@ -5857,9 +5872,10 @@ class Cases
|
|||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultAttachments = array_merge($resultAttachments, $listAttachment);
|
||||||
break;
|
break;
|
||||||
case 'OUTPUT':
|
case 'OUTPUT':
|
||||||
$result['OUTPUT'] = $oObjectPermission->objectPermissionByOutputInput(
|
$listOutput = $objectPermission->objectPermissionByOutputInput(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
@@ -5867,17 +5883,18 @@ class Cases
|
|||||||
$opObjUid,
|
$opObjUid,
|
||||||
$caseData['APP_STATUS']
|
$caseData['APP_STATUS']
|
||||||
);
|
);
|
||||||
|
$resultOutputs = array_merge($resultOutputs, $listOutput);
|
||||||
break;
|
break;
|
||||||
case 'CASES_NOTES':
|
case 'CASES_NOTES':
|
||||||
$result['CASES_NOTES'] = 1;
|
$resultCaseNotes = 1;
|
||||||
break;
|
break;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
case 'SUMMARY_FORM':
|
case 'SUMMARY_FORM':
|
||||||
$result['SUMMARY_FORM'] = 1;
|
$resultSummary = 1;
|
||||||
break;
|
break;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
case 'MSGS_HISTORY':
|
case 'MSGS_HISTORY':
|
||||||
$result['MSGS_HISTORY'] = $oObjectPermission->objectPermissionMessage(
|
$listMessage= $objectPermission->objectPermissionMessage(
|
||||||
$appUid,
|
$appUid,
|
||||||
$proUid,
|
$proUid,
|
||||||
$userUid,
|
$userUid,
|
||||||
@@ -5887,21 +5904,22 @@ class Cases
|
|||||||
$caseData['APP_STATUS'],
|
$caseData['APP_STATUS'],
|
||||||
$opParticipated
|
$opParticipated
|
||||||
);
|
);
|
||||||
|
$resultMessages = array_merge($resultMessages, $listMessage);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
"DYNAFORMS" => $result['DYNAFORM'],
|
"DYNAFORMS" => $resultDynaforms,
|
||||||
"INPUT_DOCUMENTS" => $result['INPUT'],
|
"INPUT_DOCUMENTS" => $resultInputs,
|
||||||
"ATTACHMENTS" => $result['ATTACHMENT'],
|
"ATTACHMENTS" => $resultAttachments,
|
||||||
"OUTPUT_DOCUMENTS" => $result['OUTPUT'],
|
"OUTPUT_DOCUMENTS" => $resultOutputs,
|
||||||
"CASES_NOTES" => $result['CASES_NOTES'],
|
"CASES_NOTES" => $resultCaseNotes,
|
||||||
"MSGS_HISTORY" => $result['MSGS_HISTORY']
|
"MSGS_HISTORY" => $resultMessages
|
||||||
|
/*----------------------------------********---------------------------------*/
|
||||||
|
, "SUMMARY_FORM" => $resultSummary
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
, "SUMMARY_FORM" => $result['SUMMARY_FORM']
|
|
||||||
/*----------------------------------********---------------------------------*/
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user