Merged in bugfix/HOR-2857 (pull request #5530)
HOR-2857 Approved-by: Julio Cesar Laura Avendaño
This commit is contained in:
@@ -5808,139 +5808,87 @@ class Cases
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtain all user permits for Dynaforms, Input and output documents from some action [VIEW, BLOCK, etc...]
|
* Obtain all object permissions for Dynaforms, Input, Output and Message history
|
||||||
*
|
*
|
||||||
* function getAllObjectsFrom ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $ACTION)
|
* This function return information about a specific object permissions or for all = ANY
|
||||||
* @author Erik Amaru Ortiz <erik@colosa.com>
|
|
||||||
* @access public
|
* @access public
|
||||||
* @param Process ID, Application ID, Task ID, User ID, Action, Delegation index
|
* @param string $proUid
|
||||||
|
* @param string $appUid
|
||||||
|
* @param string $tasUid
|
||||||
|
* @param string $usrUid
|
||||||
|
* @param string $action some action [VIEW, BLOCK, RESEND]
|
||||||
|
* @param string $delIndex
|
||||||
* @return Array within all user permitions all objects' types
|
* @return Array within all user permitions all objects' types
|
||||||
*/
|
*/
|
||||||
public function getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID = "", $USR_UID = "", $ACTION = "", $delIndex = 0)
|
public function getAllObjectsFrom($proUid, $appUid, $tasUid = '', $usrUid = '', $action = '', $delIndex = 0)
|
||||||
{
|
{
|
||||||
$aCase = $this->loadCase($APP_UID);
|
$aCase = $this->loadCase($appUid);
|
||||||
|
|
||||||
if ($delIndex != 0) {
|
if ($delIndex != 0) {
|
||||||
$appDelay = new AppDelay();
|
$appDelay = new AppDelay();
|
||||||
|
|
||||||
if ($appDelay->isPaused($APP_UID, $delIndex)) {
|
if ($appDelay->isPaused($appUid, $delIndex)) {
|
||||||
$aCase["APP_STATUS"] = "PAUSED";
|
$aCase["APP_STATUS"] = "PAUSED";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$USER_PERMISSIONS = Array();
|
$userPermissions = array();
|
||||||
$GROUP_PERMISSIONS = Array();
|
$groupPermissions = array();
|
||||||
$RESULT = Array(
|
$result = array(
|
||||||
"DYNAFORM" => Array(),
|
"DYNAFORM" => array(),
|
||||||
"INPUT" => Array(),
|
"INPUT" => array(),
|
||||||
"OUTPUT" => Array(),
|
"OUTPUT" => array(),
|
||||||
"CASES_NOTES" => 0,
|
"CASES_NOTES" => 0,
|
||||||
"MSGS_HISTORY" => Array()
|
"MSGS_HISTORY" => array()
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
,"SUMMARY_FORM" => 0
|
,"SUMMARY_FORM" => 0
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
);
|
);
|
||||||
|
|
||||||
//permissions per user
|
$oObjectPermission = new ObjectPermission();
|
||||||
$oCriteria = new Criteria('workflow');
|
$userPermissions = $oObjectPermission->verifyObjectPermissionPerUser($usrUid, $proUid, $tasUid, $action);
|
||||||
$oCriteria->add(
|
$groupPermissions = $oObjectPermission->verifyObjectPermissionPerGroup($usrUid, $proUid, $tasUid, $action);
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $USR_UID)->addOr(
|
$permissions = array_merge($userPermissions, $groupPermissions);
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);
|
|
||||||
$oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);
|
|
||||||
$oCriteria->add(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$rs = ObjectPermissionPeer::doSelectRS($oCriteria);
|
foreach ($permissions as $row) {
|
||||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$userUid = $row['USR_UID'];
|
||||||
|
$opUserRelation = $row['OP_USER_RELATION'];
|
||||||
|
$opTaskSource = $row['OP_TASK_SOURCE'];
|
||||||
|
$opParticipated = (int)$row['OP_PARTICIPATE'];
|
||||||
|
$opType = $row['OP_OBJ_TYPE'];
|
||||||
|
$opObjUid = $row['OP_OBJ_UID'];
|
||||||
|
$obCaseStatus = $row['OP_CASE_STATUS'];
|
||||||
|
|
||||||
while ($rs->next()) {
|
//The values of obCaseStatus is [ALL, COMPLETED, DRAFT, TO_DO, PAUSED]
|
||||||
$row = $rs->getRow();
|
//If the case is todo and we need the participate
|
||||||
|
//but we did not participated did not validate nothing and return array empty
|
||||||
if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||
|
|
||||||
$row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]
|
|
||||||
) {
|
|
||||||
array_push($USER_PERMISSIONS, $row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//permissions per group
|
|
||||||
G::loadClass('groups');
|
|
||||||
|
|
||||||
$gr = new Groups();
|
|
||||||
$records = $gr->getActiveGroupsForAnUser($USR_UID);
|
|
||||||
|
|
||||||
foreach ($records as $group) {
|
|
||||||
$oCriteria = new Criteria('workflow');
|
|
||||||
$oCriteria->add(ObjectPermissionPeer::USR_UID, $group);
|
|
||||||
$oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);
|
|
||||||
$oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);
|
|
||||||
$oCriteria->add(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(
|
|
||||||
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$rs = ObjectPermissionPeer::doSelectRS($oCriteria);
|
|
||||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
while ($rs->next()) {
|
|
||||||
$row = $rs->getRow();
|
|
||||||
|
|
||||||
if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||
|
|
||||||
$row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]
|
|
||||||
) {
|
|
||||||
array_push($GROUP_PERMISSIONS, $row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS);
|
|
||||||
|
|
||||||
foreach ($PERMISSIONS as $row) {
|
|
||||||
$USER = $row['USR_UID'];
|
|
||||||
$USER_RELATION = $row['OP_USER_RELATION'];
|
|
||||||
$TASK_SOURCE = $row['OP_TASK_SOURCE'];
|
|
||||||
$PARTICIPATE = $row['OP_PARTICIPATE'];
|
|
||||||
$O_TYPE = $row['OP_OBJ_TYPE'];
|
|
||||||
$O_UID = $row['OP_OBJ_UID'];
|
|
||||||
$ACTION = $row['OP_ACTION'];
|
|
||||||
$CASE_STATUS = $row['OP_CASE_STATUS'];
|
|
||||||
|
|
||||||
// here!,. we should verify $PARTICIPATE
|
|
||||||
$sw_participate = false; // must be false for default
|
$sw_participate = false; // must be false for default
|
||||||
if (($row['OP_CASE_STATUS'] != 'COMPLETED') && ($row['OP_CASE_STATUS'] != '') && ($row['OP_CASE_STATUS'] != '0')) {
|
if ($obCaseStatus != 'COMPLETED' && $opParticipated == 1) {
|
||||||
if ($PARTICIPATE == 1) {
|
$oCriteriax = new Criteria('workflow');
|
||||||
$oCriteriax = new Criteria('workflow');
|
$oCriteriax->add(AppDelegationPeer::USR_UID, $usrUid);
|
||||||
$oCriteriax->add(AppDelegationPeer::USR_UID, $USR_UID);
|
$oCriteriax->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
$oCriteriax->add(AppDelegationPeer::APP_UID, $APP_UID);
|
$datasetx = AppDelegationPeer::doSelectRS($oCriteriax);
|
||||||
|
$datasetx->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
if (AppDelegationPeer::doCount($oCriteriax) == 0) {
|
$datasetx->next();
|
||||||
$sw_participate = true;
|
$aRow = $datasetx->getRow();
|
||||||
}
|
if (!is_array($aRow)) {
|
||||||
|
//The user was not participated in the case and the participation is required
|
||||||
|
$sw_participate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If need need to check more details about the permissions
|
||||||
if (!$sw_participate) {
|
if (!$sw_participate) {
|
||||||
switch ($O_TYPE) {
|
switch ($opType) {
|
||||||
case 'ANY':
|
case 'ANY':
|
||||||
//for dynaforms
|
//for dynaforms
|
||||||
$oCriteria = new Criteria('workflow');
|
$oCriteria = new Criteria('workflow');
|
||||||
$oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
|
$oCriteria->add(ApplicationPeer::APP_UID, $appUid);
|
||||||
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
|
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
|
||||||
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
|
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) {
|
||||||
$oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);
|
$oCriteria->add(StepPeer::TAS_UID, $opTaskSource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
|
$oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
|
||||||
@@ -5952,8 +5900,8 @@ class Cases
|
|||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
|
|
||||||
while ($aRow = $oDataset->getRow()) {
|
while ($aRow = $oDataset->getRow()) {
|
||||||
if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {
|
if (!in_array($aRow['DYN_UID'], $result['DYNAFORM'])) {
|
||||||
array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);
|
array_push($result['DYNAFORM'], $aRow['DYN_UID']);
|
||||||
}
|
}
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
}
|
}
|
||||||
@@ -5968,11 +5916,11 @@ class Cases
|
|||||||
$arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);
|
$arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);
|
||||||
$oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
|
$oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
|
||||||
|
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
|
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
|
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) {
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
|
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$oCriteria->add(
|
$oCriteria->add(
|
||||||
@@ -5991,70 +5939,36 @@ class Cases
|
|||||||
if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
|
if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
|
||||||
$aRow['APP_DOC_TYPE'] = "INPUT";
|
$aRow['APP_DOC_TYPE'] = "INPUT";
|
||||||
}
|
}
|
||||||
if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {
|
if (!in_array($aRow['APP_DOC_UID'], $result[$aRow['APP_DOC_TYPE']])) {
|
||||||
array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);
|
array_push($result[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$RESULT['CASES_NOTES'] = 1;
|
$result['CASES_NOTES'] = 1;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
$RESULT['SUMMARY_FORM'] = 1;
|
$result['SUMMARY_FORM'] = 1;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
|
|
||||||
// Message History
|
// Message History
|
||||||
$RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);
|
$result['MSGS_HISTORY'] = $oObjectPermission->objectPermissionMessage(
|
||||||
|
$appUid,
|
||||||
$arrayDelIndex = array();
|
$proUid,
|
||||||
|
$userUid,
|
||||||
$oCriteria = new Criteria('workflow');
|
$action,
|
||||||
if ($USER_RELATION == 1) {
|
$opTaskSource,
|
||||||
//Users
|
$opUserRelation,
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
|
$aCase['APP_STATUS'],
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
|
$opParticipated
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
);
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$oCriteria->add(AppDelegationPeer::USR_UID, $USER);
|
|
||||||
|
|
||||||
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
|
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
$oDataset->next();
|
|
||||||
while ($aRow = $oDataset->getRow()) {
|
|
||||||
$arrayDelIndex[] = $aRow["DEL_INDEX"];
|
|
||||||
$oDataset->next();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Groups
|
|
||||||
$oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);
|
|
||||||
$oCriteria->add(GroupUserPeer::GRP_UID, $USER);
|
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
|
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
|
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
|
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
$oDataset->next();
|
|
||||||
while ($aRow = $oDataset->getRow()) {
|
|
||||||
$arrayDelIndex[] = $aRow["DEL_INDEX"];
|
|
||||||
$oDataset->next();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);
|
|
||||||
break;
|
break;
|
||||||
case 'DYNAFORM':
|
case 'DYNAFORM':
|
||||||
$oCriteria = new Criteria('workflow');
|
$oCriteria = new Criteria('workflow');
|
||||||
$oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
|
$oCriteria->add(ApplicationPeer::APP_UID, $appUid);
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0") {
|
if ($opTaskSource != '' && $opTaskSource != "0") {
|
||||||
$oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);
|
$oCriteria->add(StepPeer::TAS_UID, $opTaskSource);
|
||||||
}
|
}
|
||||||
if ($O_UID != '' && $O_UID != '0') {
|
if ($opObjUid != '' && $opObjUid != '0') {
|
||||||
$oCriteria->add(DynaformPeer::DYN_UID, $O_UID);
|
$oCriteria->add(DynaformPeer::DYN_UID, $opObjUid);
|
||||||
}
|
}
|
||||||
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
|
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
|
||||||
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
|
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
|
||||||
@@ -6067,8 +5981,8 @@ class Cases
|
|||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
|
|
||||||
while ($aRow = $oDataset->getRow()) {
|
while ($aRow = $oDataset->getRow()) {
|
||||||
if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {
|
if (!in_array($aRow['DYN_UID'], $result['DYNAFORM'])) {
|
||||||
array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);
|
array_push($result['DYNAFORM'], $aRow['DYN_UID']);
|
||||||
}
|
}
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
}
|
}
|
||||||
@@ -6083,15 +5997,15 @@ class Cases
|
|||||||
$oCriteria = new Criteria('workflow');
|
$oCriteria = new Criteria('workflow');
|
||||||
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
|
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
|
||||||
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
|
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
|
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
|
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) {
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
|
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($O_UID != '' && $O_UID != '0') {
|
if ($opObjUid != '' && $opObjUid != '0') {
|
||||||
$oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);
|
$oCriteria->add(AppDocumentPeer::DOC_UID, $opObjUid);
|
||||||
}
|
}
|
||||||
if ($obj_type == 'INPUT') {
|
if ($obj_type == 'INPUT') {
|
||||||
$oCriteria->add(
|
$oCriteria->add(
|
||||||
@@ -6111,8 +6025,8 @@ class Cases
|
|||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
while ($aRow = $oDataset->getRow()) {
|
while ($aRow = $oDataset->getRow()) {
|
||||||
if (!in_array($aRow['APP_DOC_UID'], $RESULT[$obj_type])) {
|
if (!in_array($aRow['APP_DOC_UID'], $result[$obj_type])) {
|
||||||
array_push($RESULT[$obj_type], $aRow['APP_DOC_UID']);
|
array_push($result[$obj_type], $aRow['APP_DOC_UID']);
|
||||||
}
|
}
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
}
|
}
|
||||||
@@ -6121,10 +6035,10 @@ class Cases
|
|||||||
$oCriteria = new Criteria('workflow');
|
$oCriteria = new Criteria('workflow');
|
||||||
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
|
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
|
||||||
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
|
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
|
||||||
$oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
|
$oCriteria->add(ApplicationPeer::APP_UID, $appUid);
|
||||||
$oCriteria->add(ApplicationPeer::PRO_UID, $PRO_UID);
|
$oCriteria->add(ApplicationPeer::PRO_UID, $proUid);
|
||||||
if ($O_UID != '' && $O_UID != '0') {
|
if ($opObjUid != '' && $opObjUid != '0') {
|
||||||
$oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);
|
$oCriteria->add(AppDocumentPeer::DOC_UID, $opObjUid);
|
||||||
}
|
}
|
||||||
$oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT');
|
$oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT');
|
||||||
$oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000);
|
$oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000);
|
||||||
@@ -6135,75 +6049,46 @@ class Cases
|
|||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
while ($aRow = $oDataset->getRow()) {
|
while ($aRow = $oDataset->getRow()) {
|
||||||
if (!in_array($aRow['APP_DOC_UID'], $RESULT['INPUT'])) {
|
if (!in_array($aRow['APP_DOC_UID'], $result['INPUT'])) {
|
||||||
array_push($RESULT['INPUT'], $aRow['APP_DOC_UID']);
|
array_push($result['INPUT'], $aRow['APP_DOC_UID']);
|
||||||
}
|
}
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'CASES_NOTES':
|
case 'CASES_NOTES':
|
||||||
$RESULT['CASES_NOTES'] = 1;
|
$result['CASES_NOTES'] = 1;
|
||||||
break;
|
break;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
case 'SUMMARY_FORM':
|
case 'SUMMARY_FORM':
|
||||||
$RESULT['SUMMARY_FORM'] = 1;
|
$result['SUMMARY_FORM'] = 1;
|
||||||
break;
|
break;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
case 'MSGS_HISTORY':
|
case 'MSGS_HISTORY':
|
||||||
// Permission
|
$result['MSGS_HISTORY'] = $oObjectPermission->objectPermissionMessage(
|
||||||
$RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);
|
$appUid,
|
||||||
$arrayDelIndex = array();
|
$proUid,
|
||||||
$oCriteria = new Criteria('workflow');
|
$userUid,
|
||||||
if ($USER_RELATION == 1) {
|
$action,
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
|
$opTaskSource,
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
|
$opUserRelation,
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
$aCase['APP_STATUS'],
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
$opParticipated
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
|
);
|
||||||
}
|
|
||||||
}
|
|
||||||
$oCriteria->add(AppDelegationPeer::USR_UID, $USER);
|
|
||||||
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
|
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
$oDataset->next();
|
|
||||||
while ($aRow = $oDataset->getRow()) {
|
|
||||||
$arrayDelIndex[] = $aRow["DEL_INDEX"];
|
|
||||||
$oDataset->next();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Groups
|
|
||||||
$oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);
|
|
||||||
$oCriteria->add(GroupUserPeer::GRP_UID, $USER);
|
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
|
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
|
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
|
||||||
if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
|
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
|
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
$oDataset->next();
|
|
||||||
while ($aRow = $oDataset->getRow()) {
|
|
||||||
$arrayDelIndex[] = $aRow["DEL_INDEX"];
|
|
||||||
$oDataset->next();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Array(
|
return Array(
|
||||||
"DYNAFORMS" => $RESULT['DYNAFORM'],
|
"DYNAFORMS" => $result['DYNAFORM'],
|
||||||
"INPUT_DOCUMENTS" => $RESULT['INPUT'],
|
"INPUT_DOCUMENTS" => $result['INPUT'],
|
||||||
"OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'],
|
"OUTPUT_DOCUMENTS" => $result['OUTPUT'],
|
||||||
"CASES_NOTES" => $RESULT['CASES_NOTES'],
|
"CASES_NOTES" => $result['CASES_NOTES'],
|
||||||
"MSGS_HISTORY" => $RESULT['MSGS_HISTORY']
|
"MSGS_HISTORY" => $result['MSGS_HISTORY']
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
,"SUMMARY_FORM" => $RESULT['SUMMARY_FORM']
|
,"SUMMARY_FORM" => $result['SUMMARY_FORM']
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,5 +149,164 @@ class ObjectPermission extends BaseObjectPermission
|
|||||||
}
|
}
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify if the user has a objectPermission
|
||||||
|
*
|
||||||
|
* @param string $usrUid the uid of the user
|
||||||
|
* @param string $proUid the uid of the process
|
||||||
|
* @param string $tasUid the uid of the task
|
||||||
|
* @param string $action for the object permissions VIEW, BLOCK, RESEND
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function verifyObjectPermissionPerUser ($usrUid, $proUid, $tasUid = '', $action = '')
|
||||||
|
{
|
||||||
|
$userPermissions = array();
|
||||||
|
$oCriteria = new Criteria('workflow');
|
||||||
|
$oCriteria->add(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $usrUid)->addOr(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$oCriteria->add(ObjectPermissionPeer::PRO_UID, $proUid);
|
||||||
|
$oCriteria->add(ObjectPermissionPeer::OP_ACTION, $action);
|
||||||
|
$oCriteria->add(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $tasUid)->addOr(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$rs = ObjectPermissionPeer::doSelectRS($oCriteria);
|
||||||
|
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
|
||||||
|
while ($rs->next()) {
|
||||||
|
$row = $rs->getRow();
|
||||||
|
|
||||||
|
if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||
|
||||||
|
$row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]
|
||||||
|
) {
|
||||||
|
array_push($userPermissions, $row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $userPermissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify if the user has a objectPermission
|
||||||
|
*
|
||||||
|
* @param string $usrUid the uid of the user
|
||||||
|
* @param string $proUid the uid of the process
|
||||||
|
* @param string $tasUid the uid of the task
|
||||||
|
* @param string $action for the object permissions VIEW, BLOCK, RESEND
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function verifyObjectPermissionPerGroup ($usrUid, $proUid, $tasUid = '', $action = '')
|
||||||
|
{
|
||||||
|
G::loadClass('groups');
|
||||||
|
$gr = new Groups();
|
||||||
|
$records = $gr->getActiveGroupsForAnUser($usrUid);
|
||||||
|
$groupPermissions = array();
|
||||||
|
|
||||||
|
foreach ($records as $group) {
|
||||||
|
$oCriteria = new Criteria('workflow');
|
||||||
|
$oCriteria->add(ObjectPermissionPeer::USR_UID, $group);
|
||||||
|
$oCriteria->add(ObjectPermissionPeer::PRO_UID, $proUid);
|
||||||
|
$oCriteria->add(ObjectPermissionPeer::OP_ACTION, $action);
|
||||||
|
$oCriteria->add(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $tasUid)->addOr(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(
|
||||||
|
$oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$rs = ObjectPermissionPeer::doSelectRS($oCriteria);
|
||||||
|
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
while ($rs->next()) {
|
||||||
|
$row = $rs->getRow();
|
||||||
|
|
||||||
|
if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||
|
||||||
|
$row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]
|
||||||
|
) {
|
||||||
|
array_push($groupPermissions, $row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $groupPermissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify if the user has the Message History access
|
||||||
|
*
|
||||||
|
* @param string $appUid the uid of the case
|
||||||
|
* @param string $proUid the uid of the process
|
||||||
|
* @param string $usrUid the uid of the user
|
||||||
|
* @param string $opTaskSource the uid of a task selected in origin task
|
||||||
|
* @param int $opUserRelation if the permission is by user or group
|
||||||
|
* @param string $statusCase the status of the case COMPLETED, TO_DO
|
||||||
|
* @param int $opParticipated the value selected in participation required
|
||||||
|
*
|
||||||
|
* @return array with the indexes with the messageHistory permission
|
||||||
|
*/
|
||||||
|
public function objectPermissionMessage ($appUid, $proUid, $usrUid, $obAction, $opTaskSource, $opUserRelation, $statusCase = '', $opParticipated = 0)
|
||||||
|
{
|
||||||
|
$result['MSGS_HISTORY'] = array('PERMISSION' => $obAction);
|
||||||
|
$arrayDelIndex = array();
|
||||||
|
|
||||||
|
$oCriteria = new Criteria('workflow');
|
||||||
|
if ($opUserRelation == 1) {
|
||||||
|
//The relation is one is related to users
|
||||||
|
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
|
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
|
||||||
|
|
||||||
|
//If the permission Participation required = YES
|
||||||
|
if ((int)$opParticipated === 1) {
|
||||||
|
$oCriteria->add(AppDelegationPeer::USR_UID, $usrUid);
|
||||||
|
}
|
||||||
|
|
||||||
|
//If the case is COMPLETED we can not considered the Origin Task
|
||||||
|
if ($statusCase != 'COMPLETED' && !empty($opTaskSource) && (int)$opTaskSource != 0) {
|
||||||
|
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
|
||||||
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
$oDataset->next();
|
||||||
|
while ($aRow = $oDataset->getRow()) {
|
||||||
|
$arrayDelIndex[] = $aRow["DEL_INDEX"];
|
||||||
|
$oDataset->next();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//The relation is two is related to groups
|
||||||
|
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
|
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
|
||||||
|
|
||||||
|
//If the permission Participation required = YES
|
||||||
|
if ((int)$opParticipated === 1) {
|
||||||
|
$oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);
|
||||||
|
$oCriteria->add(GroupUserPeer::GRP_UID, $usrUid);
|
||||||
|
}
|
||||||
|
|
||||||
|
//If the case is COMPLETED we can not considered the Origin Task
|
||||||
|
if ($statusCase != 'COMPLETED' && !empty($opTaskSource) && (int)$opTaskSource != 0) {
|
||||||
|
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
|
||||||
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
$oDataset->next();
|
||||||
|
while ($aRow = $oDataset->getRow()) {
|
||||||
|
$arrayDelIndex[] = $aRow["DEL_INDEX"];
|
||||||
|
$oDataset->next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array_merge(array("DEL_INDEX" => $arrayDelIndex), $result["MSGS_HISTORY"]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user