From 4118a46b9fc340ac5b7fd0b45267bf0d64b557ef Mon Sep 17 00:00:00 2001 From: Daniel Barbero Date: Fri, 18 Nov 2022 14:04:54 +0100 Subject: [PATCH] add new filter search events pandora_enterprise#9135 --- pandora_console/extras/mr/59.sql | 3 +- .../godmode/events/event_edit_filter.php | 21 +++++++++ pandora_console/include/ajax/events.php | 7 +++ pandora_console/include/functions_events.php | 45 ++++++++++++++----- pandora_console/include/styles/events.css | 5 +++ pandora_console/operation/events/events.php | 23 ++++++++-- pandora_console/pandoradb.sql | 1 + 7 files changed, 90 insertions(+), 15 deletions(-) diff --git a/pandora_console/extras/mr/59.sql b/pandora_console/extras/mr/59.sql index 69f93d9e8a..b78fda6904 100644 --- a/pandora_console/extras/mr/59.sql +++ b/pandora_console/extras/mr/59.sql @@ -1,5 +1,6 @@ START TRANSACTION; -ALTER TABLE `tevent_filter` ADD COLUMN `owner_user` INT NOT NULL DEFAULT 0; +ALTER TABLE `tevent_filter` ADD COLUMN `owner_user` TEXT; +ALTER TABLE `tevent_filter` ADD COLUMN `not_search` INT NOT NULL DEFAULT 0; COMMIT; \ No newline at end of file diff --git a/pandora_console/godmode/events/event_edit_filter.php b/pandora_console/godmode/events/event_edit_filter.php index c796feaa90..302c75e46b 100644 --- a/pandora_console/godmode/events/event_edit_filter.php +++ b/pandora_console/godmode/events/event_edit_filter.php @@ -66,6 +66,7 @@ if ($id) { $severity = explode(',', $filter['severity']); $status = $filter['status']; $search = $filter['search']; + $not_search = $filter['not_search']; $text_agent = $filter['text_agent']; $id_agent = $filter['id_agent']; $text_module = $filter['text_module']; @@ -116,6 +117,7 @@ if ($id) { $severity = ''; $status = ''; $search = ''; + $not_search = 0; $text_agent = ''; $pagination = ''; $event_view_hr = ''; @@ -142,6 +144,7 @@ if ($update || $create) { $severity = implode(',', get_parameter('severity', -1)); $status = get_parameter('status', ''); $search = get_parameter('search', ''); + $not_search = get_parameter_switch('not_search', 0); $text_agent = get_parameter('text_agent', ''); $id_agent = (int) get_parameter('id_agent'); $text_module = get_parameter('text_module', ''); @@ -188,6 +191,7 @@ if ($update || $create) { 'severity' => $severity, 'status' => $status, 'search' => $search, + 'not_search' => $not_search, 'text_agent' => $text_agent, 'id_agent_module' => $id_agent_module, 'id_agent' => $id_agent, @@ -380,6 +384,15 @@ $table->data[6][1] = html_print_input_text( 255, true ); +$table->data[6][1] .= ' '.html_print_checkbox_switch( + 'not_search', + $not_search, + $not_search, + true, + false, + 'checked_slide_events(this);', + true +); $table->data[7][0] = ''.__('Agent search').''; $params = []; @@ -747,6 +760,14 @@ $(document).ready( function() { }); +function checked_slide_events(element) { + var value = $("#checkbox-"+element.name).val(); + if (value == 0) { + $("#checkbox-"+element.name).val(1); + } else { + $("#checkbox-"+element.name).val(0); + } +} function click_button_remove_tag(what_button) { if (what_button == "with") { diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index 9de1b29988..9ad3eda6fc 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -351,6 +351,7 @@ if ($save_event_filter) { $values['severity'] = implode(',', get_parameter('severity', -1)); $values['status'] = get_parameter('status'); $values['search'] = get_parameter('search'); + $values['not_search'] = get_parameter('not_search'); $values['text_agent'] = get_parameter('text_agent'); $values['id_agent'] = get_parameter('id_agent'); $values['id_agent_module'] = get_parameter('id_agent_module'); @@ -410,6 +411,7 @@ if ($update_event_filter) { $values['severity'] = implode(',', get_parameter('severity', -1)); $values['status'] = get_parameter('status'); $values['search'] = get_parameter('search'); + $values['not_search'] = get_parameter('not_search'); $values['text_agent'] = get_parameter('text_agent'); $values['id_agent'] = get_parameter('id_agent'); $values['id_agent_module'] = get_parameter('id_agent_module'); @@ -645,6 +647,8 @@ function load_form_filter() { $("#status").val(val); if (i == 'search') $('#text-search').val(val); + if (i == 'not_search') + $('#checkbox-not_search').val(val); if (i == 'text_agent') $('input[name=text_agent]').val(val); if (i == 'id_agent') @@ -903,6 +907,7 @@ function save_new_filter() { "severity" : $("#severity").val(), "status" : $("#status").val(), "search" : $("#text-search").val(), + "not_search" : $("#checkbox-not_search").val(), "text_agent" : $("#text_id_agent").val(), "id_agent" : $('input:hidden[name=id_agent]').val(), "id_agent_module" : $('input:hidden[name=module_search_hidden]').val(), @@ -981,6 +986,7 @@ function save_update_filter() { "severity" : $("#severity").val(), "status" : $("#status").val(), "search" : $("#text-search").val(), + "not_search" : $("#checkbox-not_search").val(), "text_agent" : $("#text_id_agent").val(), "id_agent" : $('input:hidden[name=id_agent]').val(), "id_agent_module" : $('input:hidden[name=module_search_hidden]').val(), @@ -2424,6 +2430,7 @@ if ($get_events_fired) { 'severity' => -1, 'status' => -1, 'search' => '', + 'not_search' => 0, 'text_agent' => '', 'id_agent' => 0, 'id_agent_module' => 0, diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 795488529d..ab54ca0389 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -640,6 +640,7 @@ function events_update_status($id_evento, $status, $filter=null) * 'status' * 'agent_alias' * 'search' + * 'not_search' * 'id_extra' * 'id_source_event' * 'user_comment' @@ -1059,16 +1060,40 @@ function events_get_all( $custom_data_search = 'te.custom_data'; } - $sql_filters[] = vsprintf( - ' AND (lower(ta.alias) like lower("%%%s%%") - OR te.id_evento like "%%%s%%" - OR lower(te.evento) like lower("%%%s%%") - OR lower(te.user_comment) like lower("%%%s%%") - OR lower(te.id_extra) like lower("%%%s%%") - OR lower(te.source) like lower("%%%s%%") - OR lower('.$custom_data_search.') like lower("%%%s%%") )', - array_fill(0, 7, $filter['search']) - ); + $not_search = ''; + $nexo = 'OR'; + $array_search = [ + 'te.id_evento', + 'lower(te.evento)', + 'lower(te.user_comment)', + 'lower(te.id_extra)', + 'lower(te.source)', + 'lower('.$custom_data_search.')', + ]; + if (isset($filter['not_search']) === true + && empty($filter['not_search']) === false + ) { + $not_search = 'NOT'; + $nexo = 'AND'; + } else { + $array_search[] = 'lower(ta.alias)'; + } + + $sql_search = ' AND ('; + foreach ($array_search as $key => $field) { + $sql_search .= sprintf( + '%s %s %s like lower("%%%s%%")', + ($key === 0) ? '' : $nexo, + $field, + $not_search, + $filter['search'] + ); + $sql_search .= ' '; + } + + $sql_search .= ' )'; + + $sql_filters[] = $sql_search; } // Free search exclude. diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css index 32317e3e4c..2f43d50beb 100644 --- a/pandora_console/include/styles/events.css +++ b/pandora_console/include/styles/events.css @@ -140,6 +140,11 @@ form.flex-row div.filter_input.filter_input_switch .p-slider { width: 30px; } +form .filter_input_not_search .p-switch { + flex: 0 1 30px; + margin: 0; +} + fieldset { margin: 0 auto; } diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index a74ffd9eae..566fcb26d8 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -122,6 +122,10 @@ $search = get_parameter( 'filter[search]', ($filter['search'] ?? '') ); +$not_search = get_parameter( + 'filter[not_search]', + 0 +); $text_agent = get_parameter( 'filter[text_agent]', ($filter['text_agent'] ?? '') @@ -1080,6 +1084,7 @@ if ($loaded_filter !== false && $from_event_graph != 1 && isset($fb64) === false $severity = $filter['severity']; $status = $filter['status']; $search = $filter['search']; + $not_search = $filter['not_search']; $text_agent = $filter['text_agent']; $id_agent = $filter['id_agent']; $id_agent_module = $filter['id_agent_module']; @@ -1692,7 +1697,17 @@ $inputs[] = $in; // Free search. $data = html_print_input_text('search', $search, '', '', 255, true); -$in = '
'; +// Search recursive groups. +$data .= html_print_checkbox_switch( + 'not_search', + $not_search, + $not_search, + true, + false, + 'checked_slide_events(this);', + true +); +$in = ''; $inputs[] = $in; @@ -1732,7 +1747,7 @@ $data = html_print_checkbox_switch( $search_recursive_groups, true, false, - 'search_in_secondary_groups(this);', + 'checked_slide_events(this);', true ); @@ -1754,7 +1769,7 @@ $data = html_print_checkbox_switch( $search_secondary_groups, true, false, - 'search_in_secondary_groups(this);', + 'checked_slide_events(this);', true ); @@ -3066,7 +3081,7 @@ $(document).ready( function() { }); -function search_in_secondary_groups(element) { +function checked_slide_events(element) { var value = $("#checkbox-"+element.name).val(); if (value == 0) { $("#checkbox-"+element.name).val(1); diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index cd4e192407..517fb5cb03 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -1238,6 +1238,7 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` ( `severity` TEXT, `status` INT NOT NULL DEFAULT -1, `search` TEXT, + `not_search` INT NOT NULL DEFAULT 0, `text_agent` TEXT, `id_agent` INT DEFAULT 0, `id_agent_module` INT DEFAULT 0,