From 45b05d670fb5965a39ccaf9e6e7e534afee0824b Mon Sep 17 00:00:00 2001 From: guruevi Date: Mon, 26 Jan 2009 16:48:22 +0000 Subject: [PATCH] 2009-01-26 Evi Vanoost * include/styles/pandora.css: Fixed several small errors. Now it looks more similar on other browsers. * operation/events/events.php: Fixed filter to use get_users () * reporting/fgraph.php: Fixed several issues with user graphs git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1403 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 9 + pandora_console/include/styles/pandora.css | 31 ++- pandora_console/operation/events/events.php | 3 +- pandora_console/reporting/fgraph.php | 256 +++++++------------- 4 files changed, 110 insertions(+), 189 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index c016b0a71d..5ebe7db7ae 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,12 @@ +2009-01-26 Evi Vanoost + + * include/styles/pandora.css: Fixed several small errors. Now it looks + more similar on other browsers. + + * operation/events/events.php: Fixed filter to use get_users () + + * reporting/fgraph.php: Fixed several issues with user graphs + 2009-01-26 Esteban Sanchez * godmode/alerts/configure_alert_template.php: Decode HTML entities of diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 23e5452c97..8c49888ad0 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -4,7 +4,7 @@ // Copyright (c) 2004-2008 Sancho Lerena, slerena@gmail.comnt // Copyright (c) 2004-2008 Raul Mateos Martin, raulofpandora@gmail.com // Copyright (c) 2005-2008 Artica Soluciones Tecnologicas, info@artica.es -// Copyright (c) 2008-2008 Evi Vanoost, vanooste@rcbi.rochester.edu +// Copyright (c) 2008-2009 Evi Vanoost, vanooste@rcbi.rochester.edu // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; version 2 @@ -35,17 +35,16 @@ textarea { } textarea.conf_editor { padding: 5px; - width: 650; - height: 350; + width: 650px; + height: 350px; } input { padding: 2px 3px 4px 3px; } -input.button { - margin: 0; +input.button { font-family: Arial,Sans-serif; border: 1px solid #ccc; - background: #fff; + background: #fff; padding: 2px 3px; margin: 10px 15px; } @@ -124,7 +123,7 @@ div#login { border-left: solid 1px #000; border-top: solid 1px #000; border-bottom: solid 2px #000; - border-right: solid 2px #000 + border-right: solid 2px #000; } div#login_in, #login_f { margin: 0 auto; @@ -245,7 +244,12 @@ input.sub { font-weight: bold; border-bottom-color: #708090; border-right-color: #708090; - -moz-border-radius: 5%; + /* These borders haven't made it yet in a valid standard + First one is for Mozilla, second for Webkit (Safari, Konqueror), third one for IE7+ and valid CSS3. + Percentage values are invalid here but .4em seems big enough */ + -moz-border-radius: .4em; + -webkit-border-radius: .4em; + border-radius: .4em; font-size: 8pt; background-color: #e5e5e5; } @@ -283,11 +287,12 @@ th { color: #fff; background-color: #786; } -tr.datos, tr.datost, tr.datosb , tr.datos_id, tr.datosf9, -tr.datos2, tr.datos2t, tr.datos2b, tr.datos2_id , tr.datos2f9, { +tr.datos, tr.datost, tr.datosb , tr.datos_id, +tr.datosf9, tr.datos2, tr.datos2t, +tr.datos2b, tr.datos2_id , tr.datos2f9 { background-color: #f9f9f9; } -tr.datos:hover, tr.datost:hover, tr.datosb:hover, tr.datos_id:hover, +tr.datos:hover, tr.datost:hover, tr.datosb:hover, tr.datos_id:hover, tr.datosf9:hover, tr.datos2:hover, tr.datos2t:hover, tr.datos2b:hover, tr.datos2_id:hover, tr.datos2f9:hover { background-color: #efefef; @@ -723,7 +728,7 @@ a.big_data { text-align: right; } .top { - vertical-align: top + vertical-align: top; margin-top: 0; padding-top: 0; } @@ -736,7 +741,7 @@ span.actions { margin-left: 30px; } code { - font-family: courier; + font-family: courier, serif; } select#template, select#action { width: 250px; diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index 0dce437232..8d726dd2c5 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -197,7 +197,8 @@ echo ""; echo ""; echo "".__('User ack.').""; echo ""; -print_select_from_sql ("SELECT id_usuario, nombre_real FROM tusuario", "id_user_ack", $id_user_ack,'', __('Any'), '0', false, false, true); +$users = get_users (); +print_select ($users, "id_user_ack", $id_user_ack, '', __('Any'), 0); echo ""; diff --git a/pandora_console/reporting/fgraph.php b/pandora_console/reporting/fgraph.php index f6162262aa..94ef31821f 100644 --- a/pandora_console/reporting/fgraph.php +++ b/pandora_console/reporting/fgraph.php @@ -1037,13 +1037,6 @@ function grafico_incidente_prioridad () { $data[5] += 1; } - $mayor = 0; - $mayor_data =0; - for ($i = 0;$i < sizeof($data); $i++) - if ($data[$i] > $mayor_data){ - $mayor = $i; - $mayor_data = $data[$i]; - } $legend = array (__('Informative'), __('Low'), __('Medium'), @@ -1065,27 +1058,8 @@ function graphic_incident_group () { $data[] = $row2[0]; $legend[] = get_group_name ($row[0])."(".$row2[0].")"; } - // Sort array by bubble method (yes, I study more methods in university, but if you want more speed, please, submit a patch :) - // or much better, pay me to do a special version for you, highly optimized :-)))) - for ($i = 0; $i < sizeof($data); $i++) { - for ($j = $i; $j $data[$i]) { - $temp = $data[$i]; - $temp_label = $legend[$i]; - $data[$i] = $data[$j]; - $legend[$i] = $legend[$j]; - $data[$j] = $temp; - $legend[$j] = $temp_label; - } - } - $mayor = 0; - $mayor_data =0; - for ($i = 0; $i < sizeof($data); $i++) { - if ($data[$i] > $mayor_data) { - $mayor = $i; - $mayor_data = $data[$i]; - } - } + array_multisort ($data, $legend); + generic_pie_graph (320, 200, $data, $legend); } @@ -1101,103 +1075,57 @@ function graphic_incident_user() { $data[] = $row2[0]; $legend[] = $row[0]."(".$row2[0].")"; } - // Sort array by bubble method (yes, I study more methods in university, but if you want more speed, please, submit a patch :) - // or much better, pay me to do a special version for you, highly optimized :-)))) - for ($i = 0; $i < sizeof($data); $i++) { - for ($j = $i; $j $data[$i]) { - $temp = $data[$i]; - $temp_label = $legend[$i]; - $data[$i] = $data[$j]; - $legend[$i] = $legend[$j]; - $data[$j] = $temp; - $legend[$j] = $temp_label; - } - } - $mayor = 0; - $mayor_data =0; - for ($i = 0; $i < sizeof($data); $i++) { - if ($data[$i] > $mayor_data) { - $mayor = $i; - $mayor_data = $data[$i]; - } - } + array_multisort ($data, $legend); + generic_pie_graph (320, 200, $data, $legend); } function graphic_user_activity ($width = 350, $height = 230) { $data = array(); $legend = array(); - $sql1="SELECT DISTINCT ID_usuario FROM tsesion "; - $result=mysql_query($sql1); - while ($row=mysql_fetch_array($result)){ - $entrada= entrada_limpia($row[0]); - $sql1='SELECT COUNT(ID_usuario) FROM tsesion WHERE ID_usuario = "'.$entrada.'"'; - $result2=mysql_query($sql1); - $row2=mysql_fetch_array($result2); - $data[] = $row2[0]; - $legend[] = str_pad(substr($row[0],0,16)."(".format_for_graph($row2[0],0).")", 15); + $loop = 0; + $sql = "SELECT COUNT(*) AS count, ID_usuario FROM tsesion GROUP BY ID_usuario ORDER BY count DESC"; + $result = get_db_all_rows_sql ($sql); + foreach ($result as $row) { + if ($loop > 5) { + $data[5] += $row["count"]; + $legend[5] = __('Other')." (".$data[5].")"; + } else { + if (empty ($row["ID_usuario"])) { + $row["ID_usuario"] = __('Unknown'); + } + $data[] = $row["count"]; + $legend[] = mb_substr ($row["ID_usuario"], 0, 14)." (".$row["count"].")"; + } + $loop++; } - // Sort array by bubble method (yes, I study more methods in university, but if you want more speed, please, submit a patch :) - // or much better, pay me to do a special version for you, highly optimized :-)))) - for ($i = 0; $i < sizeof($data); $i++) { - for ($j = $i; $j $data[$i]) { - $temp = $data[$i]; - $temp_label = $legend[$i]; - $data[$i] = $data[$j]; - $legend[$i] = $legend[$j]; - $data[$j] = $temp; - $legend[$j] = $temp_label; - } - } - - // Take only the first 5 items - if (sizeof($data) >= 5){ - for ($i = 0; $i < 5; $i++) { - $legend2[]= $legend[$i]; - $data2[] = $data[$i]; - } - generic_pie_graph ($width, $height, $data2, $legend2); - } else - generic_pie_graph ($width, $height, $data, $legend); + array_multisort ($data, $legend); + + generic_pie_graph ($width, $height, $data, $legend); } function graphic_incident_source ($width=320, $height=200) { $data = array(); $legend = array(); - $sql1="SELECT DISTINCT origen FROM tincidencia"; - $result=mysql_query($sql1); - while ($row=mysql_fetch_array($result)){ - $sql1="SELECT COUNT(id_incidencia) FROM tincidencia WHERE origen = '".$row[0]."'"; - $result2=mysql_query($sql1); - $row2=mysql_fetch_array($result2); - $data[] = $row2[0]; - $legend[] = $row[0]."(".$row2[0].")"; - } -// Sort array by bubble method (yes, I study more methods in university, but if you want more speed, please, submit a patch :) - // or much better, pay me to do a special version for you, highly optimized :-)))) - for ($i = 0; $i < sizeof($data); $i++) { - for ($j = $i; $j $data[$i]) { - $temp = $data[$i]; - $temp_label = $legend[$i]; - $data[$i] = $data[$j]; - $legend[$i] = $legend[$j]; - $data[$j] = $temp; - $legend[$j] = $temp_label; - } - } - // Take only the first 5 items - if (sizeof($data) >= 5){ - for ($i = 0; $i < 5; $i++) { - $legend2[]= $legend[$i]; - $data2[] = $data[$i]; + $loop = 0; + $sql = "SELECT COUNT(*) as count, origen FROM tincidencia GROUP BY origen"; + $result = get_db_all_rows_sql ($sql); + + foreach ($result as $row) { + if ($loop > 5) { + $data[5] += $row["count"]; + $legend[5] = __('Other')." (".$data[5].")"; + } else { + $data[] = $row["count"]; + $legend[] = mb_substr ($row["origen"], 0, 14)." (".$row["count"].")"; } - generic_pie_graph ($width, $height, $data2, $legend2); - } else - generic_pie_graph ($width, $height, $data, $legend); + $loop++; + } + + array_multisort ($data, $legend); + + generic_pie_graph ($width, $height, $data, $legend); } function grafico_db_agentes_modulos($width, $height) { @@ -1217,42 +1145,30 @@ function grafico_db_agentes_modulos($width, $height) { generic_bar_graph ($width, $height, $data, array_keys ($data)); } -function grafico_eventos_usuario( $width=420, $height=200) { +function grafico_eventos_usuario ( $width=420, $height=200) { $data = array(); $legend = array(); - $sql1="SELECT * FROM tusuario"; - $result=mysql_query($sql1); - while ($row=mysql_fetch_array($result)){ - $sql1="SELECT COUNT(id_evento) FROM tevento WHERE id_usuario = '".$row["id_usuario"]."'"; - $result2=mysql_query($sql1); - $row2=mysql_fetch_array($result2); - if ($row2[0] > 0){ - $data[] = $row2[0]; - $legend[] = $row["id_usuario"]." ( $row2[0] )"; - } - } - // Sort array by bubble method (yes, I study more methods in university, but if you want more speed, please, submit a patch :) - // or much better, pay me to do a special version for you, highly optimized :-)))) - for ($i = 0; $i < sizeof($data); $i++) { - for ($j = $i; $j $data[$i]) { - $temp = $data[$i]; - $temp_label = $legend[$i]; - $data[$i] = $data[$j]; - $legend[$i] = $legend[$j]; - $data[$j] = $temp; - $legend[$j] = $temp_label; + $loop = 0; + + $sql = "SELECT COUNT(*) as count, id_usuario FROM tevento GROUP BY id_usuario"; + $result = get_db_all_rows_sql ($sql); + + foreach ($result as $row) { + if ($loop > 5) { + $data[5] += $row["count"]; + $legend[5] = __('Other')." (".$data[5].")"; + } else { + if (empty ($row["id_usuario"])) { + $row["id_usuario"] = __('SYSTEM'); } - } - // Take only the first 5 items - if (sizeof($data) >= 5){ - for ($i = 0; $i < 5; $i++) { - $legend2[]= $legend[$i]; - $data2[] = $data[$i]; + $data[] = $row["count"]; + $legend[] = mb_substr ($row["id_usuario"], 0, 14)." (".$row["count"].")"; } - generic_pie_graph ($width, $height, $data2, $legend2); - } else - generic_pie_graph ($width, $height, $data, $legend); + $loop++; + } + array_multisort ($data, $legend); + + generic_pie_graph ($width, $height, $data, $legend); } function grafico_eventos_total ($filter = "") { @@ -1296,19 +1212,8 @@ function grafico_eventos_total ($filter = "") { $total = $total + $row[0]; $legend[] = __('Critical')." ( $row[0] )"; - // Sort array by bubble method (yes, I study more methods in university, but if you want more speed, please, submit a patch :) - // or much better, pay me to do a special version for you, highly optimized :-)))) - for ($i = 0; $i < sizeof($data); $i++) { - for ($j = $i; $j $data[$i]){ - $temp = $data[$i]; - $temp_label = $legend[$i]; - $data[$i] = $data[$j]; - $legend[$i] = $legend[$j]; - $data[$j] = $temp; - $legend[$j] = $temp_label; - } - } + array_multisort ($data, $legend); + generic_pie_graph (320, 200, $data, $legend); } @@ -1350,9 +1255,10 @@ function graph_event_module ($width = 300, $height = 200, $id_agent) { function grafico_eventos_grupo ($width = 300, $height = 200, $url = "") { global $config; - $url = html_entity_decode (rawurldecode ($url),ENT_QUOTES); //It was urlencoded, so we urldecode it + $url = html_entity_decode (rawurldecode ($url), ENT_QUOTES); //It was urlencoded, so we urldecode it $data = array(); $legend = array(); + $loop = 0; $badstrings = array (";", "SELECT ", "DELETE ", "UPDATE ", "INSERT "); $url = str_ireplace ($badstrings,"",$url); //remove bad strings from the query so queries like ; DELETE FROM don't pass @@ -1362,26 +1268,26 @@ function grafico_eventos_grupo ($width = 300, $height = 200, $url = "") { //is required if both DISTINCT() and COUNT() are in the statement $sql = "SELECT DISTINCT(id_agente) AS id_agente, id_grupo, COUNT(id_agente) AS count FROM tevento WHERE 1=1 ".$url." GROUP BY id_agente ORDER BY count DESC"; $result = get_db_all_rows_sql ($sql); - if ($result === false) + if ($result === false) { $result = array(); - - foreach ($result as $row) { - if (give_acl ($config["id_user"], $row["id_grupo"], "AR") == 1) { - $data[] = $row["count"]; - if ($row["id_agente"] == 0) { - //System event - $legend[] = "SYSTEM (".$row["count"].")"; - } else { - //Other events - $legend[] = substr (get_agent_name ($row["id_agente"], "lower"), 0, 15)." (".$row["count"].")"; - } - } } - - $max_items = 6; //Maximum items on the piegraph - while (count($data) > $max_items) { - //Pops an element off the array until the array is small enough - array_pop ($data); + + foreach ($result as $row) { + if (!give_acl ($config["id_user"], $row["id_grupo"], "AR") == 1) { + continue; + } + if ($loop > 5) { + $data[5] += $row["count"]; + $legend[5] = __('Other')." (".$data[5].")"; + } else { + if ($row["id_agente"] == 0) { + $legend = __('SYSTEM')." (".$row["count"].")"; + } else { + $legend[] = mb_substr (get_agent_name ($row["id_agente"], "lower"), 0, 14)." (".$row["count"].")"; + } + $data[] = $row["count"]; + } + $loop++; } generic_pie_graph ($width, $height, $data, $legend);