From 36015807f37d8db6f2f539487fe53d57cc91b69e Mon Sep 17 00:00:00 2001 From: daniel Date: Wed, 11 Jan 2017 13:26:50 +0100 Subject: [PATCH 1/3] fixed errors in events reports #135 (cherry picked from commit 993bad314d81f97db207cc502325667b28fd31c7) --- .../reporting_builder.item_editor.php | 6 + .../godmode/reporting/reporting_builder.php | 70 ++- pandora_console/include/functions_events.php | 34 +- pandora_console/include/functions_graph.php | 2 +- .../include/functions_reporting.php | 482 ++++-------------- .../include/functions_reporting_html.php | 121 +++-- pandora_console/index.php | 2 +- 7 files changed, 242 insertions(+), 475 deletions(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index 1f6c8586b9..c31f594125 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -2338,7 +2338,13 @@ function chooseType() { $("#row_last_value").hide(); $("#row_filter_search").hide(); $("#row_percentil").hide(); + $("#agents_row").hide(); + $("#select_agent_modules").hide(); + $("#modules_row").hide(); + $("#row_show_summary_group").hide(); + $("#row_event_severity").hide(); $("#row_event_type").hide(); + $("#row_event_status").hide(); // SLA list default state $("#sla_list").hide(); diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index 1b3c0d7bfb..e91ac9b13f 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -1055,15 +1055,14 @@ switch ($action) { $resultOperationDB = false; break; } - $filter_event_validated = get_parameter('filter_event_validated', 0); - $filter_event_no_validated = get_parameter('filter_event_no_validated', 0); - $filter_event_critical = get_parameter('filter_event_critical', 0); - $filter_event_warning = get_parameter('filter_event_warning', 0); - $filter_event_type = get_parameter('filter_event_type', ''); - - $event_graph_by_agent = get_parameter('event_graph_by_agent', 0); - $event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0); - $event_graph_by_criticity = get_parameter('event_graph_by_criticity', 0); + $show_summary_group = get_parameter('show_summary_group', 0); + $filter_event_severity = get_parameter('filter_event_severity', 0); + $filter_event_type = get_parameter('filter_event_type', ''); + $filter_event_status = get_parameter('filter_event_status', 0); + + $event_graph_by_agent = get_parameter('event_graph_by_agent', 0); + $event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0); + $event_graph_by_criticity = get_parameter('event_graph_by_criticity', 0); $event_graph_validated_vs_unvalidated = get_parameter('event_graph_validated_vs_unvalidated', 0); $event_filter_search = get_parameter('filter_search', ''); @@ -1126,11 +1125,11 @@ switch ($action) { case 'event_report_agent': case 'event_report_group': //Added for events items - $style['filter_event_no_validated'] = $filter_event_no_validated; - $style['filter_event_validated'] = $filter_event_validated; - $style['filter_event_critical'] = $filter_event_critical; - $style['filter_event_warning'] = $filter_event_warning; - $style['filter_event_type'] = json_encode($filter_event_type); + $style['show_summary_group'] = $show_summary_group; + $style['filter_event_severity'] = json_encode($filter_event_severity); + $style['filter_event_type'] = json_encode($filter_event_type); + $style['filter_event_status'] = json_encode($filter_event_status); + $style['event_graph_by_agent'] = $event_graph_by_agent; $style['event_graph_by_user_validator'] = $event_graph_by_user_validator; $style['event_graph_by_criticity'] = $event_graph_by_criticity; @@ -1138,10 +1137,8 @@ switch ($action) { switch ($values['type']) { case 'event_report_group': - $style['event_filter_search'] = - $event_filter_search; - break; case 'event_report_agent': + $style['event_filter_search'] = $event_filter_search; if ($label != '') $style['label'] = $label; else @@ -1429,38 +1426,35 @@ switch ($action) { switch ($values['type']) { case 'event_report_agent': - case 'event_report_group': - $filter_event_no_validated = get_parameter('filter_event_no_validated', 0); - $filter_event_validated = get_parameter('filter_event_validated', 0); - $filter_event_critical = get_parameter('filter_event_critical', 0); - $filter_event_warning = get_parameter('filter_event_warning', 0); + case 'event_report_group': + $show_summary_group = get_parameter('show_summary_group', 0); + $filter_event_severity = get_parameter('filter_event_severity', ''); + $filter_event_type = get_parameter('filter_event_type', ''); + $filter_event_status = get_parameter('filter_event_status', ''); - $event_graph_by_agent = get_parameter('event_graph_by_agent', 0); - $event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0); - $event_graph_by_criticity = get_parameter('event_graph_by_criticity', 0); + $event_graph_by_agent = get_parameter('event_graph_by_agent', 0); + $event_graph_by_user_validator = get_parameter('event_graph_by_user_validator', 0); + $event_graph_by_criticity = get_parameter('event_graph_by_criticity', 0); $event_graph_validated_vs_unvalidated = get_parameter('event_graph_validated_vs_unvalidated', 0); - $filter_event_type = get_parameter('filter_event_type', ''); $event_filter_search = get_parameter('filter_search', ''); //Added for events items - $style['filter_event_no_validated'] = $filter_event_no_validated; - $style['filter_event_validated'] = $filter_event_validated; - $style['filter_event_critical'] = $filter_event_critical; - $style['filter_event_warning'] = $filter_event_warning; - $style['filter_event_type'] = json_encode($filter_event_type); - - $style['event_graph_by_agent'] = $event_graph_by_agent; - $style['event_graph_by_user_validator'] = $event_graph_by_user_validator; - $style['event_graph_by_criticity'] = $event_graph_by_criticity; + $style['show_summary_group'] = $show_summary_group; + $style['filter_event_severity'] = json_encode($filter_event_severity); + $style['filter_event_type'] = json_encode($filter_event_type); + $style['filter_event_status'] = json_encode($filter_event_status); + + $style['event_graph_by_agent'] = $event_graph_by_agent; + $style['event_graph_by_user_validator'] = $event_graph_by_user_validator; + $style['event_graph_by_criticity'] = $event_graph_by_criticity; $style['event_graph_validated_vs_unvalidated'] = $event_graph_validated_vs_unvalidated; + switch ($values['type']) { case 'event_report_group': - $style['event_filter_search'] = - $event_filter_search; - break; case 'event_report_agent': + $style['event_filter_search'] = $event_filter_search; if ($label != '') $style['label'] = $label; else diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 627236f74d..69b62ae092 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -1348,22 +1348,16 @@ function events_get_agent ($id_agent, $period, $date = 0, if ($filter_event_critical) { $criticities[] = 4; } - if ($filter_event_warning) { - $criticities[] = 3; - } - if (!empty($criticities)) { - $sql_where .= ' AND criticity IN (' . implode(', ', $criticities) . ')'; - } - - if ( $filter_event_validated && $filter_event_no_validated ) { - $sql_where .= " AND (estado = 1 OR estado = 0)"; - } - else { - if ($filter_event_validated) { - $sql_where .= ' AND estado = 1 '; - } else { - if ($filter_event_no_validated) { - $sql_where .= ' AND estado = 0 '; + + $status_all = 0; + if(!empty($filter_event_status)){ + foreach ($filter_event_status as $key => $value) { + switch ($value) { + case -1: + $status_all = 1; + break; + default: + break; } } } @@ -2334,19 +2328,19 @@ function events_page_custom_data ($event) { if ($event['custom_data'] == '') { return ''; } - + $table->width = '100%'; $table->data = array (); $table->head = array (); $table->style[0] = 'width:35%; font-weight: bold; text-align: left;'; $table->style[1] = 'text-align: left;'; $table->class = "alternate rounded_cells"; - + $json_custom_data = base64_decode ($event['custom_data']); $custom_data = json_decode ($json_custom_data); if ($custom_data === NULL) { return '
'.__('Invalid custom data: %s', $json_custom_data).'
'; - } + } $i = 0; foreach ($custom_data as $field => $value) { @@ -2354,7 +2348,7 @@ function events_page_custom_data ($event) { $table->data[$i][1] = io_safe_output ($value); $i++; } - + $custom_data = '
'.html_print_table($table, true).'
'; return $custom_data; diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 2a8a55b49f..2162235ac0 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -2762,7 +2762,7 @@ function graph_events_validated($width = 300, $height = 200, $url = "", $meta = global $config; global $graphic_type; - $data_graph = reporting_get_count_events_validated( + $data_graph = events_get_count_events_validated( array('id_group' => array_keys(users_get_groups()))); $colors = array(); diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index f95d3f54b1..6664708b83 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -400,15 +400,6 @@ function reporting_make_reporting_data($report = null, $id_report, $report, $content); break; - case 'agent_detailed_event': - case 'event_report_agent': - $report['contents'][] = reporting_event_report_agent( - $report, - $content, - $type, - $force_width_chart, - $force_height_chart); - break; case 'group_report': $report['contents'][] = reporting_group_report( $report, @@ -439,6 +430,15 @@ function reporting_make_reporting_data($report = null, $id_report, $content, $type); break; + case 'agent_detailed_event': + case 'event_report_agent': + $report['contents'][] = reporting_event_report_agent( + $report, + $content, + $type, + $force_width_chart, + $force_height_chart); + break; case 'event_report_module': $report['contents'][] = reporting_event_report_module( $report, @@ -1282,26 +1282,25 @@ function reporting_event_report_group($report, $content, $return["date"] = reporting_get_date_text($report, $content); $event_filter = $content['style']; - - $filter_event_no_validated = $event_filter['filter_event_no_validated']; - $filter_event_validated = $event_filter['filter_event_validated']; - $filter_event_critical = $event_filter['filter_event_critical']; - $filter_event_warning = $event_filter['filter_event_warning']; + $return['show_summary_group'] = $event_filter['show_summary_group']; + //filter + $show_summary_group = $event_filter['show_summary_group']; + $filter_event_severity = json_decode($event_filter['filter_event_severity'],true); + $filter_event_type = json_decode($event_filter['filter_event_type'],true); + $filter_event_status = json_decode($event_filter['filter_event_status'],true); $filter_event_filter_search = $event_filter['event_filter_search']; - $filter_event_type = json_decode($event_filter['filter_event_type'],true); - $event_graph_by_agent = $event_filter['event_graph_by_agent']; - $event_graph_by_user_validator = $event_filter['event_graph_by_user_validator']; - $event_graph_by_criticity = $event_filter['event_graph_by_criticity']; + //graphs + $event_graph_by_agent = $event_filter['event_graph_by_agent']; + $event_graph_by_user_validator = $event_filter['event_graph_by_user_validator']; + $event_graph_by_criticity = $event_filter['event_graph_by_criticity']; $event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated']; - - $data = reporting_get_group_detailed_event( - $content['id_group'], $content['period'], $report["datetime"], - true, true, $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, - $filter_event_filter_search, 'hash', $history, $filter_event_type); - + $data = events_get_agent (false, $content['period'], $report["datetime"], + $history, $show_summary_group, $filter_event_severity, + $filter_event_type, $filter_event_status, $filter_event_filter_search, + $content['id_group'], true); + if (empty($data)) { $return['failed'] = __('No events'); } @@ -1309,8 +1308,6 @@ function reporting_event_report_group($report, $content, $return['data'] = array_reverse($data); } - - reporting_set_conf_charts($width, $height, $only_image, $type, $content, $ttl); @@ -1322,22 +1319,16 @@ function reporting_event_report_group($report, $content, $height = $force_height_chart; } - - $return['chart']['by_agent'] = null; $return['chart']['by_user_validator'] = null; $return['chart']['by_criticity'] = null; $return['chart']['validated_vs_unvalidated'] = null; if ($event_graph_by_agent) { - $data_graph = reporting_get_count_events_by_agent( - $content['id_group'], $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated, - $filter_event_filter_search); + $data_graph = events_get_count_events_by_agent( + $content['id_group'], $content['period'], $report["datetime"], + $filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $return['chart']['by_agent']= pie3d_graph( false, @@ -1353,15 +1344,10 @@ function reporting_event_report_group($report, $content, } if ($event_graph_by_user_validator) { - $data_graph = - reporting_get_count_events_validated_by_user( - array('id_group' => $content['id_group']), $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated, - $filter_event_filter_search); + $data_graph = events_get_count_events_validated_by_user( + array('id_group' => $content['id_group']), $content['period'], + $report["datetime"],$filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $return['chart']['by_user_validator'] = pie3d_graph( false, @@ -1377,14 +1363,10 @@ function reporting_event_report_group($report, $content, } if ($event_graph_by_criticity) { - $data_graph = reporting_get_count_events_by_criticity( + $data_graph = events_get_count_events_by_criticity( array('id_group' => $content['id_group']), $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated, - $filter_event_filter_search); + $report["datetime"],$filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $colors = get_criticity_pie_colors($data_graph); @@ -1404,15 +1386,10 @@ function reporting_event_report_group($report, $content, } if ($event_graph_validated_vs_unvalidated) { - $data_graph = - reporting_get_count_events_validated( - array('id_group' => $content['id_group']), $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated, - $filter_event_filter_search); + $data_graph = events_get_count_events_validated( + array('id_group' => $content['id_group']), $content['period'], + $report["datetime"],$filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $return['chart']['validated_vs_unvalidated'] = pie3d_graph( false, @@ -1437,8 +1414,9 @@ function reporting_event_report_group($report, $content, } function reporting_event_report_module($report, $content) { - global $config; + global $config; + $return['type'] = 'event_report_module'; if (empty($content['name'])) { @@ -2198,38 +2176,39 @@ function reporting_event_report_agent($report, $content, if ($config['history_event_enabled']) $history = true; - $return['title'] = $content['name']; - $return['subtitle'] = agents_get_name($content['id_agent']); - $return["description"] = $content["description"]; - $return["date"] = reporting_get_date_text($report, $content); - $return['label'] = (isset($content['style']['label'])) ? $content['style']['label'] : ''; + $return['title'] = $content['name']; + $return['subtitle'] = agents_get_name($content['id_agent']); + $return["description"] = $content["description"]; + $return["date"] = reporting_get_date_text($report, $content); + $return['label'] = (isset($content['style']['label'])) ? $content['style']['label'] : ''; + $return['show_summary_group'] = $content['style']['show_summary_group']; $style = $content['style']; - - $filter_event_no_validated = $style['filter_event_no_validated']; - $filter_event_validated = $style['filter_event_validated']; - $filter_event_critical = $style['filter_event_critical']; - $filter_event_warning = $style['filter_event_warning']; - $filter_event_type = json_decode($style['filter_event_type'], true); - - $event_graph_by_user_validator = $style['event_graph_by_user_validator']; - $event_graph_by_criticity = $style['event_graph_by_criticity']; + + //filter + $show_summary_group = $style['show_summary_group']; + $filter_event_severity = json_decode($style['filter_event_severity'], true); + $filter_event_type = json_decode($style['filter_event_type'], true); + $filter_event_status = json_decode($style['filter_event_status'], true); + $filter_event_filter_search = $style['event_filter_search']; + + //graph + $event_graph_by_user_validator = $style['event_graph_by_user_validator']; + $event_graph_by_criticity = $style['event_graph_by_criticity']; $event_graph_validated_vs_unvalidated = $style['event_graph_validated_vs_unvalidated']; - + $return['data'] = reporting_get_agents_detailed_event( $content['id_agent'], $content['period'], $report["datetime"], true, - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated, true, $history, - $filter_event_type); - - + $show_summary_group, + $filter_event_severity, + $filter_event_type, + $filter_event_status, + $filter_event_filter_search); reporting_set_conf_charts($width, $height, $only_image, $type, $content, $ttl); @@ -2242,26 +2221,19 @@ function reporting_event_report_agent($report, $content, $height = $force_height_chart; } - - $return["chart"]["by_user_validator"] = null; $return["chart"]["by_criticity"] = null; $return["chart"]["validated_vs_unvalidated"] = null; if ($event_graph_by_user_validator) { - $data_chart = - reporting_get_count_events_validated_by_user( - array('id_agent' => $content['id_agent']), - $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated); + $data_graph = events_get_count_events_validated_by_user( + array('id_agent' => $content['id_agent']), $content['period'], + $report["datetime"],$filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $return["chart"]["by_user_validator"] = pie3d_graph( false, - $data_chart, + $data_graph, 500, 150, __("other"), @@ -2273,13 +2245,10 @@ function reporting_event_report_agent($report, $content, } if ($event_graph_by_criticity) { - $data_graph = reporting_get_count_events_by_criticity( + $data_graph = events_get_count_events_by_criticity( array('id_agent' => $content['id_agent']), $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated); + $report["datetime"],$filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $colors = get_criticity_pie_colors($data_graph); @@ -2299,13 +2268,10 @@ function reporting_event_report_agent($report, $content, } if ($event_graph_validated_vs_unvalidated) { - $data_graph = reporting_get_count_events_validated( + $data_graph = events_get_count_events_validated( array('id_agent' => $content['id_agent']), $content['period'], - $report["datetime"], - $filter_event_validated, - $filter_event_critical, - $filter_event_warning, - $filter_event_no_validated); + $report["datetime"],$filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search); $return["chart"]["validated_vs_unvalidated"] = pie3d_graph( false, @@ -6062,221 +6028,6 @@ function reporting_set_conf_charts(&$width, &$height, &$only_image, $type, //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_validated ($filter, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_validated($filter, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, - $filter_event_search); -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_by_criticity ($filter, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_by_criticity($filter, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, - $filter_event_search); -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $filter. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_validated_by_user ($filter, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_validated_by_user($filter, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, $filter_event_search); -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_group_detailed_event ($id_group, $period = 0, - $date = 0, $return = false, $html = true, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_filter_search = null, $return_type = false, - $history = false, $filter_event_type = false) { - - global $config; - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - $table = new stdClass(); - $table->width = '99%'; - - $table->align = array(); - $table->align[0] = 'center'; - $table->align[2] = 'center'; - - $table->data = array (); - - $table->head = array (); - $table->head[0] = __('Status'); - $table->head[1] = __('Name'); - $table->head[2] = __('Type'); - $table->head[3] = __('Agent'); - $table->head[4] = __('Severity'); - $table->head[5] = __('Val. by'); - $table->head[6] = __('Timestamp'); - - $events = events_get_group_events($id_group, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, - $filter_event_filter_search, false, $history, $filter_event_type); - - if ($return_type === 'hash') { - return $events; - } - - if ($events) { - $note = ''; - if (count($events) >= 1000) { - $note .= '* ' . __('Maximum of events shown') . ' (1000)
'; - } - foreach ($events as $k => $event) { - //First pass along the class of this row - $table->cellclass[$k][1] = $table->cellclass[$k][3] = - $table->cellclass[$k][4] = $table->cellclass[$k][5] = - $table->cellclass[$k][6] = - get_priority_class ($event["criticity"]); - - $data = array (); - - // Colored box - switch ($event['estado']) { - case 0: - $img_st = "images/star.png"; - $title_st = __('New event'); - break; - case 1: - $img_st = "images/tick.png"; - $title_st = __('Event validated'); - break; - case 2: - $img_st = "images/hourglass.png"; - $title_st = __('Event in process'); - break; - } - $data[] = html_print_image ($img_st, true, - array ("class" => "image_status", - "width" => 16, - "title" => $title_st, - "id" => 'status_img_' . $event["id_evento"])); - - $data[] = ui_print_truncate_text( - io_safe_output($event['evento']), - 140, false, true); - - //$data[1] = $event['event_type']; - $data[] = events_print_type_img ($event["event_type"], true); - - if (!empty($event['id_agente'])) - $data[] = agents_get_name($event['id_agente']); - else - $data[] = __('Pandora System'); - $data[] = get_priority_name ($event['criticity']); - if (empty($event['id_usuario']) && $event['estado'] == EVENT_VALIDATE) { - $data[] = '' . __('System') . ''; - } - else { - $user_name = db_get_value ('fullname', 'tusuario', 'id_user', $event['id_usuario']); - $data[] = io_safe_output($user_name); - } - $data[] = '' . - date($config['date_format'], $event['timestamp_rep']) . - ''; - array_push ($table->data, $data); - } - - if ($html) { - return html_print_table ($table, $return) . $note; - } - else { - return $table; - } - } - else { - return false; - } -} - /** * Get a detailed report of summarized events per agent * @@ -6312,7 +6063,7 @@ function reporting_get_module_detailed_event ($id_modules, $period = 0, $events = array (); foreach ($id_modules as $id_module) { - $event = events_get_module ($id_module, (int) $period, (int) $date, $history); + $event = events_get_module ($id_module, (int) $period, (int) $date, $history, $show_summary_group); if (!empty ($event)) { array_push ($events, $event); } @@ -6393,10 +6144,10 @@ function reporting_get_module_detailed_event ($id_modules, $period = 0, * @return A table object (XHTML) */ function reporting_get_agents_detailed_event ($id_agents, $period = 0, - $date = 0, $return = false, $filter_event_validated = false, - $filter_event_critical = false, $filter_event_warning = false, - $filter_event_no_validated = false, $only_data = false, - $history = false, $filter_event_type = false) { + $date = 0, $return = false, $only_data = false, $history = false, + $show_summary_group = false, $filter_event_severity = false, + $filter_event_type = false, $filter_event_status = false, + $filter_event_filter_search = false) { global $config; @@ -6418,12 +6169,10 @@ function reporting_get_agents_detailed_event ($id_agents, $period = 0, $events = array (); foreach ($id_agents as $id_agent) { - $event = events_get_agent ($id_agent, - (int)$period, - (int)$date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, - $history, $filter_event_type); + $event = events_get_agent ($id_agent, (int)$period, (int)$date, + $history, $show_summary_group, $filter_event_severity, + $filter_event_type, $filter_event_status, + $filter_event_filter_search, false, false); if (empty($event)) { $event = array(); @@ -6432,17 +6181,28 @@ function reporting_get_agents_detailed_event ($id_agents, $period = 0, if ($only_data) { $nevents = count($event); for($i=$nevents-1; $i >= 0; $i--) { - $e = $event[$i]; - //foreach ($event as $e) { - $return_data[] = array( - 'status' => $e['estado'], - 'count' => $e['event_rep'], - 'name' => $e['evento'], - 'type' => $e["event_type"], - 'criticity' => $e["criticity"], - 'validated_by' => $e['id_usuario'], - 'timestamp' => $e['timestamp_rep'] - ); + $e = $event[$i]; + if($show_summary_group){ + $return_data[] = array( + 'status' => $e['estado'], + 'count' => $e['event_rep'], + 'name' => $e['evento'], + 'type' => $e["event_type"], + 'criticity' => $e["criticity"], + 'validated_by' => $e['id_usuario'], + 'timestamp' => $e['timestamp_rep'] + ); + } + else{ + $return_data[] = array( + 'status' => $e['estado'], + 'name' => $e['evento'], + 'type' => $e["event_type"], + 'criticity' => $e["criticity"], + 'validated_by' => $e['id_usuario'], + 'timestamp' => $e['timestamp'] + ); + } } } else { @@ -8636,36 +8396,6 @@ function reporting_get_planned_downtimes_intervals ($id_agent_module, $start_dat return $downtime_dates; } -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_by_agent ($id_group, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_filter_search = null) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_by_agent($id_group, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated, - $filter_event_filter_search); -} - /** * Get the maximum value of an agent module in a period of time. * diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index 756431161b..e297efd5bd 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -251,10 +251,6 @@ function reporting_html_print_report($report, $mini = false) { case 'database_serialized': reporting_html_database_serialized($table, $item); break; - case 'agent_detailed_event': - case 'event_report_agent': - reporting_html_event_report_agent($table, $item); - break; case 'group_report': reporting_html_group_report($table, $item); break; @@ -270,6 +266,10 @@ function reporting_html_print_report($report, $mini = false) { case 'inventory_changes': reporting_html_inventory_changes($table, $item); break; + case 'agent_detailed_event': + case 'event_report_agent': + reporting_html_event_report_agent($table, $item); + break; case 'event_report_module': reporting_html_event_report_module($table, $item); break; @@ -753,7 +753,6 @@ function reporting_html_top_n($table, $item) { function reporting_html_event_report_group($table, $item) { global $config; - if (!empty($item['failed'])) { $table->colspan['events']['cell'] = 3; $table->data['events']['cell'] = $item['failed']; @@ -764,26 +763,49 @@ function reporting_html_event_report_group($table, $item) { $table1->align = array(); $table1->align[0] = 'center'; - $table1->align[2] = 'center'; - + if($item['show_summary_group']){ + $table1->align[3] = 'center'; + } + else{ + $table1->align[2] = 'center'; + } $table1->data = array (); $table1->head = array (); - $table1->head[0] = __('Status'); - $table1->head[1] = __('Name'); - $table1->head[2] = __('Type'); - $table1->head[3] = __('Agent'); - $table1->head[4] = __('Severity'); - $table1->head[5] = __('Val. by'); - $table1->head[6] = __('Timestamp'); - + if($item['show_summary_group']){ + $table1->head[0] = __('Status'); + $table1->head[1] = __('Count'); + $table1->head[2] = __('Name'); + $table1->head[3] = __('Type'); + $table1->head[4] = __('Agent'); + $table1->head[5] = __('Severity'); + $table1->head[6] = __('Val. by'); + $table1->head[7] = __('Timestamp'); + } + else{ + $table1->head[0] = __('Status'); + $table1->head[1] = __('Name'); + $table1->head[2] = __('Type'); + $table1->head[3] = __('Agent'); + $table1->head[4] = __('Severity'); + $table1->head[5] = __('Val. by'); + $table1->head[6] = __('Timestamp'); + } + foreach ($item['data'] as $k => $event) { //First pass along the class of this row - $table1->cellclass[$k][1] = $table1->cellclass[$k][3] = - $table1->cellclass[$k][4] = $table1->cellclass[$k][5] = - $table1->cellclass[$k][6] = - get_priority_class ($event["criticity"]); - + if($item['show_summary_group']){ + $table1->cellclass[$k][1] = $table1->cellclass[$k][2] = + $table1->cellclass[$k][4] = $table1->cellclass[$k][5] = + $table1->cellclass[$k][6] = $table1->cellclass[$k][7] = + get_priority_class ($event["criticity"]); + } + else{ + $table1->cellclass[$k][1] = $table1->cellclass[$k][3] = + $table1->cellclass[$k][4] = $table1->cellclass[$k][5] = + $table1->cellclass[$k][6] = + get_priority_class ($event["criticity"]); + } $data = array (); // Colored box @@ -806,6 +828,10 @@ function reporting_html_event_report_group($table, $item) { "width" => 16, "title" => $title_st, "id" => 'status_img_' . $event["id_evento"])); + + if($item['show_summary_group']){ + $data[] = $event['event_rep']; + } $data[] = ui_print_truncate_text( io_safe_output($event['evento']), @@ -826,17 +852,20 @@ function reporting_html_event_report_group($table, $item) { $user_name = db_get_value ('fullname', 'tusuario', 'id_user', $event['id_usuario']); $data[] = io_safe_output($user_name); } - $data[] = '' . - date($config['date_format'], $event['timestamp_rep']) . - ''; + + if($item['show_summary_group']){ + $data[] = '' . date($config['date_format'], $event['timestamp_rep']) . ''; + } + else{ + $data[] = '' . date($config['date_format'], strtotime($event['timestamp'])) . ''; + } + array_push ($table1->data, $data); } $table->colspan['events']['cell'] = 3; $table->data['events']['cell'] = html_print_table($table1, true); - - if (!empty($item['chart']['by_agent'])) { $table1 = new stdClass(); $table1->width = '99%'; @@ -1371,10 +1400,8 @@ function reporting_html_group_report($table, $item) { function reporting_html_event_report_agent($table, $item) { global $config; - $table1 = new stdClass(); $table1->width = '99%'; - $table1->align = array(); $table1->align[0] = 'center'; $table1->align[1] = 'center'; @@ -1384,7 +1411,9 @@ function reporting_html_event_report_agent($table, $item) { $table1->head = array (); $table1->head[0] = __('Status'); - $table1->head[1] = __('Count'); + if($item['show_summary_group']){ + $table1->head[1] = __('Count'); + } $table1->head[2] = __('Name'); $table1->head[3] = __('Type'); $table1->head[4] = __('Severity'); @@ -1392,13 +1421,21 @@ function reporting_html_event_report_agent($table, $item) { $table1->head[6] = __('Timestamp'); foreach ($item['data'] as $i => $event) { - $table1->cellclass[$i][1] = - $table1->cellclass[$i][2] = - $table1->cellclass[$i][4] = - $table1->cellclass[$i][5] = - $table1->cellclass[$i][6] = - get_priority_class ($event["criticity"]); - + if($item['show_summary_group']){ + $table1->cellclass[$i][1] = + $table1->cellclass[$i][2] = + $table1->cellclass[$i][4] = + $table1->cellclass[$i][5] = + $table1->cellclass[$i][6] = + get_priority_class ($event["criticity"]); + } + else{ + $table1->cellclass[$i][1] = + $table1->cellclass[$i][3] = + $table1->cellclass[$i][4] = + $table1->cellclass[$i][5] = + get_priority_class ($event["criticity"]); + } $data = array (); // Colored box switch ($event['status']) { @@ -1420,8 +1457,10 @@ function reporting_html_event_report_agent($table, $item) { "width" => 16, "title" => $title_st)); - $data[] = $event['count']; - + if($item['show_summary_group']){ + $data[] = $event['count']; + } + $data[] = ui_print_truncate_text( io_safe_output($event['name']), 140, false, true); @@ -1436,8 +1475,12 @@ function reporting_html_event_report_agent($table, $item) { $user_name = db_get_value ('fullname', 'tusuario', 'id_user', $event['validated_by']); $data[] = io_safe_output($user_name); } - $data[] = '' . - date($config['date_format'], $event['timestamp']) . ''; + if($item['show_summary_group']){ + $data[] = '' . date($config['date_format'], $event['timestamp']) . ''; + } + else{ + $data[] = '' . date($config['date_format'], strtotime($event['timestamp'])) . ''; + } array_push ($table1->data, $data); } diff --git a/pandora_console/index.php b/pandora_console/index.php index ea7393e480..d771f4a50d 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -688,7 +688,7 @@ else { $main_sec = get_parameter('extension_in_menu'); else if ($sec == 'gextensions') -+ $main_sec = get_parameter('extension_in_menu'); + $main_sec = get_parameter('extension_in_menu'); else $main_sec = $sec; $sec = $sec2; From a5eddbc963aabd634268af72525c8e85f76e514f Mon Sep 17 00:00:00 2001 From: daniel Date: Fri, 13 Jan 2017 14:09:56 +0100 Subject: [PATCH 2/3] fixed reports events (cherry picked from commit 99aa41b32a20f53a571051f1a8e10d5f539e0a02) --- pandora_console/general/shortcut_bar.php | 3 +- .../reporting_builder.item_editor.php | 209 +++--- .../godmode/reporting/reporting_builder.php | 6 +- pandora_console/include/functions_events.php | 685 +++++++++++------- .../include/functions_reporting.php | 207 ++++-- .../include/functions_reporting_html.php | 182 +++-- pandora_console/include/styles/pandora.css | 6 + 7 files changed, 823 insertions(+), 475 deletions(-) diff --git a/pandora_console/general/shortcut_bar.php b/pandora_console/general/shortcut_bar.php index 5be87f3e70..f37915b110 100644 --- a/pandora_console/general/shortcut_bar.php +++ b/pandora_console/general/shortcut_bar.php @@ -102,7 +102,8 @@ function sc_get_critical_events () { $own_groups = array_keys(users_get_groups($config['id_user'], "IR", false)); // Get events in the last 8 hours - $shortcut_events_update = events_get_group_events($own_groups, 28800, time()); + $shortcut_events_update = events_get_agent (false, 28800, time(), false, false, false, false, + false, false, $own_groups, true); if ($shortcut_events_update == false) $shortcut_events_update = array(); diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index c31f594125..c4b03c1760 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -95,17 +95,15 @@ $percentil_95 = false; $time_compare_overlapped = false; //Added for events items -$filter_event_validated = false; -$filter_event_no_validated = false; -$filter_event_critical = false; -$filter_event_warning = false; - -$filter_event_type = false; - +$show_summary_group = false; +$filter_event_severity = false; +$filter_event_type = false; +$filter_event_status = false; $event_graph_by_agent = false; $event_graph_by_user_validator = false; $event_graph_by_criticity = false; $event_graph_validated_vs_unvalidated = false; + $netflow_filter = 0; $max_values = 0; $resolution = 0; @@ -401,33 +399,19 @@ switch ($action) { $group = $item['id_group']; break; case 'event_report_agent': - $description = $item['description']; - $idAgent = $item['id_agent']; - $period = $item['period']; - - //Added for events items - $filter_event_no_validated = $style['filter_event_no_validated']; - $filter_event_validated = $style['filter_event_validated']; - $filter_event_critical = $style['filter_event_critical']; - $filter_event_warning = $style['filter_event_warning']; - $filter_event_type = json_decode($style['filter_event_type'], true); - - $event_graph_by_agent = $style['event_graph_by_agent']; - $event_graph_by_user_validator = $style['event_graph_by_user_validator']; - $event_graph_by_criticity = $style['event_graph_by_criticity']; - $event_graph_validated_vs_unvalidated = $style['event_graph_validated_vs_unvalidated']; - break; case 'event_report_group': + case 'event_report_module': $description = $item['description']; $period = $item['period']; $group = $item['id_group']; - + $idAgent = $item['id_agent']; + $idAgentModule = $item['id_agent_module']; + //Added for events items - $filter_event_no_validated = $style['filter_event_no_validated']; - $filter_event_validated = $style['filter_event_validated']; - $filter_event_critical = $style['filter_event_critical']; - $filter_event_warning = $style['filter_event_warning']; - $filter_event_type = json_decode($style['filter_event_type'], true); + $show_summary_group = $style['show_summary_group']; + $filter_event_severity = json_decode($style['filter_event_severity'], true); + $filter_event_status = json_decode($style['filter_event_status'], true); + $filter_event_type = json_decode($style['filter_event_type'], true); $event_graph_by_agent = $style['event_graph_by_agent']; $event_graph_by_user_validator = $style['event_graph_by_user_validator']; @@ -436,14 +420,6 @@ switch ($action) { $filter_search = $style['event_filter_search']; break; - case 'event_report_module': - $description = $item['description']; - $idAgentModule = $item['id_agent_module']; - $idAgent = db_get_value_filter('id_agente', - 'tagente_modulo', - array('id_agente_modulo' => $idAgentModule)); - $period = $item['period']; - break; case 'general': $description = $item['description']; $group_by_agent = $item['group_by_agent']; @@ -1285,35 +1261,52 @@ You can of course remove the warnings, that's why we include the source and do n ?> - - + + + - + + + + + + + + + + + + + + + @@ -1375,9 +1368,7 @@ You can of course remove the warnings, that's why we include the source and do n ?> - - - + @@ -1800,7 +1791,6 @@ ui_require_javascript_file ('pandora_inventory', ENTERPRISE_DIR.'/include/javasc $(document).ready (function () { chooseType(); chooseSQLquery(); - $("#text-time_to, #text-time_from").timepicker({ showSecond: true, timeFormat: '', @@ -1831,7 +1821,7 @@ $(document).ready (function () { switch (data) { case 'boolean': case 'sparse': - $("#row_percentil").show(); + //$("#row_percentil").show(); break; default: $("#row_percentil").hide(); @@ -1841,6 +1831,47 @@ $(document).ready (function () { }); }); + + + $("#submit-create_item").click(function () { + var type = $('#type').val(); + switch (type){ + case 'alert_report_module': case 'alert_report_agent': case 'alert_report_group': + case 'event_report_agent': case 'event_report_module': case 'event_report_group': + case 'simple_graph': case 'simple_baseline_graph': case 'TTRT': case 'TTO': + case 'MTBF': case 'MTTR': case 'prediction_date': case 'projection_graph': + case 'avg_value': case 'max_value': case 'min_value': case 'monitor_report': + case 'database_serialized': case 'sumatory': case 'historical_data': + case 'agent_configuration': + if ($("#hidden-id_agent").val() == 0) { + alert( ); + return false; + } + break; + default: + break; + } + }); + + $("#submit-edit_item").click(function () { + var type = $('#type').val(); + switch (type){ + case 'alert_report_module': case 'alert_report_agent': case 'alert_report_group': + case 'event_report_agent': case 'event_report_module': case 'event_report_group': + case 'simple_graph': case 'simple_baseline_graph': case 'TTRT': case 'TTO': + case 'MTBF': case 'MTTR': case 'prediction_date': case 'projection_graph': + case 'avg_value': case 'max_value': case 'min_value': case 'monitor_report': + case 'database_serialized': case 'sumatory': case 'historical_data': + case 'agent_configuration': + if ($("#hidden-id_agent").val() == 0) { + alert( ); + return false; + } + break; + default: + break; + } + }); }); @@ -2326,7 +2357,6 @@ function chooseType() { $("#row_date").hide(); $("#row_agent_multi").hide(); $("#row_module_multi").hide(); - $("#row_event_filter").hide(); $("#row_event_graphs").hide(); $("#row_event_graph_by_agent").hide(); $("#row_event_graph_by_user").hide(); @@ -2360,24 +2390,6 @@ function chooseType() { $('#agent_autocomplete_events').show(); switch (type) { - case 'event_report_group': - $("#row_description").show(); - $("#row_period").show(); - $("#row_servers").show(); - $("#row_group").show(); - $("#row_show_in_two_columns").show(); - $("#row_event_filter").show(); - $("#row_event_graphs").show(); - - $("#row_event_graph_by_agent").show(); - $("#row_event_graph_by_user").show(); - $("#row_event_graph_by_criticity").show(); - $("#row_event_graph_by_validated").show(); - $("#row_event_type").show(); - - $("#row_filter_search").show(); - break; - case 'simple_graph': $("#row_time_compare_overlapped").show(); $("#row_only_avg").show(); @@ -2632,21 +2644,44 @@ function chooseType() { $("#row_show_in_two_columns").show(); break; - case 'event_report_agent': + case 'event_report_group': $("#row_description").show(); - $("#row_agent").show(); $("#row_period").show(); - $("#row_show_in_two_columns").show(); - $("#row_event_filter").show(); - $("#row_event_graphs").show(); + $("#row_servers").show(); + $("#row_group").show(); + $("#row_event_severity").show(); + $("#row_event_status").show(); + $("#row_show_summary_group").show(); + $("#row_event_graph_by_agent").show(); $("#row_event_graph_by_user").show(); $("#row_event_graph_by_criticity").show(); $("#row_event_graph_by_validated").show(); $("#row_event_type").show(); + $("#row_filter_search").show(); + break; + + + case 'event_report_agent': + $("#row_description").show(); + $("#row_agent").show(); + $("#row_period").show(); + $("#row_event_severity").show(); + $("#row_event_status").show(); + $("#row_show_summary_group").show(); + $("#row_event_graphs").show(); + $("#row_event_type").show(); + + + $("#row_event_graph_by_user").show(); + $("#row_event_graph_by_criticity").show(); + $("#row_event_graph_by_validated").show(); + + $('#agent_autocomplete').hide(); $('#agent_autocomplete_events').show(); + $("#row_filter_search").show(); break; case 'event_report_module': @@ -2654,15 +2689,19 @@ function chooseType() { $("#row_agent").show(); $("#row_module").show(); $("#row_period").show(); - $("#row_show_in_two_columns").show(); - - $("#row_event_graph_by_agent").show(); + $("#row_event_severity").show(); + $("#row_event_status").show(); + $("#row_show_summary_group").show(); + $("#row_event_graphs").show(); + $("#row_event_type").show(); + $("#row_event_graph_by_user").show(); $("#row_event_graph_by_criticity").show(); $("#row_event_graph_by_validated").show(); $('#agent_autocomplete').hide(); $('#agent_autocomplete_events').show(); + $("#row_filter_search").show(); break; case 'general': diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index e91ac9b13f..dbdddf2dd2 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -1124,6 +1124,7 @@ switch ($action) { switch ($values['type']) { case 'event_report_agent': case 'event_report_group': + case 'event_report_module': //Added for events items $style['show_summary_group'] = $show_summary_group; $style['filter_event_severity'] = json_encode($filter_event_severity); @@ -1157,7 +1158,6 @@ switch ($action) { $style['label'] = ''; break; case 'agent_configuration': - case 'event_report_module': case 'alert_report_agent': case 'alert_report_module': case 'historical_data': @@ -1426,7 +1426,8 @@ switch ($action) { switch ($values['type']) { case 'event_report_agent': - case 'event_report_group': + case 'event_report_group': + case 'event_report_module': $show_summary_group = get_parameter('show_summary_group', 0); $filter_event_severity = get_parameter('filter_event_severity', ''); $filter_event_type = get_parameter('filter_event_type', ''); @@ -1474,7 +1475,6 @@ switch ($action) { $style['label'] = ''; break; case 'agent_configuration': - case 'event_report_module': case 'alert_report_agent': case 'alert_report_module': case 'historical_data': diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 69b62ae092..c6c7a4a152 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -109,6 +109,20 @@ function events_get_event ($id, $fields = false) { return $event; } +function events_get_events_no_grouped($sql_post, $offset = 0, + $pagination = 1, $meta = false, $history = false, $total = false, + $history_db = false, $order = "ASC") { + + global $config; + + $table = events_get_events_table($meta, $history); + + $sql = "SELECT * FROM $table te WHERE 1=1 " . $sql_post; + + $events = db_get_all_rows_sql ($sql, $history_db); + + return $events; +} function events_get_events_grouped($sql_post, $offset = 0, $pagination = 1, $meta = false, $history = false, $total = false, @@ -124,7 +138,7 @@ function events_get_events_grouped($sql_post, $offset = 0, else { $groupby_extra = ''; } - + switch ($config["dbtype"]) { case "mysql": db_process_sql ('SET group_concat_max_len = 9999999'); @@ -136,19 +150,19 @@ function events_get_events_grouped($sql_post, $offset = 0, } else { $sql = "SELECT *, MAX(id_evento) AS id_evento, - GROUP_CONCAT(DISTINCT user_comment SEPARATOR '
') AS user_comment, - GROUP_CONCAT(DISTINCT id_evento SEPARATOR ',') AS similar_ids, - COUNT(*) AS event_rep, MAX(utimestamp) AS timestamp_rep, - MIN(utimestamp) AS timestamp_rep_min, - (SELECT owner_user FROM $table WHERE id_evento = MAX(te.id_evento)) owner_user, - (SELECT id_usuario FROM $table WHERE id_evento = MAX(te.id_evento)) id_usuario, - (SELECT id_agente FROM $table WHERE id_evento = MAX(te.id_evento)) id_agente, - (SELECT criticity FROM $table WHERE id_evento = MAX(te.id_evento)) AS criticity, - (SELECT ack_utimestamp FROM $table WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp - FROM $table te - WHERE 1=1 " . $sql_post . " - GROUP BY estado, evento, id_agentmodule" . $groupby_extra . " - ORDER BY timestamp_rep " . $order . " LIMIT " . $offset . "," . $pagination; + GROUP_CONCAT(DISTINCT user_comment SEPARATOR '
') AS user_comment, + GROUP_CONCAT(DISTINCT id_evento SEPARATOR ',') AS similar_ids, + COUNT(*) AS event_rep, MAX(utimestamp) AS timestamp_rep, + MIN(utimestamp) AS timestamp_rep_min, + (SELECT owner_user FROM $table WHERE id_evento = MAX(te.id_evento)) owner_user, + (SELECT id_usuario FROM $table WHERE id_evento = MAX(te.id_evento)) id_usuario, + (SELECT id_agente FROM $table WHERE id_evento = MAX(te.id_evento)) id_agente, + (SELECT criticity FROM $table WHERE id_evento = MAX(te.id_evento)) AS criticity, + (SELECT ack_utimestamp FROM $table WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp + FROM $table te + WHERE 1=1 " . $sql_post . " + GROUP BY estado, evento, id_agentmodule" . $groupby_extra . " + ORDER BY timestamp_rep " . $order . " LIMIT " . $offset . "," . $pagination; } break; case "postgresql": @@ -210,7 +224,6 @@ function events_get_events_grouped($sql_post, $offset = 0, } break; } - //Extract the events by filter (or not) from db $events = db_get_all_rows_sql ($sql, $history_db); @@ -1173,89 +1186,6 @@ function events_print_type_description ($type, $return = false) { echo $output; } -/** - * Get all the events happened in a group during a period of time. - * - * The returned events will be in the time interval ($date - $period, $date] - * - * @param mixed $id_group Group id to get events for. - * @param int $period Period of time in seconds to get events. - * @param int $date Beginning date to get events. - * - * @return array An array with all the events happened. - */ -function events_get_group_events ($id_group, $period, $date, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false, $meta = false, $history = false, - $filter_event_type = false) { - - global $config; - - $id_group = groups_safe_acl ($config["id_user"], $id_group, "ER"); - - if (empty ($id_group)) { - //An empty array means the user doesn't have access - return false; - } - - $datelimit = $date - $period; - - $sql_where = ' AND 1 = 1 '; - $criticities = array(); - if ($filter_event_critical) { - $criticities[] = 4; - } - if ($filter_event_warning) { - $criticities[] = 3; - } - if (!empty($criticities)) { - $sql_where .= ' AND criticity IN (' . implode(', ', $criticities) . ')'; - } - if ($filter_event_validated) { - $sql_where .= ' AND estado = 1 '; - } - if ($filter_event_no_validated) { - $sql_where .= ' AND estado = 0 '; - } - - if (!empty($filter_event_search)) { - $sql_where .= ' AND (evento LIKE "%'. io_safe_input($filter_event_search) . '%"'. - ' OR id_evento LIKE "%' . io_safe_input($filter_event_search) . '%")'; - } - - if (!empty($filter_event_type) && $filter_event_type[0] != 'all') { - $sql_where .= ' AND ('; - $type = array(); - foreach ($filter_event_type as $event_type) { - if ($event_type != "") { - // If normal, warning, could be several (going_up_warning, going_down_warning... too complex - // for the user so for him is presented only "warning, critical and normal" - if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") { - $type[] = " event_type LIKE '%$event_type%' "; - } - else if ($event_type == "not_normal") { - $type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') "; - } - else if ($event_type != "all") { - $type[] = " event_type = '" . $event_type."'"; - } - } - } - - $sql_where .= implode(' OR ', $type) . ')'; - } - - $sql_where .= sprintf(' - AND id_grupo IN (%s) - AND utimestamp > %d - AND utimestamp <= %d ', - implode (",", $id_group), $datelimit, $date); - - return events_get_events_grouped($sql_where, 0, 1000, $meta, - false, false, $history); -} - /** * Get all the events happened in a group during a period of time. * @@ -1328,25 +1258,54 @@ function events_get_group_events_steps ($begin, &$result, $id_group, $period, $d * * @return array An array with all the events happened. */ -function events_get_agent ($id_agent, $period, $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $history = false, $filter_event_type = false) { - +function events_get_agent ($id_agent, $period, $date = 0, + $history = false, $show_summary_group = false, $filter_event_severity = false, + $filter_event_type = false, $filter_event_status = false, $filter_event_filter_search=false, + $id_group = false, $events_group = false, $id_agent_module = false, $events_module = false) { + global $config; + if (!is_numeric ($date)) { $date = strtotime ($date); } if (empty ($date)) { $date = get_system_time (); } + + if($events_group){ + $id_group = groups_safe_acl ($config["id_user"], $id_group, "ER"); + if (empty ($id_group)) { + //An empty array means the user doesn't have access + return false; + } + } + $datelimit = $date - $period; $sql_where = ''; - - $criticities = array(); - if ($filter_event_critical) { - $criticities[] = 4; + $severity_all = 0; + if (!empty($filter_event_severity)) { + foreach ($filter_event_severity as $key => $value) { + switch ($value) { + case 'all': + $severity_all = 1; + break; + case 34: + $filter_event_severity[$key] = '3, 4'; + break; + case 20: + $filter_event_severity[$key] = '0, 1, 3, 4, 5, 6'; + break; + case 21: + $filter_event_severity[$key] = '4, 2'; + break; + default: + break; + } + } + if(!$severity_all){ + $sql_where .= ' AND criticity IN (' . implode(', ', $filter_event_severity) . ')'; + } } $status_all = 0; @@ -1360,8 +1319,11 @@ function events_get_agent ($id_agent, $period, $date = 0, break; } } + if(!$status_all){ + $sql_where .= ' AND estado IN (' . implode(', ', $filter_event_status) . ')'; + } } - + if (!empty($filter_event_type) && $filter_event_type[0] != 'all') { $sql_where .= ' AND ('; $type = array(); @@ -1380,52 +1342,35 @@ function events_get_agent ($id_agent, $period, $date = 0, } } } - $sql_where .= implode(' OR ', $type) . ')'; } - - $sql_where .= sprintf(' AND id_agente = %d AND utimestamp > %d - AND utimestamp <= %d ', $id_agent, $datelimit, $date); - - return events_get_events_grouped($sql_where, 0, 1000, - is_metaconsole(), false, false, $history); -} -/** - * Get all the events happened in an Agent during a period of time. - * - * The returned events will be in the time interval ($date - $period, $date] - * - * @param int $id_agent_module Module id to get events. - * @param int $period Period of time in seconds to get events. - * @param int $date Beginning date to get events. - * - * @return array An array with all the events happened. - */ -function events_get_module ($id_agent_module, $period, $date = 0, $history = false) { - global $config; - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); + if (!empty($filter_event_filter_search)) { + $sql_where .= ' AND (evento LIKE "%'. io_safe_input($filter_event_filter_search) . '%"'. + ' OR id_evento LIKE "%' . io_safe_input($filter_event_filter_search) . '%")'; } - $datelimit = $date - $period; - - $sql_where = sprintf(' AND id_agentmodule = %d AND utimestamp > %d + if($events_group){ + $sql_where .= sprintf(' AND id_grupo IN (%s) AND utimestamp > %d + AND utimestamp <= %d ', implode (",", $id_group), $datelimit, $date); + } + elseif($events_module){ + $sql_where .= sprintf(' AND id_agentmodule = %d AND utimestamp > %d AND utimestamp <= %d ', $id_agent_module, $datelimit, $date); - - return events_get_events_grouped($sql_where, 0, 1000, false, - false, false, $history); - - $sql = sprintf ('SELECT evento, event_type, criticity, count(*) as count_rep, max(timestamp) AS time2 - FROM tevento - WHERE id_agentmodule = %d AND utimestamp > %d AND utimestamp <= %d - GROUP BY id_agentmodule, evento ORDER BY time2 DESC', $id_agent_module, $datelimit, $date); - - return db_get_all_rows_sql ($sql); + } + else{ + $sql_where .= sprintf(' AND id_agente = %d AND utimestamp > %d + AND utimestamp <= %d ', $id_agent, $datelimit, $date); + } + + if($show_summary_group){ + return events_get_events_grouped($sql_where, 0, 1000, + is_metaconsole(), false, false, $history); + } + else{ + return events_get_events_no_grouped($sql_where, 0, 1000, + is_metaconsole(), false, false, $history); + } } /** @@ -1543,13 +1488,22 @@ function events_get_severity_types ($severity_id) { * * @return array Status description array. */ -function events_get_all_status () { +function events_get_all_status ($report = false) { $fields = array (); - $fields[-1] = __('All event'); - $fields[0] = __('Only new'); - $fields[1] = __('Only validated'); - $fields[2] = __('Only in process'); - $fields[3] = __('Only not validated'); + if(!$report){ + $fields[-1] = __('All event'); + $fields[0] = __('Only new'); + $fields[1] = __('Only validated'); + $fields[2] = __('Only in process'); + $fields[3] = __('Only not validated'); + } + else{ + $fields[-1] = __('All event'); + $fields[0] = __('New'); + $fields[1] = __('Validated'); + $fields[2] = __('In process'); + $fields[3] = __('Not Validated'); + } return $fields; } @@ -2637,12 +2591,20 @@ function events_clean_tags ($tags) { * @return array An array with all the events happened. */ function events_get_count_events_by_agent ($id_group, $period, $date, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { + $filter_event_severity = false, $filter_event_type = false, + $filter_event_status = false, $filter_event_filter_search = false) { global $config; - + + //date + if (!is_numeric ($date)) { + $date = strtotime ($date); + } + if (empty ($date)) { + $date = get_system_time (); + } + + //group $id_group = groups_safe_acl ($config["id_user"], $id_group, "AR"); if (empty ($id_group)) { @@ -2652,30 +2614,74 @@ function events_get_count_events_by_agent ($id_group, $period, $date, $datelimit = $date - $period; - $sql_where = ' AND 1 = 1 '; - $criticities = array(); - if ($filter_event_critical) { - $criticities[] = 4; + $sql_where = ''; + $severity_all = 0; + if (!empty($filter_event_severity)) { + foreach ($filter_event_severity as $key => $value) { + switch ($value) { + case 'all': + $severity_all = 1; + break; + case 34: + $filter_event_severity[$key] = '3, 4'; + break; + case 20: + $filter_event_severity[$key] = '0, 1, 3, 4, 5, 6'; + break; + case 21: + $filter_event_severity[$key] = '4, 2'; + break; + default: + break; + } + } + if(!$severity_all){ + $sql_where .= ' AND criticity IN (' . implode(', ', $filter_event_severity) . ')'; + } } - if ($filter_event_warning) { - $criticities[] = 3; - } - if (!empty($criticities)) { - $sql_where .= ' AND criticity IN (' . implode(', ', $criticities) . ')'; + + $status_all = 0; + if(!empty($filter_event_status)){ + foreach ($filter_event_status as $key => $value) { + switch ($value) { + case -1: + $status_all = 1; + break; + default: + break; + } + } + if(!$status_all){ + $sql_where .= ' AND estado IN (' . implode(', ', $filter_event_status) . ')'; + } } - if ($filter_event_validated) { - $sql_where .= ' AND estado = 1 '; + if (!empty($filter_event_type) && $filter_event_type[0] != 'all') { + $sql_where .= ' AND ('; + $type = array(); + foreach ($filter_event_type as $event_type) { + if ($event_type != "") { + // If normal, warning, could be several (going_up_warning, going_down_warning... too complex + // for the user so for him is presented only "warning, critical and normal" + if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") { + $type[] = " event_type LIKE '%$event_type%' "; + } + else if ($event_type == "not_normal") { + $type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') "; + } + else if ($event_type != "all") { + $type[] = " event_type = '" . $event_type."'"; + } + } + } + $sql_where .= implode(' OR ', $type) . ')'; } - if ($filter_event_no_validated) { - $sql_where .= ' AND estado = 0 '; + + if (!empty($filter_event_filter_search)) { + $sql_where .= ' AND (evento LIKE "%'. io_safe_input($filter_event_filter_search) . '%"'. + ' OR id_evento LIKE "%' . io_safe_input($filter_event_filter_search) . '%")'; } - - if (!empty($filter_event_search)) { - $sql_where .= ' AND (evento LIKE "%%'. io_safe_input($filter_event_search) . '%%"'. - ' OR id_evento LIKE "%%' . io_safe_input($filter_event_search) . '%%")'; - } - + $sql = sprintf ('SELECT id_agente, (SELECT t2.nombre FROM tagente t2 @@ -2683,9 +2689,9 @@ function events_get_count_events_by_agent ($id_group, $period, $date, COUNT(*) AS count FROM tevento t3 WHERE utimestamp > %d AND utimestamp <= %d - AND id_grupo IN (%s) ' . $sql_where . ' + AND id_grupo IN (%s) %s GROUP BY id_agente', - $datelimit, $date, implode (",", $id_group)); + $datelimit, $date, implode (",", $id_group), $sql_where); $rows = db_get_all_rows_sql ($sql); @@ -2716,12 +2722,11 @@ function events_get_count_events_by_agent ($id_group, $period, $date, * @return array An array with all the events happened. */ function events_get_count_events_validated_by_user ($filter, $period, $date, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { + $filter_event_severity = false, $filter_event_type = false, + $filter_event_status = false, $filter_event_filter_search = false) { global $config; - + //group $sql_filter = ' AND 1=1 '; if (isset($filter['id_group'])) { $id_group = groups_safe_acl ($config["id_user"], $filter['id_group'], "AR"); @@ -2734,35 +2739,93 @@ function events_get_count_events_validated_by_user ($filter, $period, $date, $sql_filter .= sprintf(' AND id_grupo IN (%s) ', implode (",", $id_group)); } + if (!empty($filter['id_agent'])) { $sql_filter .= sprintf(' AND id_agente = %d ', $filter['id_agent']); } + if(!empty($filter['id_agentmodule'])){ + $sql_filter .= + sprintf(' AND id_agentmodule = %d ', $filter['id_agentmodule']); + } + + //date + if (!is_numeric ($date)) { + $date = strtotime ($date); + } + if (empty ($date)) { + $date = get_system_time (); + } + $datelimit = $date - $period; - $sql_where = ' AND 1 = 1 '; - $criticities = array(); - if ($filter_event_critical) { - $criticities[] = 4; + $sql_where = ''; + $severity_all = 0; + if (!empty($filter_event_severity)) { + foreach ($filter_event_severity as $key => $value) { + switch ($value) { + case 'all': + $severity_all = 1; + break; + case 34: + $filter_event_severity[$key] = '3, 4'; + break; + case 20: + $filter_event_severity[$key] = '0, 1, 3, 4, 5, 6'; + break; + case 21: + $filter_event_severity[$key] = '4, 2'; + break; + default: + break; + } + } + if(!$severity_all){ + $sql_where .= ' AND criticity IN (' . implode(', ', $filter_event_severity) . ')'; + } } - if ($filter_event_warning) { - $criticities[] = 3; - } - if (!empty($criticities)) { - $sql_where .= ' AND criticity IN (' . implode(', ', $criticities) . ')'; + + $status_all = 0; + if(!empty($filter_event_status)){ + foreach ($filter_event_status as $key => $value) { + switch ($value) { + case -1: + $status_all = 1; + break; + default: + break; + } + } + if(!$status_all){ + $sql_where .= ' AND estado IN (' . implode(', ', $filter_event_status) . ')'; + } } - if ($filter_event_validated) { - $sql_where .= ' AND estado = 1 '; + if (!empty($filter_event_type) && $filter_event_type[0] != 'all') { + $sql_where .= ' AND ('; + $type = array(); + foreach ($filter_event_type as $event_type) { + if ($event_type != "") { + // If normal, warning, could be several (going_up_warning, going_down_warning... too complex + // for the user so for him is presented only "warning, critical and normal" + if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") { + $type[] = " event_type LIKE '%$event_type%' "; + } + else if ($event_type == "not_normal") { + $type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') "; + } + else if ($event_type != "all") { + $type[] = " event_type = '" . $event_type."'"; + } + } + } + $sql_where .= implode(' OR ', $type) . ')'; } - if ($filter_event_no_validated) { - $sql_where .= ' AND estado = 0 '; - } - - if (!empty($filter_event_search)) { - $sql_where .= ' AND (evento LIKE "%%'. io_safe_input($filter_event_search) . '%%"'. - ' OR id_evento LIKE "%%' . io_safe_input($filter_event_search) . '%%")'; + + if (!empty($filter_event_filter_search)) { + $sql_where .= ' AND (evento LIKE "%'. io_safe_input($filter_event_filter_search) . '%"'. + ' OR id_evento LIKE "%' . io_safe_input($filter_event_filter_search) . '%")'; } $sql = sprintf ('SELECT id_usuario, @@ -2772,10 +2835,9 @@ function events_get_count_events_validated_by_user ($filter, $period, $date, COUNT(*) AS count FROM tevento t3 WHERE utimestamp > %d AND utimestamp <= %d - %s ' . $sql_where . ' + %s %s GROUP BY id_usuario', - $datelimit, $date, $sql_filter); - + $datelimit, $date, $sql_filter, $sql_where); $rows = db_get_all_rows_sql ($sql); if ($rows == false) @@ -2789,7 +2851,6 @@ function events_get_count_events_validated_by_user ($filter, $period, $date, } $return[$user_name] = $row['count']; } - return $return; } @@ -2805,9 +2866,8 @@ function events_get_count_events_validated_by_user ($filter, $period, $date, * @return array An array with all the events happened. */ function events_get_count_events_by_criticity ($filter, $period, $date, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { + $filter_event_severity = false, $filter_event_type = false, + $filter_event_status = false, $filter_event_filter_search = false) { global $config; @@ -2823,44 +2883,101 @@ function events_get_count_events_by_criticity ($filter, $period, $date, $sql_filter .= sprintf(' AND id_grupo IN (%s) ', implode (",", $id_group)); } + if (!empty($filter['id_agent'])) { $sql_filter .= sprintf(' AND id_agente = %d ', $filter['id_agent']); } + + if(!empty($filter['id_agentmodule'])){ + $sql_filter .= + sprintf(' AND id_agentmodule = %d ', $filter['id_agentmodule']); + } + + if (!is_numeric ($date)) { + $date = strtotime ($date); + } + if (empty ($date)) { + $date = get_system_time (); + } $datelimit = $date - $period; - $sql_where = ' AND 1 = 1 '; - $criticities = array(); - if ($filter_event_critical) { - $criticities[] = 4; + $sql_where = ''; + $severity_all = 0; + if (!empty($filter_event_severity)) { + foreach ($filter_event_severity as $key => $value) { + switch ($value) { + case 'all': + $severity_all = 1; + break; + case 34: + $filter_event_severity[$key] = '3, 4'; + break; + case 20: + $filter_event_severity[$key] = '0, 1, 3, 4, 5, 6'; + break; + case 21: + $filter_event_severity[$key] = '4, 2'; + break; + default: + break; + } + } + if(!$severity_all){ + $sql_where .= ' AND criticity IN (' . implode(', ', $filter_event_severity) . ')'; + } } - if ($filter_event_warning) { - $criticities[] = 3; - } - if (!empty($criticities)) { - $sql_where .= ' AND criticity IN (' . implode(', ', $criticities) . ')'; + + $status_all = 0; + if(!empty($filter_event_status)){ + foreach ($filter_event_status as $key => $value) { + switch ($value) { + case -1: + $status_all = 1; + break; + default: + break; + } + } + if(!$status_all){ + $sql_where .= ' AND estado IN (' . implode(', ', $filter_event_status) . ')'; + } } - if ($filter_event_validated) { - $sql_where .= ' AND estado = 1 '; + if (!empty($filter_event_type) && $filter_event_type[0] != 'all') { + $sql_where .= ' AND ('; + $type = array(); + foreach ($filter_event_type as $event_type) { + if ($event_type != "") { + // If normal, warning, could be several (going_up_warning, going_down_warning... too complex + // for the user so for him is presented only "warning, critical and normal" + if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") { + $type[] = " event_type LIKE '%$event_type%' "; + } + else if ($event_type == "not_normal") { + $type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') "; + } + else if ($event_type != "all") { + $type[] = " event_type = '" . $event_type."'"; + } + } + } + $sql_where .= implode(' OR ', $type) . ')'; } - if ($filter_event_no_validated) { - $sql_where .= ' AND estado = 0 '; + + if (!empty($filter_event_filter_search)) { + $sql_where .= ' AND (evento LIKE "%'. io_safe_input($filter_event_filter_search) . '%"'. + ' OR id_evento LIKE "%' . io_safe_input($filter_event_filter_search) . '%")'; } - - if (!empty($filter_event_search)) { - $sql_where .= ' AND (evento LIKE "%%'. io_safe_input($filter_event_search) . '%%"'. - ' OR id_evento LIKE "%%' . io_safe_input($filter_event_search) . '%%")'; - } - + $sql = sprintf ('SELECT criticity, COUNT(*) AS count FROM tevento WHERE utimestamp > %d AND utimestamp <= %d - %s ' . $sql_where . ' + %s %s GROUP BY criticity', - $datelimit, $date, $sql_filter); + $datelimit, $date, $sql_filter, $sql_where); $rows = db_get_all_rows_sql ($sql); @@ -2887,12 +3004,12 @@ function events_get_count_events_by_criticity ($filter, $period, $date, * @return array An array with all the events happened. */ function events_get_count_events_validated ($filter, $period = null, $date = null, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false, - $filter_event_search = false) { + $filter_event_severity = false, $filter_event_type = false, + $filter_event_status = false, $filter_event_filter_search = false) { global $config; + //group $sql_filter = " 1=1 "; if (isset($filter['id_group'])) { $id_group = groups_safe_acl ($config["id_user"], $filter['id_group'], "AR"); @@ -2905,11 +3022,25 @@ function events_get_count_events_validated ($filter, $period = null, $date = nul $sql_filter .= sprintf(" AND id_grupo IN (%s) ", implode (",", $id_group)); } + //agent if (!empty($filter['id_agent'])) { $sql_filter .= sprintf(" AND id_agente = %d ", $filter['id_agent']); } + //module + if(!empty($filter['id_agentmodule'])){ + $sql_filter .= + sprintf(' AND id_agentmodule = %d ', $filter['id_agentmodule']); + } + //date + if (!is_numeric ($date)) { + $date = strtotime ($date); + } + if (empty ($date)) { + $date = get_system_time (); + } + $date_filter = ''; if (!empty($date) && !empty($period)) { $datelimit = $date - $period; @@ -2928,31 +3059,75 @@ function events_get_count_events_validated ($filter, $period = null, $date = nul $date_filter .= sprintf (" AND utimestamp <= %d ", $date); } - $sql_where = " AND 1=1 "; - $criticities = array(); - if ($filter_event_critical) { - $criticities[] = 4; - } - if ($filter_event_warning) { - $criticities[] = 3; - } - if (!empty($criticities)) { - $sql_where .= " AND criticity IN (" . implode(",", $criticities) . ")"; - } - - if ($filter_event_validated) { - $sql_where .= " AND estado = 1 "; - } - if ($filter_event_no_validated) { - $sql_where .= " AND estado = 0 "; - } - - if (!empty($filter_event_search)) { - $sql_where .= " AND (evento LIKE '%%" . io_safe_input($filter_event_search) . "%%'" . - " OR id_evento LIKE '%%" . io_safe_input($filter_event_search) . "%%')"; + $sql_where = ''; + $severity_all = 0; + if (!empty($filter_event_severity)) { + foreach ($filter_event_severity as $key => $value) { + switch ($value) { + case 'all': + $severity_all = 1; + break; + case 34: + $filter_event_severity[$key] = '3, 4'; + break; + case 20: + $filter_event_severity[$key] = '0, 1, 3, 4, 5, 6'; + break; + case 21: + $filter_event_severity[$key] = '4, 2'; + break; + default: + break; + } + } + if(!$severity_all){ + $sql_where .= ' AND criticity IN (' . implode(', ', $filter_event_severity) . ')'; + } } - $sql = sprintf ("SELECT estado, COUNT(*) AS count FROM tevento WHERE %s " . $sql_where . " GROUP BY estado", $sql_filter); + $status_all = 0; + if(!empty($filter_event_status)){ + foreach ($filter_event_status as $key => $value) { + switch ($value) { + case -1: + $status_all = 1; + break; + default: + break; + } + } + if(!$status_all){ + $sql_where .= ' AND estado IN (' . implode(', ', $filter_event_status) . ')'; + } + } + + if (!empty($filter_event_type) && $filter_event_type[0] != 'all') { + $sql_where .= ' AND ('; + $type = array(); + foreach ($filter_event_type as $event_type) { + if ($event_type != "") { + // If normal, warning, could be several (going_up_warning, going_down_warning... too complex + // for the user so for him is presented only "warning, critical and normal" + if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal") { + $type[] = " event_type LIKE '%$event_type%' "; + } + else if ($event_type == "not_normal") { + $type[] = " (event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%') "; + } + else if ($event_type != "all") { + $type[] = " event_type = '" . $event_type."'"; + } + } + } + $sql_where .= implode(' OR ', $type) . ')'; + } + + if (!empty($filter_event_filter_search)) { + $sql_where .= ' AND (evento LIKE "%'. io_safe_input($filter_event_filter_search) . '%"'. + ' OR id_evento LIKE "%' . io_safe_input($filter_event_filter_search) . '%")'; + } + + $sql = sprintf ("SELECT estado, COUNT(*) AS count FROM tevento WHERE %s %s GROUP BY estado", $sql_filter, $sql_where); $rows = db_get_all_rows_sql ($sql); diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 6664708b83..54ac68fb98 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -442,7 +442,10 @@ function reporting_make_reporting_data($report = null, $id_report, case 'event_report_module': $report['contents'][] = reporting_event_report_module( $report, - $content); + $content, + $type, + $force_width_chart, + $force_height_chart); break; case 'event_report_group': $report['contents'][] = reporting_event_report_group( @@ -1408,15 +1411,25 @@ function reporting_event_report_group($report, $content, metaconsole_restore_db(); } - $return['total_events'] = count($return['data']); + //total_events + if(isset($return['data'])){ + $return['total_events'] = count($return['data']); + } + else{ + $return['total_events'] = 0; + } return reporting_check_structure_content($return); } -function reporting_event_report_module($report, $content) { +function reporting_event_report_module($report, $content, + $type = 'dinamic', $force_width_chart = null, + $force_height_chart = null) { global $config; + $ttl = 1; + $return['type'] = 'event_report_module'; if (empty($content['name'])) { @@ -1440,23 +1453,39 @@ function reporting_event_report_module($report, $content) { $return["date"] = reporting_get_date_text($report, $content); $return['label'] = (isset($content['style']['label'])) ? $content['style']['label'] : ''; - $data = reporting_get_module_detailed_event( - $content['id_agent_module'], $content['period'], - $report["datetime"], true, false, true); + $event_filter = $content['style']; + $return['show_summary_group'] = $event_filter['show_summary_group']; + //filter + $show_summary_group = $event_filter['show_summary_group']; + $filter_event_severity = json_decode($event_filter['filter_event_severity'],true); + $filter_event_type = json_decode($event_filter['filter_event_type'],true); + $filter_event_status = json_decode($event_filter['filter_event_status'],true); + $filter_event_filter_search = $event_filter['event_filter_search']; + //graphs + $event_graph_by_user_validator = $event_filter['event_graph_by_user_validator']; + $event_graph_by_criticity = $event_filter['event_graph_by_criticity']; + $event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated']; + + //data events + $data = reporting_get_module_detailed_event ( + $content['id_agent_module'], $content['period'], $report["datetime"], + $show_summary_group, $filter_event_severity, $filter_event_type, + $filter_event_status, $filter_event_filter_search, $force_width_chart, + $event_graph_by_user_validator, $event_graph_by_criticity, + $event_graph_validated_vs_unvalidated, $ttl); + if (empty($data)) { $return['failed'] = __('No events'); } else { $return['data'] = array_reverse($data); - } - + } + if ($config['metaconsole']) { metaconsole_restore_db(); } - $return['total_events'] = count($return['data']); - return reporting_check_structure_content($return); } @@ -2290,8 +2319,14 @@ function reporting_event_report_agent($report, $content, metaconsole_restore_db(); } - $return['total_events'] = count($return['data']); - + //total_events + if(isset($return['data'])){ + $return['total_events'] = count($return['data']); + } + else{ + $return['total_events'] = 0; + } + return reporting_check_structure_content($return); } @@ -6043,7 +6078,11 @@ function reporting_set_conf_charts(&$width, &$height, &$only_image, $type, * @return mixed A table object (XHTML) or object table is false the html. */ function reporting_get_module_detailed_event ($id_modules, $period = 0, - $date = 0, $return = false, $html = true, $only_data = false) { + $date = 0, $show_summary_group = false, $filter_event_severity = false, + $filter_event_type = false, $filter_event_status = false, + $filter_event_filter_search = false, $force_width_chart = false, + $event_graph_by_user_validator = false, $event_graph_by_criticity = false, + $event_graph_validated_vs_unvalidated = false, $ttl = 1) { global $config; @@ -6063,70 +6102,92 @@ function reporting_get_module_detailed_event ($id_modules, $period = 0, $events = array (); foreach ($id_modules as $id_module) { - $event = events_get_module ($id_module, (int) $period, (int) $date, $history, $show_summary_group); + $event['data'] = events_get_agent (false, (int) $period, (int) $date, + $history, $show_summary_group, $filter_event_severity, + $filter_event_type, $filter_event_status, $filter_event_filter_search, + false, false, $id_module, true); + + //total_events + if(isset($event['data'])){ + $event['total_events'] = count($event['data']); + } + else{ + $event['total_events'] = 0; + } + + //graphs + if (!empty($force_width_chart)) { + $width = $force_width_chart; + } + + if (!empty($force_height_chart)) { + $height = $force_height_chart; + } + + if ($event_graph_by_user_validator) { + $data_graph = events_get_count_events_validated_by_user( + array('id_agentmodule' => $id_module), $period, $date, $filter_event_severity, + $filter_event_type, $filter_event_status, $filter_event_filter_search); + + $event['chart']['by_user_validator'] = pie3d_graph( + false, + $data_graph, + 500, + 150, + __("other"), + ui_get_full_url(false, false, false, false), + ui_get_full_url(false, false, false, false) . "/images/logo_vertical_water.png", + $config['fontpath'], + $config['font_size'], + $ttl); + } + + if ($event_graph_by_criticity) { + $data_graph = events_get_count_events_by_criticity( + array('id_agentmodule' => $id_module), $period, $date, $filter_event_severity, + $filter_event_type, $filter_event_status, $filter_event_filter_search); + + $colors = get_criticity_pie_colors($data_graph); + + $event['chart']['by_criticity'] = pie3d_graph( + false, + $data_graph, + 500, + 150, + __("other"), + ui_get_full_url(false, false, false, false), + ui_get_full_url(false, false, false, false) . "/images/logo_vertical_water.png", + $config['fontpath'], + $config['font_size'], + $ttl, + false, + $colors); + } + + if ($event_graph_validated_vs_unvalidated) { + $data_graph = events_get_count_events_validated( + array('id_agentmodule' => $id_module), $period, $date, $filter_event_severity, + $filter_event_type, $filter_event_status, $filter_event_filter_search); + + $event['chart']['validated_vs_unvalidated'] = pie3d_graph( + false, + $data_graph, + 500, + 150, + __("other"), + ui_get_full_url(false, false, false, false), + ui_get_full_url(false, false, false, false) . "/images/logo_vertical_water.png", + $config['fontpath'], + $config['font_size'], + $ttl); + } + if (!empty ($event)) { array_push ($events, $event); } } - - if ($only_data) { - return $event; - } - - if ($events) { - $note = ''; - if (count($events) >= 1000) { - $note .= '* ' . __('Maximum of events shown') . ' (1000)
'; - } - foreach ($events as $eventRow) { - foreach ($eventRow as $k => $event) { - //$k = count($table->data); - $table->cellclass[$k][1] = $table->cellclass[$k][2] = - $table->cellclass[$k][3] = $table->cellclass[$k][4] = - $table->cellclass[$k][5] = get_priority_class ($event["criticity"]); - - $data = array (); - - // Colored box - switch ($event['estado']) { - case 0: - $img_st = "images/star.png"; - $title_st = __('New event'); - break; - case 1: - $img_st = "images/tick.png"; - $title_st = __('Event validated'); - break; - case 2: - $img_st = "images/hourglass.png"; - $title_st = __('Event in process'); - break; - } - $data[0] = html_print_image ($img_st, true, - array ("class" => "image_status", - "width" => 16, - "title" => $title_st, - "id" => 'status_img_' . $event["id_evento"])); - - $data[1] = io_safe_output($event['evento']); - $data[2] = $event['event_type']; - $data[3] = get_priority_name ($event['criticity']); - $data[4] = $event['event_rep']; - $data[5] = date($config['date_format'], $event['timestamp_rep']); - array_push ($table->data, $data); - } - } - - if ($html) { - return html_print_table ($table, $return) . $note; - } - else { - return $table; - } - } - else { - return false; - } + + return $events; } diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index e297efd5bd..d1f865dc59 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -131,17 +131,13 @@ function reporting_html_print_report($report, $mini = false) { $table->data['description_row']['description'] = $item['description']; - if($item['type']=='event_report_agent' || $item['type']=='event_report_module' || $item['type']=='event_report_group'){ - + if($item['type']=='event_report_agent' || $item['type']=='event_report_group'){ if($item['description'] != '' && $item['description'] != null){ $table->data['description_row']['description'] .= " - "; } - $table->data['description_row']['description'] .= "Total events: ".$item["total_events"]; - - } $table->colspan['description_row']['description'] = 3; @@ -917,69 +913,139 @@ function reporting_html_event_report_group($table, $item) { } function reporting_html_event_report_module($table, $item) { - global $config; - + $show_summary_group = $item['show_summary_group']; if (!empty($item['failed'])) { $table->colspan['events']['cell'] = 3; $table->data['events']['cell'] = $item['failed']; } else { - $table1 = new stdClass(); - $table1->width = '99%'; - $table1->data = array (); - $table1->head = array (); - $table1->head[0] = __('Status'); - $table1->head[1] = __('Event name'); - $table1->head[2] = __('Event type'); - $table1->head[3] = __('Severity'); - $table1->head[4] = __('Count'); - $table1->head[5] = __('Timestamp'); - $table1->style[0] = 'text-align: center;'; - $table1->style[4] = 'text-align: center;'; - - - foreach ($item['data'] as $i => $event) { - $data = array(); - - $table1->cellclass[$i][1] = - $table1->cellclass[$i][2] = - $table1->cellclass[$i][3] = - $table1->cellclass[$i][4] = - $table1->cellclass[$i][5] = get_priority_class($event["criticity"]); - - // Colored box - switch ($event['estado']) { - case 0: - $img_st = "images/star.png"; - $title_st = __('New event'); - break; - case 1: - $img_st = "images/tick.png"; - $title_st = __('Event validated'); - break; - case 2: - $img_st = "images/hourglass.png"; - $title_st = __('Event in process'); - break; + foreach ($item['data'] as $item) { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->data = array (); + $table1->head = array (); + if($show_summary_group){ + $table1->head[0] = __('Status'); + $table1->head[1] = __('Event name'); + $table1->head[2] = __('Event type'); + $table1->head[3] = __('Severity'); + $table1->head[4] = __('Count'); + $table1->head[5] = __('Timestamp'); + $table1->style[0] = 'text-align: center;'; + } + else{ + $table1->head[0] = __('Status'); + $table1->head[1] = __('Event name'); + $table1->head[2] = __('Event type'); + $table1->head[3] = __('Severity'); + $table1->head[4] = __('Timestamp'); + $table1->style[0] = 'text-align: center;'; + } + $table->data['tatal_events']['cell'] = "Total events: ".$item["total_events"]; + if (is_array($item['data']) || is_object($item['data'])){ + $item_data = array_reverse($item['data']); } - $data[0] = html_print_image ($img_st, true, - array ("class" => "image_status", - "width" => 16, - "title" => $title_st, - "id" => 'status_img_' . $event["id_evento"])); - $data[1] = io_safe_output($event['evento']); - $data[2] = $event['event_type']; - $data[3] = get_priority_name ($event['criticity']); - $data[4] = $event['event_rep']; - $data[5] = date($config['date_format'], $event['timestamp_rep']); + if (is_array($item_data) || is_object($item_data)){ + foreach ($item_data as $i => $event) { + $data = array(); + if($show_summary_group){ + $table1->cellclass[$i][1] = $table1->cellclass[$i][2] = + $table1->cellclass[$i][3] = $table1->cellclass[$i][4] = + $table1->cellclass[$i][5] = get_priority_class($event["criticity"]); + } + else{ + $table1->cellclass[$i][1] = $table1->cellclass[$i][2] = + $table1->cellclass[$i][3] = + $table1->cellclass[$i][4] = get_priority_class($event["criticity"]); + } + // Colored box + switch ($event['estado']) { + case 0: + $img_st = "images/star.png"; + $title_st = __('New event'); + break; + case 1: + $img_st = "images/tick.png"; + $title_st = __('Event validated'); + break; + case 2: + $img_st = "images/hourglass.png"; + $title_st = __('Event in process'); + break; + } + + $data[0] = html_print_image ($img_st, true, + array ("class" => "image_status", + "width" => 16, + "title" => $title_st, + "id" => 'status_img_' . $event["id_evento"])); + $data[1] = io_safe_output($event['evento']); + $data[2] = $event['event_type']; + $data[3] = get_priority_name ($event['criticity']); + if($show_summary_group){ + $data[4] = $event['event_rep']; + $data[5] = date($config['date_format'], $event['timestamp_rep']); + } + else{ + $data[4] = date($config['date_format'], strtotime($event['timestamp'])); + } + $table1->data[] = $data; + } + } + + $table->colspan['events']['cell'] = 3; + $table->data['events']['cell'] = html_print_table($table1, true); + + if (!empty($item['chart']['by_agent'])) { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->head = array (); + $table1->head[0] = __('Events by agent'); + $table1->data[0][0] = $item['chart']['by_agent']; + + $table->colspan['chart_by_agent']['cell'] = 3; + $table->cellstyle['chart_by_agent']['cell'] = 'text-align: center;'; + $table->data['chart_by_agent']['cell'] = html_print_table($table1, true); + } - $table1->data[] = $data; + if (!empty($item['chart']['by_user_validator'])) { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->head = array (); + $table1->head[0] = __('Events by user validator'); + $table1->data[0][0] = $item['chart']['by_user_validator']; + + $table->colspan['chart_by_user_validator']['cell'] = 3; + $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; + $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + } + + if (!empty($item['chart']['by_criticity'])) { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->head = array (); + $table1->head[0] = __('Events by Severity'); + $table1->data[0][0] = $item['chart']['by_criticity']; + + $table->colspan['chart_by_criticity']['cell'] = 3; + $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; + $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + } + + if (!empty($item['chart']['validated_vs_unvalidated'])) { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->head = array (); + $table1->head[0] = __('Events validated vs unvalidated'); + $table1->data[0][0] = $item['chart']['validated_vs_unvalidated']; + + $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; + $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; + $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + } } - - $table->colspan['events']['cell'] = 3; - $table->data['events']['cell'] = html_print_table($table1, true); } } diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index cd0457fd31..20b01d9091 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -3596,4 +3596,10 @@ color:#82b92e;font-family:Nunito;font-size:10pt;position:relative;top:6px; .input_error { border: 1px solid red; +} + +#filter_event_status, +#filter_event_severity, +#filter_event_type { + width:50%; } \ No newline at end of file From 86207212eb1b5bf7b8756aefe70a85e282e9a546 Mon Sep 17 00:00:00 2001 From: daniel Date: Wed, 18 Jan 2017 10:37:08 +0100 Subject: [PATCH 3/3] fixed pdf reports events (cherry picked from commit 8006c1fc0b69567053ac3bd9597be848350be3b6) --- pandora_console/include/functions_events.php | 10 +- .../include/functions_reporting.php | 12 +- .../include/functions_reporting_html.php | 201 ++++++++++++++---- 3 files changed, 169 insertions(+), 54 deletions(-) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index c6c7a4a152..9cfaaf003c 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -1287,7 +1287,7 @@ function events_get_agent ($id_agent, $period, $date = 0, if (!empty($filter_event_severity)) { foreach ($filter_event_severity as $key => $value) { switch ($value) { - case 'all': + case -1: $severity_all = 1; break; case 34: @@ -2619,7 +2619,7 @@ function events_get_count_events_by_agent ($id_group, $period, $date, if (!empty($filter_event_severity)) { foreach ($filter_event_severity as $key => $value) { switch ($value) { - case 'all': + case -1: $severity_all = 1; break; case 34: @@ -2765,7 +2765,7 @@ function events_get_count_events_validated_by_user ($filter, $period, $date, if (!empty($filter_event_severity)) { foreach ($filter_event_severity as $key => $value) { switch ($value) { - case 'all': + case -1: $severity_all = 1; break; case 34: @@ -2908,7 +2908,7 @@ function events_get_count_events_by_criticity ($filter, $period, $date, if (!empty($filter_event_severity)) { foreach ($filter_event_severity as $key => $value) { switch ($value) { - case 'all': + case -1: $severity_all = 1; break; case 34: @@ -3064,7 +3064,7 @@ function events_get_count_events_validated ($filter, $period = null, $date = nul if (!empty($filter_event_severity)) { foreach ($filter_event_severity as $key => $value) { switch ($value) { - case 'all': + case -1: $severity_all = 1; break; case 34: diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 54ac68fb98..a0d0ade177 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -445,7 +445,8 @@ function reporting_make_reporting_data($report = null, $id_report, $content, $type, $force_width_chart, - $force_height_chart); + $force_height_chart, + $pdf); break; case 'event_report_group': $report['contents'][] = reporting_event_report_group( @@ -1424,11 +1425,16 @@ function reporting_event_report_group($report, $content, function reporting_event_report_module($report, $content, $type = 'dinamic', $force_width_chart = null, - $force_height_chart = null) { + $force_height_chart = null, $pdf=0) { global $config; - $ttl = 1; + if($pdf){ + $ttl = 2; + } + else{ + $ttl = 1; + } $return['type'] = 'event_report_module'; diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index d1f865dc59..35bad17c28 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -747,7 +747,7 @@ function reporting_html_top_n($table, $item) { } } -function reporting_html_event_report_group($table, $item) { +function reporting_html_event_report_group($table, $item, $pdf = 0) { global $config; if (!empty($item['failed'])) { $table->colspan['events']['cell'] = 3; @@ -859,9 +859,16 @@ function reporting_html_event_report_group($table, $item) { array_push ($table1->data, $data); } - $table->colspan['events']['cell'] = 3; - $table->data['events']['cell'] = html_print_table($table1, true); - + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export = html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['events']['cell'] = 3; + $table->data['events']['cell'] = html_print_table($table1, true); + } + if (!empty($item['chart']['by_agent'])) { $table1 = new stdClass(); $table1->width = '99%'; @@ -869,9 +876,16 @@ function reporting_html_event_report_group($table, $item) { $table1->head[0] = __('Events by agent'); $table1->data[0][0] = $item['chart']['by_agent']; - $table->colspan['chart_by_agent']['cell'] = 3; - $table->cellstyle['chart_by_agent']['cell'] = 'text-align: center;'; - $table->data['chart_by_agent']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_agent']['cell'] = 3; + $table->cellstyle['chart_by_agent']['cell'] = 'text-align: center;'; + $table->data['chart_by_agent']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['by_user_validator'])) { @@ -881,9 +895,16 @@ function reporting_html_event_report_group($table, $item) { $table1->head[0] = __('Events by user validator'); $table1->data[0][0] = $item['chart']['by_user_validator']; - $table->colspan['chart_by_user_validator']['cell'] = 3; - $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; - $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_user_validator']['cell'] = 3; + $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; + $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['by_criticity'])) { @@ -893,9 +914,16 @@ function reporting_html_event_report_group($table, $item) { $table1->head[0] = __('Events by Severity'); $table1->data[0][0] = $item['chart']['by_criticity']; - $table->colspan['chart_by_criticity']['cell'] = 3; - $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; - $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_criticity']['cell'] = 3; + $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; + $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['validated_vs_unvalidated'])) { @@ -905,14 +933,25 @@ function reporting_html_event_report_group($table, $item) { $table1->head[0] = __('Events validated vs unvalidated'); $table1->data[0][0] = $item['chart']['validated_vs_unvalidated']; - $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; - $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; - $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; + $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; + $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + } + } + + if($pdf){ + return $pdf_export; } } } -function reporting_html_event_report_module($table, $item) { +function reporting_html_event_report_module($table, $item, $pdf = 0) { global $config; $show_summary_group = $item['show_summary_group']; if (!empty($item['failed'])) { @@ -994,10 +1033,16 @@ function reporting_html_event_report_module($table, $item) { $table1->data[] = $data; } } - - $table->colspan['events']['cell'] = 3; - $table->data['events']['cell'] = html_print_table($table1, true); - + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export = html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['events']['cell'] = 3; + $table->data['events']['cell'] = html_print_table($table1, true); + } + if (!empty($item['chart']['by_agent'])) { $table1 = new stdClass(); $table1->width = '99%'; @@ -1005,9 +1050,16 @@ function reporting_html_event_report_module($table, $item) { $table1->head[0] = __('Events by agent'); $table1->data[0][0] = $item['chart']['by_agent']; - $table->colspan['chart_by_agent']['cell'] = 3; - $table->cellstyle['chart_by_agent']['cell'] = 'text-align: center;'; - $table->data['chart_by_agent']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_agent']['cell'] = 3; + $table->cellstyle['chart_by_agent']['cell'] = 'text-align: center;'; + $table->data['chart_by_agent']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['by_user_validator'])) { @@ -1017,9 +1069,16 @@ function reporting_html_event_report_module($table, $item) { $table1->head[0] = __('Events by user validator'); $table1->data[0][0] = $item['chart']['by_user_validator']; - $table->colspan['chart_by_user_validator']['cell'] = 3; - $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; - $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_user_validator']['cell'] = 3; + $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; + $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['by_criticity'])) { @@ -1029,9 +1088,16 @@ function reporting_html_event_report_module($table, $item) { $table1->head[0] = __('Events by Severity'); $table1->data[0][0] = $item['chart']['by_criticity']; - $table->colspan['chart_by_criticity']['cell'] = 3; - $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; - $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_criticity']['cell'] = 3; + $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; + $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['validated_vs_unvalidated'])) { @@ -1041,9 +1107,20 @@ function reporting_html_event_report_module($table, $item) { $table1->head[0] = __('Events validated vs unvalidated'); $table1->data[0][0] = $item['chart']['validated_vs_unvalidated']; - $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; - $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; - $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; + $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; + $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + } + } + + if($pdf){ + return $pdf_export; } } } @@ -1464,7 +1541,7 @@ function reporting_html_group_report($table, $item) { "; } -function reporting_html_event_report_agent($table, $item) { +function reporting_html_event_report_agent($table, $item, $pdf = 0) { global $config; $table1 = new stdClass(); $table1->width = '99%'; @@ -1550,9 +1627,16 @@ function reporting_html_event_report_agent($table, $item) { array_push ($table1->data, $data); } - $table->colspan['event_list']['cell'] = 3; - $table->cellstyle['event_list']['cell'] = 'text-align: center;'; - $table->data['event_list']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export = html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['event_list']['cell'] = 3; + $table->cellstyle['event_list']['cell'] = 'text-align: center;'; + $table->data['event_list']['cell'] = html_print_table($table1, true); + } if (!empty($item['chart']['by_user_validator'])) { $table1 = new stdClass(); @@ -1561,9 +1645,16 @@ function reporting_html_event_report_agent($table, $item) { $table1->head[0] = __('Events validated by user'); $table1->data[0][0] = $item['chart']['by_user_validator']; - $table->colspan['chart_by_user_validator']['cell'] = 3; - $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; - $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_user_validator']['cell'] = 3; + $table->cellstyle['chart_by_user_validator']['cell'] = 'text-align: center;'; + $table->data['chart_by_user_validator']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['by_criticity'])) { @@ -1573,9 +1664,16 @@ function reporting_html_event_report_agent($table, $item) { $table1->head[0] = __('Events by severity'); $table1->data[0][0] = $item['chart']['by_criticity']; - $table->colspan['chart_by_criticity']['cell'] = 3; - $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; - $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_by_criticity']['cell'] = 3; + $table->cellstyle['chart_by_criticity']['cell'] = 'text-align: center;'; + $table->data['chart_by_criticity']['cell'] = html_print_table($table1, true); + } } if (!empty($item['chart']['validated_vs_unvalidated'])) { @@ -1585,9 +1683,20 @@ function reporting_html_event_report_agent($table, $item) { $table1->head[0] = __('Amount events validated'); $table1->data[0][0] = $item['chart']['validated_vs_unvalidated']; - $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; - $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; - $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + if($pdf){ + $table1->class = 'table-beauty'; + $pdf_export .= html_print_table($table1, true); + $pdf_export .= '
'; + } + else{ + $table->colspan['chart_validated_vs_unvalidated']['cell'] = 3; + $table->cellstyle['chart_validated_vs_unvalidated']['cell'] = 'text-align: center;'; + $table->data['chart_validated_vs_unvalidated']['cell'] = html_print_table($table1, true); + } + } + + if($pdf){ + return $pdf_export; } }