diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index ba97495359..a97e52e892 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,17 @@ +2010-04-27 Miguel de Dios + + * include/functions_reporting.php: in function + "get_agents_detailed_event_reporting" fixed param for $id_agents to array + type, fixed the loop to save events and fixed in the loop to make the table. + Added the function "get_module_detailed_event_reporting" for events of any + module. In function "render_report_html_item" remove trace function, added + the render option "event_report_module" for render list of events of any + module. + + * include/functions_db.php: added function "get_module_events". + + * operation/gis_maps/ajax.php: cleaned source code. + 2010-04-27 Sergio Martin * include/functions_db.php diff --git a/pandora_console/include/functions_db.php b/pandora_console/include/functions_db.php index ec17565c0a..be7f1d9f3f 100644 --- a/pandora_console/include/functions_db.php +++ b/pandora_console/include/functions_db.php @@ -885,7 +885,33 @@ function get_agent_events ($id_agent, $period, $date = 0) { return get_db_all_rows_sql ($sql); } +/** + * 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 get_module_events ($id_agent_module, $period, $date = 0) { + if (!is_numeric ($date)) { + $date = strtotime ($date); + } + if (empty ($date)) { + $date = get_system_time (); + } + $datelimit = $date - $period; + + $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 get_db_all_rows_sql ($sql); +} /** * Get all the monitors defined in an agent. diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 94a09bd1ec..3032c8a741 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -930,7 +930,7 @@ function get_group_agents_detailed_reporting ($id_group, $period = 0, $date = 0, * @return A table object (XHTML) */ function get_agents_detailed_event_reporting ($id_agents, $period = 0, $date = 0, $return = false) { - $id_agents = safe_int ($id_agents, 1); + $id_agents = (array)safe_int ($id_agents, 1); if (!is_numeric ($date)) { $date = strtotime ($date); @@ -942,7 +942,7 @@ function get_agents_detailed_event_reporting ($id_agents, $period = 0, $date = 0 global $config; $period = $config["sla_period"]; } - + $table->width = '99%'; $table->data = array (); $table->head = array (); @@ -953,29 +953,93 @@ function get_agents_detailed_event_reporting ($id_agents, $period = 0, $date = 0 $table->head[4] = __('Timestamp'); $events = array (); - if ($events) + foreach ($id_agents as $id_agent) { $event = get_agent_events ($id_agent, (int) $period, (int) $date); if (!empty ($event)) { array_push ($events, $event); } } - + if ($events) - foreach ($events as $event) { - $data = array (); - $data[0] = $event['evento']; - $data[1] = $event['event_type']; - $data[2] = get_priority_name ($event['criticity']); - $data[3] = $event['count_rep']; - $data[4] = $event['time2']; - array_push ($table->data, $data); + foreach ($events as $eventRow) { + foreach ($eventRow as $event) { + $data = array (); + $data[0] = $event['evento']; + $data[1] = $event['event_type']; + $data[2] = get_priority_name ($event['criticity']); + $data[3] = $event['count_rep']; + $data[4] = $event['time2']; + array_push ($table->data, $data); + } } if ($events) return print_table ($table, $return); } +/** + * Get a detailed report of summarized events per agent + * + * It construct a table object with all the grouped events happened in an agent + * during a period of time. + * + * @param mixed Module id to get the report from. + * @param int Period of time (in seconds) to get the report. + * @param int Beginning date (unixtime) of the report + * @param bool Flag to return or echo the report table (echo by default). + * + * @return A table object (XHTML) + */ +function get_module_detailed_event_reporting ($id_modules, $period = 0, $date = 0, $return = false) { + $id_modules = (array)safe_int ($id_modules, 1); + + if (!is_numeric ($date)) { + $date = strtotime ($date); + } + if (empty ($date)) { + $date = get_system_time (); + } + if (empty ($period)) { + global $config; + $period = $config["sla_period"]; + } + + $table->width = '99%'; + $table->data = array (); + $table->head = array (); + $table->head[0] = __('Event name'); + $table->head[1] = __('Event type'); + $table->head[2] = __('Criticity'); + $table->head[3] = __('Count'); + $table->head[4] = __('Timestamp'); + + $events = array (); + + foreach ($id_modules as $id_module) { + $event = get_agent_events ($id_module, (int) $period, (int) $date); + if (!empty ($event)) { + array_push ($events, $event); + } + } + + if ($events) + foreach ($events as $eventRow) { + foreach ($eventRow as $event) { + $data = array (); + $data[0] = $event['evento']; + $data[1] = $event['event_type']; + $data[2] = get_priority_name ($event['criticity']); + $data[3] = $event['count_rep']; + $data[4] = $event['time2']; + array_push ($table->data, $data); + } + } + + if ($events) + return print_table ($table, $return); +} + /** * Get a detailed report of the modules of the agent * @@ -1182,7 +1246,7 @@ function get_agent_module_info_with_filter ($id_agent,$filter = '') { function render_report_html_item ($content, $table, $report) { global $config; - $module_name = get_db_value ('nombre', 'tagente_modulo', 'id_agente_modulo', $content['id_agent_module']); debugPrint($module_name); + $module_name = get_db_value ('nombre', 'tagente_modulo', 'id_agente_modulo', $content['id_agent_module']); $agent_name = get_agentmodule_agent_name ($content['id_agent_module']); switch ($content["type"]) { @@ -1642,6 +1706,25 @@ function render_report_html_item ($content, $table, $report) { $cellContent = print_table($table2, true); array_push($table->data, array($cellContent)); break; + case 'event_report_module': + $data = array (); + $data[0] = "

" . __('Module detailed event') . "

"; + $data[1] = "

$agent_name - $module_name

"; + array_push ($table->data, $data); + + // Put description at the end of the module (if exists) + if ($content["description"] != ""){ + $table->colspan[1][0] = 3; + $data_desc = array(); + $data_desc[0] = $content["description"]; + array_push ($table->data, $data_desc); + } + + $data = array (); + $table->colspan[2][0] = 3; + $data[0] = get_module_detailed_event_reporting($content['id_agent_module'], $content['period'], $report["datetime"]); + array_push ($table->data, $data); + break; } } diff --git a/pandora_console/operation/gis_maps/ajax.php b/pandora_console/operation/gis_maps/ajax.php index ace5c8f780..f504ad7338 100644 --- a/pandora_console/operation/gis_maps/ajax.php +++ b/pandora_console/operation/gis_maps/ajax.php @@ -177,4 +177,4 @@ switch ($opt) { echo json_encode($returnJSON); break; } -?> +?> \ No newline at end of file