This commit is contained in:
Paula Quispe
2017-03-15 18:38:17 -04:00
parent 70e5fe222b
commit a602408d66
2 changed files with 148 additions and 154 deletions

View File

@@ -5877,79 +5877,44 @@ class Cases
} }
} }
//If need need to check more details about the permissions //If user can be see the objects process
//We will be prepare the data relate to the Type can be ANY, DYNAFORM, INPUT, OUTPUT, ...
if (!$sw_participate) { if (!$sw_participate) {
switch ($opType) { switch ($opType) {
case 'ANY': case 'ANY':
//for dynaforms //For dynaforms
$oCriteria = new Criteria('workflow'); $result['DYNAFORM'] = $oObjectPermission->objectPermissionByDynaform(
$oCriteria->add(ApplicationPeer::APP_UID, $appUid); $appUid,
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID); $opTaskSource,
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); $opObjUid,
if ($aCase['APP_STATUS'] != 'COMPLETED') { $aCase['APP_STATUS'],
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) { $opParticipated
$oCriteria->add(StepPeer::TAS_UID, $opTaskSource); );
} //For Ouputs
} $result['OUTPUT'] = $oObjectPermission->objectPermissionByOutputInput(
$oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); $appUid,
$oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION); $proUid,
$oCriteria->setDistinct(); $opTaskSource,
'OUTPUT',
$oDataset = DynaformPeer::doSelectRS($oCriteria); $aCase['APP_STATUS'],
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $opParticipated
$oDataset->next(); );
//For Inputs
while ($aRow = $oDataset->getRow()) { $result['INPUT'] = $oObjectPermission->objectPermissionByOutputInput(
if (!in_array($aRow['DYN_UID'], $result['DYNAFORM'])) { $appUid,
array_push($result['DYNAFORM'], $aRow['DYN_UID']); $proUid,
} $opTaskSource,
$oDataset->next(); 'INPUT',
} $aCase['APP_STATUS'],
$opParticipated
//InputDocuments and OutputDocuments
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
$arrayCondition = array();
$arrayCondition[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::EQUAL);
$arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);
$oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
if ($aCase['APP_STATUS'] != 'COMPLETED') {
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) {
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
}
}
$oCriteria->add(
$oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->
addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'))->
addOr($oCriteria->
getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))
); );
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
$aRow['APP_DOC_TYPE'] = "INPUT";
}
if (!in_array($aRow['APP_DOC_UID'], $result[$aRow['APP_DOC_TYPE']])) {
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'] = $oObjectPermission->objectPermissionMessage( $result['MSGS_HISTORY'] = $oObjectPermission->objectPermissionMessage(
$appUid, $appUid,
$proUid, $proUid,
@@ -5962,99 +5927,30 @@ class Cases
); );
break; break;
case 'DYNAFORM': case 'DYNAFORM':
$oCriteria = new Criteria('workflow'); $result['DYNAFORM'] = $oObjectPermission->objectPermissionByDynaform(
$oCriteria->add(ApplicationPeer::APP_UID, $appUid); $appUid,
if ($opTaskSource != '' && $opTaskSource != "0") { $opTaskSource,
$oCriteria->add(StepPeer::TAS_UID, $opTaskSource); $opObjUid,
} $aCase['APP_STATUS']
if ($opObjUid != '' && $opObjUid != '0') { );
$oCriteria->add(DynaformPeer::DYN_UID, $opObjUid);
}
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
$oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
$oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
$oCriteria->setDistinct();
$oDataset = DynaformPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
if (!in_array($aRow['DYN_UID'], $result['DYNAFORM'])) {
array_push($result['DYNAFORM'], $aRow['DYN_UID']);
}
$oDataset->next();
}
break; break;
case 'INPUT': case 'INPUT':
$result['INPUT'] = $oObjectPermission->objectPermissionByOutputInput(
$appUid,
$proUid,
$opTaskSource,
'INPUT',
$aCase['APP_STATUS']
);
break;
case 'OUTPUT': case 'OUTPUT':
if ($row['OP_OBJ_TYPE'] == 'INPUT') { $result['OUTPUT'] = $oObjectPermission->objectPermissionByOutputInput(
$obj_type = 'INPUT'; $appUid,
} else { $proUid,
$obj_type = 'OUTPUT'; $opTaskSource,
} 'OUTPUT',
$oCriteria = new Criteria('workflow'); $aCase['APP_STATUS']
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID); );
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
if ($aCase['APP_STATUS'] != 'COMPLETED') {
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) {
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
}
}
if ($opObjUid != '' && $opObjUid != '0') {
$oCriteria->add(AppDocumentPeer::DOC_UID, $opObjUid);
}
if ($obj_type == 'INPUT') {
$oCriteria->add(
$oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, $obj_type)->
addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))
);
} else {
$oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, $obj_type);
}
$aConditions = Array();
$aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
$aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$oDataset = AppDocumentPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
if (!in_array($aRow['APP_DOC_UID'], $result[$obj_type])) {
array_push($result[$obj_type], $aRow['APP_DOC_UID']);
}
$oDataset->next();
}
if ($obj_type == 'INPUT') {
// For supervisor documents
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
$oCriteria->add(ApplicationPeer::APP_UID, $appUid);
$oCriteria->add(ApplicationPeer::PRO_UID, $proUid);
if ($opObjUid != '' && $opObjUid != '0') {
$oCriteria->add(AppDocumentPeer::DOC_UID, $opObjUid);
}
$oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT');
$oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000);
$oCriteria->addJoin(ApplicationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::LEFT_JOIN);
$oDataset = AppDocumentPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
if (!in_array($aRow['APP_DOC_UID'], $result['INPUT'])) {
array_push($result['INPUT'], $aRow['APP_DOC_UID']);
}
$oDataset->next();
}
}
break; break;
case 'CASES_NOTES': case 'CASES_NOTES':
$result['CASES_NOTES'] = 1; $result['CASES_NOTES'] = 1;
@@ -6076,7 +5972,6 @@ class Cases
$opParticipated $opParticipated
); );
break; break;
} }
} }
} }

