HOR-2868
This commit is contained in:
@@ -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':
|
||||||
case 'OUTPUT':
|
$result['INPUT'] = $oObjectPermission->objectPermissionByOutputInput(
|
||||||
if ($row['OP_OBJ_TYPE'] == 'INPUT') {
|
$appUid,
|
||||||
$obj_type = 'INPUT';
|
$proUid,
|
||||||
} else {
|
$opTaskSource,
|
||||||
$obj_type = 'OUTPUT';
|
'INPUT',
|
||||||
}
|
$aCase['APP_STATUS']
|
||||||
$oCriteria = new Criteria('workflow');
|
);
|
||||||
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
|
break;
|
||||||
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
|
case 'OUTPUT':
|
||||||
$oCriteria->add(AppDelegationPeer::APP_UID, $appUid);
|
$result['OUTPUT'] = $oObjectPermission->objectPermissionByOutputInput(
|
||||||
$oCriteria->add(AppDelegationPeer::PRO_UID, $proUid);
|
$appUid,
|
||||||
if ($aCase['APP_STATUS'] != 'COMPLETED') {
|
$proUid,
|
||||||
if ($opTaskSource != '' && $opTaskSource != "0" && $opTaskSource != 0) {
|
$opTaskSource,
|
||||||
$oCriteria->add(AppDelegationPeer::TAS_UID, $opTaskSource);
|
'OUTPUT',
|
||||||
}
|
$aCase['APP_STATUS']
|
||||||
}
|
|
||||||
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;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user