mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 16:55:05 +02:00
#10065 Added the option to create-edit a private event filter.
This commit is contained in:
parent
67dab1dfb1
commit
3429e0d190
5
pandora_console/extras/mr/66.sql
Normal file
5
pandora_console/extras/mr/66.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
ALTER TABLE tevent_filter ADD private_filter_user text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL;
|
||||||
|
|
||||||
|
COMMIT;
|
@ -61,6 +61,9 @@ if ($id) {
|
|||||||
$filter = events_get_event_filter($id);
|
$filter = events_get_event_filter($id);
|
||||||
$id_group_filter = $filter['id_group_filter'];
|
$id_group_filter = $filter['id_group_filter'];
|
||||||
$id_group = $filter['id_group'];
|
$id_group = $filter['id_group'];
|
||||||
|
// Get owner user private filter.
|
||||||
|
$private_filter = ($filter['private_filter_user'] === null || $filter['private_filter_user'] === '') ? 0 : 1;
|
||||||
|
$private_filter_user = $filter['private_filter_user'];
|
||||||
$id_name = $filter['id_name'];
|
$id_name = $filter['id_name'];
|
||||||
$event_type = $filter['event_type'];
|
$event_type = $filter['event_type'];
|
||||||
$severity = explode(',', $filter['severity']);
|
$severity = explode(',', $filter['severity']);
|
||||||
@ -113,6 +116,7 @@ if ($id) {
|
|||||||
$server_id = ($filter['server_id'] ?? '');
|
$server_id = ($filter['server_id'] ?? '');
|
||||||
} else {
|
} else {
|
||||||
$id_group = '';
|
$id_group = '';
|
||||||
|
$private_filter = 0;
|
||||||
$id_group_filter = '';
|
$id_group_filter = '';
|
||||||
$id_name = '';
|
$id_name = '';
|
||||||
$event_type = '';
|
$event_type = '';
|
||||||
@ -167,8 +171,8 @@ if ($update || $create) {
|
|||||||
$id_user_ack = get_parameter('id_user_ack', '');
|
$id_user_ack = get_parameter('id_user_ack', '');
|
||||||
$owner_user = get_parameter('owner_user', '');
|
$owner_user = get_parameter('owner_user', '');
|
||||||
$group_rep = get_parameter('group_rep', '');
|
$group_rep = get_parameter('group_rep', '');
|
||||||
$date_from = get_parameter('date_from', '');
|
$date_from = get_parameter('date_from', '0000-00-00');
|
||||||
$date_to = get_parameter('date_to', '');
|
$date_to = get_parameter('date_to', '0000-00-00');
|
||||||
$source = get_parameter('source');
|
$source = get_parameter('source');
|
||||||
$id_extra = get_parameter('id_extra');
|
$id_extra = get_parameter('id_extra');
|
||||||
$user_comment = get_parameter('user_comment');
|
$user_comment = get_parameter('user_comment');
|
||||||
@ -192,6 +196,16 @@ if ($update || $create) {
|
|||||||
$server_id = implode(',', $servers_array);
|
$server_id = implode(',', $servers_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get private filter from user.
|
||||||
|
$private_filter = get_parameter_switch('private_filter_event', 0);
|
||||||
|
if ((int) $private_filter === 1 && $create) {
|
||||||
|
$private_filter_user = $_SESSION['id_usuario'];
|
||||||
|
} else if ((int) $private_filter === 1 && $update) {
|
||||||
|
$private_filter_user = ($private_filter_user === $_SESSION['id_usuario']) ? $private_filter_user : $_SESSION['id_usuario'];
|
||||||
|
} else if ((int) $private_filter === 0) {
|
||||||
|
$private_filter_user = null;
|
||||||
|
}
|
||||||
|
|
||||||
$values = [
|
$values = [
|
||||||
'id_name' => $id_name,
|
'id_name' => $id_name,
|
||||||
'id_group_filter' => $id_group_filter,
|
'id_group_filter' => $id_group_filter,
|
||||||
@ -222,6 +236,7 @@ if ($update || $create) {
|
|||||||
'custom_data' => $custom_data,
|
'custom_data' => $custom_data,
|
||||||
'custom_data_filter_type' => $custom_data_filter_type,
|
'custom_data_filter_type' => $custom_data_filter_type,
|
||||||
'server_id' => $server_id,
|
'server_id' => $server_id,
|
||||||
|
'private_filter_user' => $private_filter_user,
|
||||||
];
|
];
|
||||||
|
|
||||||
$severity = explode(',', $severity);
|
$severity = explode(',', $severity);
|
||||||
@ -293,6 +308,17 @@ $table->data[0][0] = html_print_label_input_block(
|
|||||||
false,
|
false,
|
||||||
'',
|
'',
|
||||||
'w100p'
|
'w100p'
|
||||||
|
).html_print_label_input_block(
|
||||||
|
__('Private event'),
|
||||||
|
html_print_checkbox_switch(
|
||||||
|
'private_filter_event',
|
||||||
|
$private_filter,
|
||||||
|
$private_filter,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'checked_slide_events(this);',
|
||||||
|
true
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -133,6 +133,18 @@ $filters = db_get_all_rows_sql($sql);
|
|||||||
|
|
||||||
if ($filters === false) {
|
if ($filters === false) {
|
||||||
$filters = [];
|
$filters = [];
|
||||||
|
} else {
|
||||||
|
foreach ($filters as $key => $filter) {
|
||||||
|
$permission = check_acl($config['id_user'], 0, 'PM');
|
||||||
|
// Validate permission and private filter user.
|
||||||
|
if ($permission || $filter['private_filter_user'] === $config['id_user']) {
|
||||||
|
if ($filter['private_filter_user'] !== null) {
|
||||||
|
$filters[$key]['id_name'] = $filter['id_name'].' (P)';
|
||||||
|
}
|
||||||
|
} else if ($filter['private_filter_user'] !== null) {
|
||||||
|
unset($filters[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$table = new stdClass();
|
$table = new stdClass();
|
||||||
|
@ -337,6 +337,14 @@ if ($save_event_filter) {
|
|||||||
$values['custom_data'] = get_parameter('custom_data');
|
$values['custom_data'] = get_parameter('custom_data');
|
||||||
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||||
|
|
||||||
|
// Get private filter from user.
|
||||||
|
$private_filter = get_parameter_switch('private_filter_user', 0);
|
||||||
|
if ((int) $private_filter === 1) {
|
||||||
|
$values['private_filter_user'] = $config['id_user'];
|
||||||
|
} else {
|
||||||
|
$values['private_filter_user'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_metaconsole() === true) {
|
if (is_metaconsole() === true) {
|
||||||
$values['server_id'] = implode(',', get_parameter('server_id'));
|
$values['server_id'] = implode(',', get_parameter('server_id'));
|
||||||
}
|
}
|
||||||
@ -397,6 +405,17 @@ if ($update_event_filter) {
|
|||||||
$values['custom_data'] = get_parameter('custom_data');
|
$values['custom_data'] = get_parameter('custom_data');
|
||||||
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||||
|
|
||||||
|
// Get private filter from user.
|
||||||
|
$private_filter = get_parameter('private_filter_user', 0);
|
||||||
|
$user_private_filter = events_get_event_filter($id);
|
||||||
|
if ((int) $private_filter === 1 && $user_private_filter['private_filter_user'] === null) {
|
||||||
|
$values['private_filter_user'] = $config['id_user'];
|
||||||
|
} else if ($private_filter === $user_private_filter['private_filter_user'] && $user_private_filter['private_filter_user'] !== $config['id_user']) {
|
||||||
|
$values['private_filter_user'] = $user_private_filter['private_filter_user'];
|
||||||
|
} else {
|
||||||
|
$values['private_filter_user'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_metaconsole() === true) {
|
if (is_metaconsole() === true) {
|
||||||
$values['server_id'] = implode(',', get_parameter('server_id'));
|
$values['server_id'] = implode(',', get_parameter('server_id'));
|
||||||
}
|
}
|
||||||
@ -936,7 +955,8 @@ function save_new_filter() {
|
|||||||
"id_source_event": $("#text-id_source_event").val(),
|
"id_source_event": $("#text-id_source_event").val(),
|
||||||
"server_id": $("#server_id").val(),
|
"server_id": $("#server_id").val(),
|
||||||
"custom_data": $("#text-custom_data").val(),
|
"custom_data": $("#text-custom_data").val(),
|
||||||
"custom_data_filter_type": $("#custom_data_filter_type").val()
|
"custom_data_filter_type": $("#custom_data_filter_type").val(),
|
||||||
|
"private_filter_user": $("#checkbox-private_filter_event").val()
|
||||||
},
|
},
|
||||||
function (data) {
|
function (data) {
|
||||||
$("#info_box").hide();
|
$("#info_box").hide();
|
||||||
@ -1015,7 +1035,8 @@ function save_update_filter() {
|
|||||||
"id_source_event": $("#text-id_source_event").val(),
|
"id_source_event": $("#text-id_source_event").val(),
|
||||||
"server_id": $("#server_id").val(),
|
"server_id": $("#server_id").val(),
|
||||||
"custom_data": $("#text-custom_data").val(),
|
"custom_data": $("#text-custom_data").val(),
|
||||||
"custom_data_filter_type": $("#custom_data_filter_type").val()
|
"custom_data_filter_type": $("#custom_data_filter_type").val(),
|
||||||
|
"private_filter_user": $("#checkbox-private_filter_event").val()
|
||||||
|
|
||||||
},
|
},
|
||||||
function (data) {
|
function (data) {
|
||||||
|
@ -3343,7 +3343,7 @@ function events_get_event_filter_select($manage=true)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql = '
|
$sql = '
|
||||||
SELECT id_filter, id_name
|
SELECT id_filter, id_name, private_filter_user
|
||||||
FROM tevent_filter
|
FROM tevent_filter
|
||||||
WHERE id_group_filter IN (0, '.implode(',', array_keys($user_groups)).')';
|
WHERE id_group_filter IN (0, '.implode(',', array_keys($user_groups)).')';
|
||||||
|
|
||||||
@ -3354,9 +3354,22 @@ function events_get_event_filter_select($manage=true)
|
|||||||
} else {
|
} else {
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($event_filters as $event_filter) {
|
foreach ($event_filters as $event_filter) {
|
||||||
|
$permission = check_acl($config['id_user'], 0, 'PM');
|
||||||
|
if ($permission || $event_filter['private_filter_user'] === $config['id_user']) {
|
||||||
|
if ($event_filter['private_filter_user'] !== null) {
|
||||||
|
$filter_name = $event_filter['id_name'].' (P)';
|
||||||
|
} else {
|
||||||
|
$filter_name = $event_filter['id_name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[$event_filter['id_filter']] = $filter_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($event_filter['private_filter_user'] === null) {
|
||||||
$result[$event_filter['id_filter']] = $event_filter['id_name'];
|
$result[$event_filter['id_filter']] = $event_filter['id_name'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
@ -196,6 +196,10 @@ $search_recursive_groups = get_parameter(
|
|||||||
'filter[search_recursive_groups]',
|
'filter[search_recursive_groups]',
|
||||||
($filter['search_recursive_groups'] ?? '')
|
($filter['search_recursive_groups'] ?? '')
|
||||||
);
|
);
|
||||||
|
$search_recursive_groups = get_parameter(
|
||||||
|
'filter[private_filter_event]',
|
||||||
|
($filter['private_filter_event'] ?? '')
|
||||||
|
);
|
||||||
$id_group_filter = get_parameter(
|
$id_group_filter = get_parameter(
|
||||||
'filter[id_group_filter]',
|
'filter[id_group_filter]',
|
||||||
($filter['id_group'] ?? '')
|
($filter['id_group'] ?? '')
|
||||||
@ -1322,6 +1326,7 @@ if ($loaded_filter !== false && $from_event_graph != 1 && isset($fb64) === false
|
|||||||
|
|
||||||
$filter_only_alert = $filter['filter_only_alert'];
|
$filter_only_alert = $filter['filter_only_alert'];
|
||||||
$search_secondary_groups = ($filter['search_secondary_groups'] ?? 0);
|
$search_secondary_groups = ($filter['search_secondary_groups'] ?? 0);
|
||||||
|
$private_filter_event = ($filter['private_filter_user'] ?? 0);
|
||||||
$search_recursive_groups = ($filter['search_recursive_groups'] ?? 0);
|
$search_recursive_groups = ($filter['search_recursive_groups'] ?? 0);
|
||||||
$id_group_filter = $filter['id_group_filter'];
|
$id_group_filter = $filter['id_group_filter'];
|
||||||
$date_from = $filter['date_from'];
|
$date_from = $filter['date_from'];
|
||||||
@ -1938,6 +1943,25 @@ $in_sec_group .= '</label>';
|
|||||||
$in_sec_group .= '</div>';
|
$in_sec_group .= '</div>';
|
||||||
$in .= $in_sec_group;
|
$in .= $in_sec_group;
|
||||||
|
|
||||||
|
// User private filter.
|
||||||
|
$data = html_print_checkbox_switch(
|
||||||
|
'private_filter_event',
|
||||||
|
$private_filter_event,
|
||||||
|
$private_filter_event,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'checked_slide_events(this);',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$in_third_group = '<div class="display-initial">';
|
||||||
|
$in_third_group .= $data;
|
||||||
|
$in_third_group .= '<label class="vert-align-bottom">';
|
||||||
|
$in_third_group .= __('Private event');
|
||||||
|
$in_third_group .= '</label>';
|
||||||
|
$in_third_group .= '</div>';
|
||||||
|
$in .= $in_third_group;
|
||||||
|
|
||||||
$in .= '</div>';
|
$in .= '</div>';
|
||||||
$inputs[] = $in;
|
$inputs[] = $in;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user