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:
Paula Quispe
2017-10-30 15:38:29 +00:00
committed by Julio Cesar Laura Avendaño

View File

@@ -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']
/*----------------------------------********---------------------------------*/
); );
} }