BUG 10852 Control de los reenvíos de la notificaciones 'Messages History' SOLVED
- Se requiere que los reenvíos que se hacen a través del historial de mensajes, no se pueda realizar desde el menú casos, ya que existe el problema que cualquier usuario que haya participado de un caso puede reenviar notificaciones, a cualquier usuario, y existe el peligro de divulgación de información crítica que debe ser restringida por roles. - Added Roles to control Messages History.
This commit is contained in:
@@ -980,7 +980,7 @@ class Cases
|
||||
require_once 'classes/model/AdditionalTables.php';
|
||||
$oReportTables = new ReportTables();
|
||||
$addtionalTables = new additionalTables();
|
||||
|
||||
|
||||
if (!isset($Fields['APP_NUMBER'])) {
|
||||
$Fields['APP_NUMBER'] = $appFields['APP_NUMBER'];
|
||||
}
|
||||
@@ -5085,7 +5085,13 @@ class Cases
|
||||
$aCase = $this->loadCase($APP_UID);
|
||||
$USER_PERMISSIONS = Array();
|
||||
$GROUP_PERMISSIONS = Array();
|
||||
$RESULT = Array("DYNAFORM" => Array(), "INPUT" => Array(), "OUTPUT" => Array(), "CASES_NOTES" => 0);
|
||||
$RESULT = Array(
|
||||
"DYNAFORM" => Array(),
|
||||
"INPUT" => Array(),
|
||||
"OUTPUT" => Array(),
|
||||
"CASES_NOTES" => 0,
|
||||
"MSGS_HISTORY" => ""
|
||||
);
|
||||
|
||||
//permissions per user
|
||||
$oCriteria = new Criteria('workflow');
|
||||
@@ -5342,6 +5348,10 @@ class Cases
|
||||
case 'CASES_NOTES':
|
||||
$RESULT['CASES_NOTES'] = 1;
|
||||
break;
|
||||
case 'MSGS_HISTORY':
|
||||
$RESULT['MSGS_HISTORY'] = $ACTION;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5349,7 +5359,8 @@ class Cases
|
||||
"DYNAFORMS" => $RESULT['DYNAFORM'],
|
||||
"INPUT_DOCUMENTS" => $RESULT['INPUT'],
|
||||
"OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'],
|
||||
"CASES_NOTES" => $RESULT['CASES_NOTES']
|
||||
"CASES_NOTES" => $RESULT['CASES_NOTES'],
|
||||
"MSGS_HISTORY" => $RESULT['MSGS_HISTORY']
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6503,4 +6514,3 @@ class Cases
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3621,6 +3621,10 @@ class processMap
|
||||
$sObjectType = G::LoadTranslation('ID_CASES_NOTES');
|
||||
$sObject = 'N/A';
|
||||
break;
|
||||
case 'MSGS_HISTORY':
|
||||
$sObjectType = G::LoadTranslation('ID_ALL');
|
||||
$sObject = G::LoadTranslation('ID_ALL');
|
||||
break;
|
||||
default:
|
||||
$sObjectType = G::LoadTranslation('ID_ALL');
|
||||
$sObject = G::LoadTranslation('ID_ALL');
|
||||
@@ -3635,8 +3639,7 @@ class processMap
|
||||
//Obtain action (permission)
|
||||
$sAction = G::LoadTranslation('ID_' . $aRow['OP_ACTION']);
|
||||
//Add to array
|
||||
$aObjectsPermissions[] = array('OP_UID' => $aRow['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow['OP_CASE_STATUS']
|
||||
);
|
||||
$aObjectsPermissions[] = array('OP_UID' => $aRow['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow['OP_CASE_STATUS']);
|
||||
$oDataset->next();
|
||||
}
|
||||
global $_DBArray;
|
||||
@@ -3894,8 +3897,12 @@ class processMap
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_NewObjectPermission', '',
|
||||
array('GROUP_USER' => $usersGroups, 'LANG' => SYS_LANG, 'PRO_UID' => $sProcessUID, 'ID_DELETE' => G::LoadTranslation('ID_DELETE')
|
||||
), 'processes_SaveObjectPermission');
|
||||
array('GROUP_USER' => $usersGroups,
|
||||
'LANG' => SYS_LANG,
|
||||
'PRO_UID' => $sProcessUID,
|
||||
'ID_DELETE' => G::LoadTranslation('ID_DELETE'),
|
||||
'ID_RESEND' => G::LoadTranslation('ID_RESEND')
|
||||
), 'processes_SaveObjectPermission');
|
||||
G::RenderPage('publish', 'raw');
|
||||
return true;
|
||||
}
|
||||
@@ -4048,6 +4055,7 @@ class processMap
|
||||
|
||||
$aFields['GROUP_USER'] = $usersGroups;
|
||||
$aFields['ID_DELETE'] = G::LoadTranslation('ID_DELETE');
|
||||
$aFields['ID_RESEND'] = G::LoadTranslation('ID_RESEND');
|
||||
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
$actionAjax = isset( $_REQUEST['actionAjax'] ) ? $_REQUEST['actionAjax'] : null;
|
||||
|
||||
if ($actionAjax == 'messageHistoryGridList_JXP') {
|
||||
|
||||
|
||||
if (!isset($_REQUEST['start'])) {
|
||||
$_REQUEST['start'] = 0;
|
||||
}
|
||||
|
||||
|
||||
if (!isset($_REQUEST['limit'])) {
|
||||
$_REQUEST['limit'] = 20;
|
||||
}
|
||||
@@ -46,13 +46,37 @@ if ($actionAjax == 'messageHistoryGridList_JXP') {
|
||||
$result = new stdClass();
|
||||
$aProcesses = Array ();
|
||||
|
||||
foreach ($appMessageArray as $index => $value) {
|
||||
if ($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1) {
|
||||
$appMessageArray[$index]['ID_MESSAGE'] = $appMessageArray[$index]['APP_UID'] . '_' . $appMessageArray[$index]['APP_MSG_UID'];
|
||||
$aProcesses[] = $appMessageArray[$index];
|
||||
|
||||
$proUid = $_SESSION['PROCESS'];
|
||||
$appUid = $_SESSION['APPLICATION'];
|
||||
$tasUid = $_SESSION['TASK'];
|
||||
$usrUid = $_SESSION['USER_LOGGED'];
|
||||
|
||||
$respView = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'VIEW' );
|
||||
$respBlock = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'BLOCK' );
|
||||
$respResend = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'RESEND' );
|
||||
|
||||
if ($respView['MSGS_HISTORY'] != "" ) {
|
||||
$respMess = $respView['MSGS_HISTORY'];
|
||||
} else {
|
||||
if ( $respBlock['MSGS_HISTORY'] != "" ) {
|
||||
$respMess = $respBlock['MSGS_HISTORY'];
|
||||
} else {
|
||||
if ($respResend['MSGS_HISTORY'] != "") {
|
||||
$respMess = $respResend['MSGS_HISTORY'];
|
||||
} else {
|
||||
$respMess = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach ($appMessageArray as $index => $value) {
|
||||
if ($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1 && $respMess != 'BLOCK' ) {
|
||||
$appMessageArray[$index]['ID_MESSAGE'] = $appMessageArray[$index]['APP_UID'] . '_' . $appMessageArray[$index]['APP_MSG_UID'];
|
||||
$aProcesses[] = array_merge($appMessageArray[$index], array('MSGS_HISTORY' => $respMess));
|
||||
}
|
||||
}
|
||||
|
||||
$totalCount = 0;
|
||||
foreach ($appMessageCountArray as $index => $value) {
|
||||
if ($appMessageCountArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1) {
|
||||
|
||||
@@ -42,10 +42,11 @@ if ($access != 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isset( $_POST['form'] ))
|
||||
if (isset( $_POST['form'] )) {
|
||||
$sValue = $_POST['form']; //For old processmap
|
||||
else
|
||||
} else {
|
||||
$sValue = $_POST; //For new processmap EXtjs
|
||||
}
|
||||
|
||||
|
||||
list ($iRelation, $sUserGroup) = explode( '|', $sValue['GROUP_USER'] );
|
||||
@@ -66,11 +67,13 @@ switch ($sValue['OP_OBJ_TYPE']) {
|
||||
case 'OUTPUT':
|
||||
$sObjectUID = $sValue['OUTPUTS'];
|
||||
break;
|
||||
case 'MSGS_HISTORY':
|
||||
$sObjectUID = $sValue['MSGS_HISTORY'];
|
||||
break;
|
||||
}
|
||||
require_once 'classes/model/ObjectPermission.php';
|
||||
$oOP = new ObjectPermission();
|
||||
$aData = array ('OP_UID' => G::generateUniqueID(),'PRO_UID' => $sValue['PRO_UID'],'TAS_UID' => $sValue['TAS_UID'],'USR_UID' => (string) $sUserGroup,'OP_USER_RELATION' => $iRelation,'OP_TASK_SOURCE' => $sValue['OP_TASK_SOURCE'],'OP_PARTICIPATE' => $sValue['OP_PARTICIPATE'],'OP_OBJ_TYPE' => $sValue['OP_OBJ_TYPE'],'OP_OBJ_UID' => $sObjectUID,'OP_ACTION' => $sValue['OP_ACTION'],'OP_CASE_STATUS' => $sValue['OP_CASE_STATUS']
|
||||
);
|
||||
$aData = array ('OP_UID' => G::generateUniqueID(),'PRO_UID' => $sValue['PRO_UID'],'TAS_UID' => $sValue['TAS_UID'],'USR_UID' => (string) $sUserGroup,'OP_USER_RELATION' => $iRelation,'OP_TASK_SOURCE' => $sValue['OP_TASK_SOURCE'],'OP_PARTICIPATE' => $sValue['OP_PARTICIPATE'],'OP_OBJ_TYPE' => $sValue['OP_OBJ_TYPE'],'OP_OBJ_UID' => $sObjectUID,'OP_ACTION' => $sValue['OP_ACTION'],'OP_CASE_STATUS' => $sValue['OP_CASE_STATUS']);
|
||||
$oOP->fromArray( $aData, BasePeer::TYPE_FIELDNAME );
|
||||
$oOP->save();
|
||||
G::LoadClass( 'processMap' );
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -44,6 +44,7 @@
|
||||
<option name="INPUT">Input Document</option>
|
||||
<option name="OUTPUT">Output Document</option>
|
||||
<option name="CASES_NOTES">Cases Notes</option>
|
||||
<option name="MSGS_HISTORY">Messages History</option>
|
||||
</en>
|
||||
</OP_OBJ_TYPE>
|
||||
<ALL type="dropdown" mode="edit" sqlConnection="dbarray">
|
||||
@@ -65,7 +66,10 @@
|
||||
<en>Output Document<option name="">All</option></en>
|
||||
</OUTPUTS>
|
||||
<OP_ACTION type="dropdown" mode="edit">
|
||||
<en>Permission<option name="VIEW">View</option><option name="BLOCK">Block</option></en>
|
||||
<en>Permission
|
||||
<option name="VIEW">View</option>
|
||||
<option name="BLOCK">Block</option>
|
||||
</en>
|
||||
</OP_ACTION>
|
||||
|
||||
<BTN_CANCEL type="button" onclick="cancel();">
|
||||
@@ -76,6 +80,7 @@
|
||||
<en>Create</en>
|
||||
</CREATE>
|
||||
<ID_DELETE type="private"/>
|
||||
<ID_RESEND type="private"/>
|
||||
<JS type="javascript"><![CDATA[
|
||||
var aOptions = [];
|
||||
var getOptions = function() {
|
||||
@@ -85,35 +90,33 @@ var getOptions = function() {
|
||||
}
|
||||
};
|
||||
var rebuildOptions = function(sType) {
|
||||
|
||||
var oAux = getField('OP_ACTION');
|
||||
while (oAux.options.length) {
|
||||
oAux.remove(0);
|
||||
}
|
||||
for (var i = 0; i < aOptions.length; i++) {
|
||||
var oOption = document.createElement('OPTION');
|
||||
oOption.value = aOptions[i].value;
|
||||
oOption.text = aOptions[i].label;
|
||||
oAux.options.add(oOption);
|
||||
}
|
||||
|
||||
switch (sType) {
|
||||
case 'INPUT':
|
||||
case 'OUTPUT':
|
||||
var oAux = getField('OP_ACTION');
|
||||
while (oAux.options.length) {
|
||||
oAux.remove(0);
|
||||
}
|
||||
for (var i = 0; i < aOptions.length; i++) {
|
||||
var oOption = document.createElement('OPTION');
|
||||
oOption.value = aOptions[i].value;
|
||||
oOption.text = aOptions[i].label;
|
||||
oAux.options.add(oOption);
|
||||
}
|
||||
var oOption = document.createElement('OPTION');
|
||||
oOption.value = 'DELETE';
|
||||
oOption.text = '@#ID_DELETE';
|
||||
oAux.options.add(oOption);
|
||||
break
|
||||
break;
|
||||
case 'MSGS_HISTORY' :
|
||||
var oOption = document.createElement('OPTION');
|
||||
oOption.value = 'RESEND';
|
||||
oOption.text = '@#ID_RESEND';
|
||||
oAux.options.add(oOption);
|
||||
break;
|
||||
default:
|
||||
var oAux = getField('OP_ACTION');
|
||||
while (oAux.options.length) {
|
||||
oAux.remove(0);
|
||||
}
|
||||
for (var i = 0; i < aOptions.length; i++) {
|
||||
var oOption = document.createElement('OPTION');
|
||||
oOption.value = aOptions[i].value;
|
||||
oOption.text = aOptions[i].label;
|
||||
oAux.options.add(oOption);
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
@@ -179,6 +182,17 @@ leimnud.event.add(getField('OP_OBJ_TYPE'), 'change', function() {
|
||||
hideRowById('OUTPUTS');
|
||||
hideRowById('OP_ACTION');
|
||||
break;
|
||||
case 'MSGS_HISTORY':
|
||||
getField('ALL').value = '';
|
||||
getField('DYNAFORMS').value = '';
|
||||
getField('INPUTS').value = '';
|
||||
getField('OUTPUTS').value = (getField('OUTPUTS').options[0] ? getField('OUTPUTS').options[0].value : '');
|
||||
hideRowById('ALL');
|
||||
hideRowById('DYNAFORMS');
|
||||
hideRowById('INPUTS');
|
||||
hideRowById('OUTPUTS');
|
||||
showRowById('OP_ACTION');
|
||||
break;
|
||||
}
|
||||
rebuildOptions(vValue);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user