diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index fc53e39129..39c667b7a8 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,11 @@ +2010-06-21 Sergio Martin + + * godmode/reporting/graph_builder.main.php + godmode/reporting/graph_builder.php + godmode/reporting/graph_builder.graph_editor.php + godmode/reporting/graph_builder.preview.php: Rewritted + the combined graphs editor + 2010-06-21 Raúl Mateos * godmode/alerts/alert_list_builder.php: Added link to create template. diff --git a/pandora_console/godmode/reporting/graph_builder.graph_editor.php b/pandora_console/godmode/reporting/graph_builder.graph_editor.php new file mode 100644 index 0000000000..aa93d60615 --- /dev/null +++ b/pandora_console/godmode/reporting/graph_builder.graph_editor.php @@ -0,0 +1,177 @@ + 0){ + echo ""; + echo " + + + + "; + $color = 0; + for ($a = 0; $a < count($module_array); $a++){ + // Calculate table line color + if ($color == 1){ + $tdcolor = "datos"; + $color = 0; + } + else { + $tdcolor = "datos2"; + $color = 1; + } + + echo ""; + echo ""; + echo ""; + echo ""; + } + echo "
".__('Agent')."".__('Module')."".__('Weight')."".__('Delete')."
" . $agent_array[$a] . ""; + echo get_agentmodule_name ($module_array[$a]).""; + echo ""; + $new_weight = $weight_array[$a]-0.125; + echo ""; + echo ""; + $new_weight = $weight_array[$a]+0.125; + echo ""; + echo "
".print_image('images/down.png', true, array ('title' => __('Decrease Weight')))."$weight_array[$a]".print_image('images/up.png', true, array ('title' => __('Increase Weight')))."
"; + echo "
"; + echo "".print_image('images/cross.png', true, array ('title' => __('Delete'))).""; + + echo "
"; +} + +//Configuration form + +echo ''; +echo "
"; + +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo "
".__('Filter group')."
".print_select(get_all_groups(), 'group', '', "filterByGroup($('#group').val());", __('All'), '0', true)."
".__('Agents')."".__('Modules')."
".print_select (get_group_agents(), 'id_agents[]', 0, false, '', '', true, true, true, '', false, 'width:200px;')."".print_select (array (), 'module[]', 0, false, '', 0, true, true, true, '', false, 'width:200px;')."
"; +echo ""; +echo ""; +echo ""; +echo "
".__('Weight')."
"; +echo "
"; + +require_jquery_file ('pandora.controls'); +require_jquery_file ('ajaxqueue'); +require_jquery_file ('bgiframe'); +require_jquery_file ('autocomplete'); + +?> + diff --git a/pandora_console/godmode/reporting/graph_builder.main.php b/pandora_console/godmode/reporting/graph_builder.main.php new file mode 100644 index 0000000000..e13cf571a0 --- /dev/null +++ b/pandora_console/godmode/reporting/graph_builder.main.php @@ -0,0 +1,169 @@ +"; + +if ($edit_graph) + echo "
"; +else + echo ""; + +echo ""; +echo "".__('Name').""; +echo ""; + +$group_select = get_user_groups ($config['id_user']); +echo "".__('Group')."" . + print_select ($group_select, 'graph_id_group', $id_group, '', '', '', true) . + ""; +echo ""; +echo "".__('Description').""; +echo ""; +echo ""; +echo ""; +echo ""; +echo "".__('Width').""; +echo ""; +echo ""; +echo ""; +echo "".__('Height').""; +echo ""; +echo ""; + +$periods = array(3600 => "1 ".__('hour'), 7200 => "2 ".__('hours'), 10800 => "3 ".__('hours'), + 21600 => "6 ".__('hours'), 43200 => "12 ".__('hours'), 86400 => "1 ".__('day'), + 172800 => "2 ".__('days'), 345600 => "4 ".__('days'), 604800 => __('Last week'), + 1296000 => "15 ".__('days'), 2592000 => __('Last month'), 5184000 => "2 ".__('months'), + 15552000 => "6 ".__('months'), 31104000 => __('1 year'), 31104000 => __('1 year')); + +$period_label = $periods[$period]; + +echo ""; +echo ""; +echo "".__('Period').""; +echo ""; +print_select ($periods, 'period', $period); +echo ""; +echo "".__('Stacked').""; +echo ""; +$stackeds = array(__('Area'), __('Stacked area'), __('Line'), __('Stacked line')); +print_select ($stackeds, 'stacked', $stacked); +echo ""; + +echo ""; +echo ""; +echo "".__('View events').""; +echo ""; +print_checkbox('events', 1, $events); +echo ""; + +echo ""; +/*echo ""; +echo "".__('View alerts').""; +echo ""; +print_checkbox('alerts', 1, $alerts); +echo "";*/ + +echo ""; +echo ""; +if ($edit_graph) { + echo ""; +} +else { + echo ""; +} +echo ""; +echo "
"; diff --git a/pandora_console/godmode/reporting/graph_builder.php b/pandora_console/godmode/reporting/graph_builder.php index 321ebbd202..cf8c7c356c 100644 --- a/pandora_console/godmode/reporting/graph_builder.php +++ b/pandora_console/godmode/reporting/graph_builder.php @@ -57,133 +57,138 @@ if (! give_acl ($config['id_user'], 0, "IW")) { exit; } -$id_agent = 0; -$id_module = 0; -$name = "Pandora FMS combined graph"; -$width = 550; -$height = 210; -$period = 86401; -//$alerts= ""; -$events = ""; -$factor = 1; -$render=1; // by default -$stacked = 0; +$add_module = (bool) get_parameter ('add_module', false); +$delete_module = (bool) get_parameter ('delete_module', false); +$edit_graph = (bool) get_parameter('edit_graph', false); +$active_tab = get_parameter('tab', 'main'); +$add_graph = (bool) get_parameter('add_graph', false); +$update_graph = (bool) get_parameter('update_graph', false); +$change_weight = (bool) get_parameter('change_weight', false); +$id_graph = (int) get_parameter('id', 0); -$add_module = (bool) get_parameter ('add_module'); -$editGraph = (bool) get_parameter('edit_graph'); - -if (isset ($_GET["get_agent"])) { - $id_agent = $_POST["id_agent"]; - if (isset($_POST["chunk"])) - $chunkdata = $_POST["chunk"]; +if ($add_graph) { + $name = get_parameter_post ("name"); + $description = get_parameter_post ("description"); + $module_number = get_parameter_post ("module_number"); + $idGroup = get_parameter_post ('graph_id_group'); + $width = get_parameter_post ("width"); + $height = get_parameter_post ("height"); + $events = get_parameter_post ("events"); + $stacked = get_parameter ("stacked", 0); + $period = get_parameter_post ("period"); + // Create graph + $values = array( 'id_user' => $config['id_user'], 'name' => $name, 'description' => $description, + 'period' => $period, 'width' => $width, 'height' => $height, + 'private' => 0, 'id_group' => $idGroup, 'events' => $events, + 'stacked' => $stacked); + + $id_graph = process_sql_insert('tgraph', $values); + + if(!$id_graph) + $edit_graph = false; } -if (isset ($_GET["delete_module"] )) { - if ($editGraph) { - $deleteGraphs = get_parameter('delete'); - foreach ($deleteGraphs as $deleteGraph) { - process_sql_delete('tgraph_source', array('id_gs' => $deleteGraph)); - } - } - else - { - $chunkdata = $_POST["chunk"]; - if (isset($chunkdata)) { - $chunk1 = array(); - $chunk1 = explode ("|", $chunkdata); - $modules="";$weights=""; - for ($a = 0; $a < count ($chunk1); $a++) { - if (isset ($_POST["delete_$a"])) { - $id_module = $_POST["delete_$a"]; - $deleted_id[]=$id_module; - } - } - $chunkdata2 = ""; - $module_array = array (); - $weight_array = array (); - $agent_array = array (); - for ($a = 0; $a < count ($chunk1); $a++) { - $chunk2[$a] = array(); - $chunk2[$a] = explode (",", $chunk1[$a]); - $skip_module =0; - for ($b = 0; $b < count ($deleted_id); $b++) { - if ($deleted_id[$b] == $chunk2[$a][1]) { - $skip_module = 1; - } - } - if (($skip_module == 0) && (strpos ($modules, $chunk2[$a][1]) == 0)) { // Skip - $module_array[] = $chunk2[$a][1]; - $agent_array[] = $chunk2[$a][0]; - $weight_array[] = $chunk2[$a][2]; - if ($chunkdata2 == "") - $chunkdata2 .= $chunk2[$a][0].",".$chunk2[$a][1].",".$chunk2[$a][2]; - else - $chunkdata2 .= "|".$chunk2[$a][0].",".$chunk2[$a][1].",".$chunk2[$a][2]; - if ($modules !="") - $modules = $modules.",".$chunk2[$a][1]; - else - $modules = $chunk2[$a][1]; - if ($weights !="") - $weights = $weights.",".$chunk2[$a][2]; - else - $weights = $chunk2[$a][2]; - } - } - $chunkdata = $chunkdata2; - } - } +if ($update_graph) { + $id_graph = get_parameter('id'); + $name = get_parameter('name'); + $id_group = get_parameter('graph_id_group'); + $description = get_parameter('description'); + $width = get_parameter('width'); + $height = get_parameter('height'); + $period = get_parameter('period'); + $stacked = get_parameter('stacked'); + $events = get_parameter('events'); + $alerts = get_parameter('alerts'); + + $success = process_sql_update('tgraph', + array('name' => $name, 'id_group' => $id_group, 'description' => $description, 'width' => $width, 'height' => $height, 'period' => $period, 'stacked' => $stacked, 'events' => $events), + array('id_graph' => $id)); +} + +function add_quotes($item) +{ + return "'$item'"; } if ($add_module) { - if ($editGraph) { - $id = get_parameter('id'); - $id_module = get_parameter('id_module'); - if ($id_module != -1) { - $factor = get_parameter('factor'); - process_sql_insert('tgraph_source', array('id_graph' => $id, 'id_agent_module' => $id_module, 'weight' => $factor)); - - $period = get_parameter('period'); - $width = get_parameter('width'); - $height = get_parameter('height'); - $events = get_parameter('events'); - $stacked = get_parameter('stacked'); - - process_sql_update('tgraph', array('period' => $period, - 'width' => $width, 'height' => $height, 'events' => $events, - 'stacked' => $stacked), array('id_graph' => $id)); + $id_graph = get_parameter('id'); + $id_modules = get_parameter('module'); + $id_agents = get_parameter('id_agents'); + $weight = get_parameter('weight'); + + $id_agent_modules = get_db_all_rows_sql("SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente IN (". + implode(',', $id_agents). + ") AND nombre IN ('". + implode("','", $id_modules). + "')"); + + if (count($id_agent_modules) > 0 && $id_agent_modules != '') { + foreach($id_agent_modules as $id_agent_module) + $result = process_sql_insert('tgraph_source', array('id_graph' => $id_graph, 'id_agent_module' => $id_agent_module['id_agente_modulo'], 'weight' => $weight)); } - } - else { - $id_agent = $_POST["id_agent"]; - $id_module = $_POST["id_module"]; - if (isset($_POST["factor"])) - $factor = $_POST["factor"]; else - $factor = 1; - $period = $_POST["period"]; - $render = $_POST["render"]; - $stacked = get_parameter ("stacked",0); - // $alerts = $_POST["alerts"]; - if (isset($_POST["chunk"])) - $chunkdata = $_POST["chunk"]; - $events = $_POST["events"]; - $factor = $_POST["factor"]; - if ($_POST["width"]!= "") - $width = $_POST["width"]; - if ($_POST["height"]!= "") - $height = $_POST["height"]; - if ($id_module > 0){ - if (!isset($chunkdata) OR ($chunkdata == "")) - $chunkdata = "$id_agent,$id_module,$factor"; - else - $chunkdata = $chunkdata."|$id_agent,$id_module,$factor"; - } - } + $result = false; +} + +if ($delete_module) { + $deleteGraph = get_parameter('delete'); + $result = process_sql_delete('tgraph_source', array('id_gs' => $deleteGraph)); +} + +if($change_weight){ + $weight = get_parameter ('weight'); + $id_gs = get_parameter ('graph'); + process_sql_update('tgraph_source', + array('weight' => $weight), + array('id_gs' => $id_gs)); +} + +if($edit_graph) { + $buttons = array( + 'main' => array('active' => false, + 'text' => '' . + print_image("images/setup.png", true, array ("title" => __('Setup'))) .''), + 'graph_editor' => array('active' => false, + 'text' => '' . + print_image("images/config.png", true, array ("title" => __('Graph editor'))) .''), + 'preview' => array('active' => false, + 'text' => '' . + print_image("images/chart_curve.png", true, array ("title" => __('Preview'))) .'') + ); + + $buttons[$active_tab]['active'] = true; + + $graphInTgraph = get_db_row_sql("SELECT name FROM tgraph WHERE id_graph = " . $id); + $name = $graphInTgraph['name']; +} +else { + $buttons = ''; +} + +$head = __('Graph builder'); + +if (isset($name)) + $head .= " - ".$name; + +// Header +print_page_header ($head, "", false, "", true, $buttons); + +if($add_graph) + print_result_message($id_graph, __('Graph stored successfully'), __('There was a problem storing Graph')); + +if($add_module) + print_result_message($result, __('Module added successfully'), __('There was a problem adding Module')); + +if ($update_graph) + print_result_message($success, __("Update the graph"), __("Bad update the graph")); + +if ($delete_module) { + print_result_message($result, __('Graph deleted successfully'), __('There was a problem deleting Graph')); } // Parse CHUNK information into showable information // Split id to get all parameters -if (! isset($_GET["delete_module"])) { +if (!$delete_module) { if (isset($_POST["period"])) $period = $_POST["period"]; if ((isset($chunkdata) )&& ($chunkdata != "")) { @@ -213,512 +218,15 @@ if (! isset($_GET["delete_module"])) { } } -if ($editGraph) { - $id = (integer) get_parameter('id'); - $graphRows = get_db_all_rows_sql("SELECT t1.*, - (SELECT t3.nombre - FROM tagente AS t3 - WHERE t3.id_agente = - (SELECT t2.id_agente - FROM tagente_modulo AS t2 - WHERE t2.id_agente_modulo = t1.id_agent_module)) - AS agent_name - FROM tgraph_source AS t1 - WHERE t1.id_graph = " . $id); - $chunk1 = true; - $module_array = array(); - $weight_array = array(); - $agent_array = array(); - $chunk1 = array(); - $tempChunkdata = array(); - $chunkdata = ""; - - foreach ($graphRows as $graphRow) { - $idsTable[] = $graphRow['id_gs']; - $module_array[] = $graphRow['id_agent_module']; - $weight_array[] = $graphRow['weight']; - $agent_array[] = $graphRow['agent_name']; - - $tempChunkdata[] = $graphRow['agent_name'] . "," . - $graphRow['id_agent_module'] . "," . - $graphRow['weight']; - } - - $graphInTgraph = get_db_row_sql("SELECT * FROM tgraph WHERE id_graph = " . $id); - $stacked = $graphInTgraph['stacked']; - $events = $graphInTgraph['events']; - $period = $graphInTgraph['period']; - $modules = implode(',', $module_array); - $weights = implode(',', $weight_array); - $chunkdata = implode('|', $tempChunkdata); -} - -if (isset ($chunk1)) { - // Header - print_page_header (__('Graph builder module list'), "", false, "", true); - if ($editGraph) { - echo "
"; - } - else { - echo ""; - } - if (isset($chunkdata)) - echo ""; - if ($id_agent) - echo ""; - if ($period) - echo ""; - - echo ""; - echo " - - - - "; - $color = 0; - for ($a = 0; $a < count($module_array); $a++){ - // Calculate table line color - if ($color == 1){ - $tdcolor = "datos"; - $color = 0; - } - else { - $tdcolor = "datos2"; - $color = 1; - } - - echo ""; - echo ""; - echo ""; - echo ""; - } else - { - echo ""; - } - } - echo "
".__('Agent')."".__('Module')."".__('Weight')."".__('Delete')."
" . $agent_array[$a] . ""; - echo get_agentmodule_name ($module_array[$a]).""; - echo $weight_array[$a].""; - if ($editGraph) { - echo "
"; - echo ""; - echo "
"; - echo "
"; - echo "
"; -} - -// -------------------------------------- -// Parse chunkdata and render graph -// -------------------------------------- -if (($render == 1) && (isset($modules))) { - // parse chunk - echo "

".__('Combined image render')."

"; - echo ""; - echo "
"; - if ($config['flash_charts']) { - echo graphic_combined_module (explode (',', $modules), explode (',', $weights), $period, $width, $height, - 'Combined%20Sample%20Graph', '', $events, 0, 0, $stacked); - } else { - echo ""; - } - echo "
"; - -} - -// ----------------------- -// SOURCE AGENT TABLE/FORM -// ----------------------- - -// Header -print_page_header (__('Graph builder'), "", false, "", true); - -if (isset ($_GET["store_graph"])) { - $name = get_parameter_post ("name"); - $description = get_parameter_post ("description"); - $module_number = get_parameter_post ("module_number"); - //$private = get_parameter_post ("private"); - $idGroup = get_parameter_post ('graph_id_group'); - $width = get_parameter_post ("width"); - $height = get_parameter_post ("height"); - $events = get_parameter_post ("events"); - $stacked = get_parameter ("stacked", 0); - if ($events == "") // Temporal workaround - $events = 0; - $period = get_parameter_post ("period"); - // Create graph - $sql = "INSERT INTO tgraph - (id_user, name, description, period, width, height, private, id_group, events, stacked) VALUES - ('".$config['id_user']."', - '$name', - '$description', - $period, - $width, - $height, - 0, - $idGroup, - $events, - $stacked)"; - //echo "DEBUG $sql
"; - $res = mysql_query($sql); - if ($res){ - $id_graph = mysql_insert_id(); - if ($id_graph){ - for ($a=0; $a < $module_number; $a++){ - $id_agentemodulo = get_parameter_post ("module_".$a); - $id_agentemodulo_w = get_parameter_post ("module_weight_".$a); - $sql = "INSERT INTO tgraph_source (id_graph, id_agent_module, weight) VALUES - ($id_graph, $id_agentemodulo, $id_agentemodulo_w)"; - //echo "DEBUG $sql
"; - mysql_query($sql); - } - echo "

".__('Graph stored successfully')."

"; - } else - echo "

".__('There was a problem storing Graph')."

"; - } else - echo "

".__('There was a problem storing Graph')."

"; -} - -if (isset($_GET['change_graph'])) { - $id = get_parameter('id'); - $name = get_parameter('name'); - $id_group = get_parameter('graph_id_group'); - $description = get_parameter('description'); - - $success = process_sql_update('tgraph', - array('name' => $name, 'id_group' => $id_group, 'description' => $description), - array('id_graph' => $id)); - - print_result_message($success, __("Update the graph"), __("Bad update the graph")); -} - -echo ""; -if ($editGraph) { - echo ""; -} -else { - echo ""; - print_input_hidden ('add_module', 1); -} -if (isset($period)) - echo ""; - -echo ""; -echo ""; -echo ""; - -// Show combo with agents -echo ""; -echo ""; -echo ""; - - -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; - -echo ""; -echo ""; -echo ""; - - -/* -echo "
".__('Source agent').""; - -$user_groups = implode (',', array_keys (get_user_groups ($config["id_user"]))); - -print_input_text_extended ('id_agent', get_agent_name ($id_parent), 'text-id_agent', '', 30, 100, false, '', - array('style' => 'background: url(images/lightning.png) no-repeat right;')); -echo ' ' . __("Type at least two characters to search") . ''; -//print_select_from_sql ("SELECT id_agente, nombre FROM tagente WHERE disabled = 0 AND id_grupo IN ($user_groups) ORDER BY nombre", 'id_agent', $id_agent, '', '--', 0); - -// SOURCE MODULE FORM -if (isset ($chunkdata)) - echo ""; - -echo "
"; -echo "".__('Modules').""; -echo ""; -echo ""; - -echo "
"; -echo "".__('Factor').""; -echo ""; -echo "".__('Width').""; -echo ""; -echo "
"; -echo "".__('Render now').""; -echo ""; -echo "".__('Height').""; -echo ""; - - -switch ($period) { - case 3600: - $period_label = "1 ".__('hour'); +switch ($active_tab) { + case 'main': + require_once('godmode/reporting/graph_builder.main.php'); break; - case 7200: - $period_label = "2 ".__('hours'); + case 'graph_editor': + require_once('godmode/reporting/graph_builder.graph_editor.php'); break; - case 10800: - $period_label = "3 ".__('hours'); + case 'preview': + require_once('godmode/reporting/graph_builder.preview.php'); break; - case 21600: - $period_label = "6 ".__('hours'); - break; - case 43200: - $period_label = "12 ".__('hours'); - break; - case 86400: - $period_label = "1 ".__('day'); - break; - case 172800: - $period_label = "2 ".__('days'); - break; - case 345600: - $period_label = "4 ".__('days'); - break; - case 604800: - $period_label = __('Last week'); - break; - case 1296000: - $period_label = "15 ".__('days'); - break; - case 2592000: - $period_label = __('Last month'); - break; - case 5184000: - $period_label = "2 ".__('months'); - break; - case 15552000: - $period_label = "6 ".__('months'); - break; - case 31104000: - $period_label = __('1 year'); - break; - default: - $period_label = "1 ".__('day'); } - - -echo "
"; -echo "".__('Period').""; - -echo ""; - -echo ""; -echo "".__('View events').""; -echo "
"; -echo "".__('Stacked').""; - - -$stackeds[0] = __('Area'); -$stackeds[1] = __('Stacked area'); -$stackeds[2] = __('Line'); -$stackeds[3] = __('Stacked line'); -print_select ($stackeds, 'stacked', $stacked, '', '', 0); -echo ""; -echo "Show alert limit"; -echo ""; -echo ""; -*/ - - -echo "
"; -echo ""; -echo "
"; - -echo ""; -echo "
"; - -// ----------------------- -// STORE GRAPH FORM -// ----------------------- - -// If we have something to save.. -if (isset($module_array)){ - echo "

".__('Custom graph store')."

"; - echo ""; - - if ($editGraph) { - echo ""; - } - else - { - echo ""; - - // hidden fields with data begin - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - - for ($a=0; $a < count($module_array); $a++){ - $id_agentemodulo = $module_array[$a]; - $id_agentemodulo_w = $weight_array[$a]; - echo ""; - echo ""; - } - } - // hidden fields end - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "
".__('Name').""; - - $group_select = get_user_groups ($config['id_user']); - echo "".__('Group')."" . - print_select ($group_select, 'graph_id_group', $graphInTgraph['id_group'], '', '', '', true) . - "
".__('Description').""; - echo "
"; - echo ""; - if ($editGraph) { - echo "
"; - } - else { - echo "
"; - } - - - echo ""; - echo "
"; -} - -require_jquery_file ('pandora.controls'); -require_jquery_file ('ajaxqueue'); -require_jquery_file ('bgiframe'); -require_jquery_file ('autocomplete'); - ?> - diff --git a/pandora_console/godmode/reporting/graph_builder.preview.php b/pandora_console/godmode/reporting/graph_builder.preview.php new file mode 100644 index 0000000000..d43d503767 --- /dev/null +++ b/pandora_console/godmode/reporting/graph_builder.preview.php @@ -0,0 +1,98 @@ +"; + echo ""; + if ($config['flash_charts']) { + echo graphic_combined_module (explode (',', $modules), explode (',', $weights), $period, $width, $height, + 'Combined%20Sample%20Graph', '', $events, 0, 0, $stacked); + } else { + echo ""; + } + echo ""; +