View File

@@ -308,5 +308,104 @@ class ObjectPermission extends BaseObjectPermission
} }
return array_merge(array("DEL_INDEX" => $arrayDelIndex), $result["MSGS_HISTORY"]); return array_merge(array("DEL_INDEX" => $arrayDelIndex), $result["MSGS_HISTORY"]);
} }
/**
* Verify if the user has the Dynaform access
*
* @param string $appUid the uid of the case
* @param string $opTaskSource the uid of a task selected in origin task
* @param integer $opObjUid uid of dynaform
* @param string $statusCase the status of the case COMPLETED, TO_DO
* @param int $opParticipated the value selected in participation required
*
* @return array with the uid of dynaforms
*/
public function objectPermissionByDynaform ($appUid, $opTaskSource = 0, $opObjUid = '', $statusCase = '', $opParticipated = 0)
{
$oCriteria = new Criteria('workflow');
$oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
$oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
$oCriteria->add(ApplicationPeer::APP_UID, $appUid);
$oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
if ($statusCase != 'COMPLETED' && $opTaskSource != '' && (int)$opTaskSource != 0) {
$oCriteria->add(StepPeer::TAS_UID, $opTaskSource);
}
if ($opObjUid != '' && $opObjUid != '0') {
$oCriteria->add(DynaformPeer::DYN_UID, $opObjUid);
}
$oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
$oCriteria->setDistinct();
$oDataset = DynaformPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result = array();
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
if (!in_array($aRow['DYN_UID'], $result)) {
array_push($result, $aRow['DYN_UID']);
}
$oDataset->next();
}
return $result;
}
/**
* Verify if the user has the Dynaform access
*
* @param string $appUid the uid of the case
* @param string $proUid the uid of the process
* @param string $opTaskSource the uid of a task selected in origin task
* @param string $obType can be INPUT or OUTPUT
* @param string $statusCase the status of the case COMPLETED, TO_DO
* @param int $opParticipated the value selected in participation required
*
* @return array with the uid of input or outputs
*/
public function objectPermissionByOutputInput ($appUid, $proUid, $opTaskSource, $obType = 'OUTPUT', $statusCase = '', $opParticipated = 0)
{
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
$arrayCondition = array();
$arrayCondition[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::EQUAL);
$arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);
$oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
if ($statusCase != 'COMPLETED' && $opTaskSource != '' && (int)$opTaskSource != 0) {
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
}
switch ($obType) {
case 'INPUT':
$oCriteria->add(
$oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->
addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))
);
break;
case 'OUTPUT':
$oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
break;
}
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result = array();
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
$aRow['APP_DOC_TYPE'] = "INPUT";
}
if (!in_array($aRow['APP_DOC_UID'], $result)) {
array_push($result, $aRow['APP_DOC_UID']);
}
}
return $result;
}
} }