2012-06-07 Dario Rodriguez <dario.rodriguez@artica.es>
* include/functions_os.php: Created this file. include/functions_groups, operation/tree.php: Fixed a bug related to search improved performance of OS tab for tree view. MERGED FROM 4.0.2 git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6441 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
a79d10b28f
commit
3541c59e9a
|
@ -1,3 +1,12 @@
|
|||
2012-06-07 Dario Rodriguez <dario.rodriguez@artica.es>
|
||||
|
||||
* include/functions_os.php: Created this file.
|
||||
include/functions_groups,
|
||||
operation/tree.php: Fixed a bug related to search
|
||||
improved performance of OS tab for tree view.
|
||||
|
||||
MERGED FROM 4.0.2
|
||||
|
||||
2012-06-07 Hirofumi Kosaka <kosaka@rworks.jp>
|
||||
|
||||
* include/functions_ui.php: Merged from 4.0.x: Fixed bug:
|
||||
|
|
|
@ -852,6 +852,8 @@ function groups_agent_unknown ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 3 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause");
|
||||
|
||||
}
|
||||
|
@ -877,6 +879,8 @@ function groups_agent_ok ($group_array) {
|
|||
//If MAX(estado) is 0 it means all modules has status 0 => OK
|
||||
//Then we count the agents of the group selected to know how many agents are in OK status
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(max_estado) FROM (SELECT MAX(tagente_estado.estado) as max_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1");
|
||||
|
||||
}
|
||||
|
@ -901,6 +905,8 @@ function groups_agent_critical ($group_array) {
|
|||
//If estado = 1 it means at leas 1 module is in critical status so the agent is critical
|
||||
//Then we count the agents of the group selected to know how many agents are in critical status
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 1 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause");
|
||||
|
||||
}
|
||||
|
@ -926,6 +932,8 @@ function groups_agent_warning ($group_array) {
|
|||
//If MIN(estado) is 2 it means at least one module is warning and there is no critical modules
|
||||
//Then we count the agents of the group selected to know how many agents are in warning status
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
|
||||
|
||||
}
|
||||
|
@ -947,6 +955,8 @@ function groups_monitor_not_init ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
|
||||
|
@ -973,6 +983,8 @@ function groups_monitor_ok ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
|
||||
|
@ -996,6 +1008,8 @@ function groups_monitor_critical ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
|
||||
|
@ -1020,6 +1034,8 @@ function groups_monitor_warning ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
|
||||
|
@ -1044,6 +1060,8 @@ function groups_monitor_unknown ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
|
||||
FROM tagente_estado, tagente, tagente_modulo
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
|
||||
|
@ -1068,6 +1086,8 @@ function groups_monitor_alerts ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(talert_template_modules.id)
|
||||
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
|
||||
|
@ -1094,6 +1114,8 @@ function groups_monitor_fired_alerts ($group_array) {
|
|||
$group_clause = implode (",", $group_array);
|
||||
$group_clause = "(" . $group_clause . ")";
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(talert_template_modules.id)
|
||||
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
|
||||
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2011 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public License
|
||||
// as published by the Free Software Foundation; version 2
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// Get critical agents by using the status code in modules.
|
||||
|
||||
function os_agents_critical ($id_os) {
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 1 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_os = $id_os");
|
||||
}
|
||||
|
||||
// Get ok agents by using the status code in modules.
|
||||
|
||||
function os_agents_ok($id_os) {
|
||||
|
||||
//!!!Query explanation!!!
|
||||
//An agent is OK if all its modules are OK
|
||||
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
|
||||
//This query grouped all modules by agents and select the MAX value for status which has the value 0
|
||||
//If MAX(estado) is 0 it means all modules has status 0 => OK
|
||||
//Then we count the agents of the group selected to know how many agents are in OK status
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(max_estado) FROM (SELECT MAX(tagente_estado.estado) as max_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_os = $id_os GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1");
|
||||
}
|
||||
|
||||
// Get warning agents by using the status code in modules.
|
||||
|
||||
function os_agents_warning ($id_os) {
|
||||
|
||||
//!!!Query explanation!!!
|
||||
//An agent is Warning when has at least one module in warning status and nothing more in critical status
|
||||
//The status values are: 0 OK; 1 Critical; 2 Warning; 3 Unkown
|
||||
//This query grouped all modules by agents and select the MIN value for status which has the value 0
|
||||
//If MIN(estado) is 2 it means at least one module is warning and there is no critical modules
|
||||
//Then we count the agents of the group selected to know how many agents are in warning status
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT(min_estado) FROM (SELECT MIN(tagente_estado.estado) as min_estado FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_os = $id_os GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1");
|
||||
|
||||
}
|
||||
|
||||
// Get unknown agents by using the status code in modules.
|
||||
|
||||
function os_agents_unknown ($id_os) {
|
||||
|
||||
//TODO REVIEW ORACLE AND POSTGRES
|
||||
|
||||
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 3 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_os = $id_os");
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -248,7 +248,7 @@ if (is_ajax ())
|
|||
$groups_sql = implode(', ', $avariableGroupsIds);
|
||||
|
||||
if ($search_free != '') {
|
||||
$search_sql = " AND nombre LIKE '%$search_free%'";
|
||||
$search_sql = " AND nombre COLLATE utf8_general_ci LIKE '%$search_free%'";
|
||||
} else {
|
||||
$search_sql = '';
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ if (is_ajax ())
|
|||
WHERE id_agente IN (
|
||||
SELECT id_agente
|
||||
FROM tagente_modulo
|
||||
WHERE nombre LIKE \'%s\'
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE \'%s\'
|
||||
)
|
||||
AND (%s id_grupo IN (%s))', $name, $extra_sql, $groups_sql);
|
||||
break;
|
||||
|
@ -321,6 +321,7 @@ if (is_ajax ())
|
|||
$count++;
|
||||
switch ($type) {
|
||||
case 'group':
|
||||
case 'os':
|
||||
$agent_info["monitor_alertsfired"] = agents_get_alerts_fired ($row["id_agente"]);
|
||||
|
||||
$agent_info["monitor_critical"] = agents_monitor_critical ($row["id_agente"]);
|
||||
|
@ -336,11 +337,6 @@ if (is_ajax ())
|
|||
|
||||
//Count all modules
|
||||
$agent_info["modules"] = $agent_info["monitor_critical"] + $agent_info["monitor_warning"] + $agent_info["monitor_unknown"] + $agent_info["monitor_normal"];
|
||||
|
||||
|
||||
break;
|
||||
case 'os':
|
||||
$agent_info = reporting_get_agent_module_info ($row["id_agente"]);
|
||||
break;
|
||||
case 'module_group':
|
||||
$agent_info = reporting_get_agent_module_info ($row["id_agente"], ' id_module_group = ' . $id);
|
||||
|
@ -355,11 +351,11 @@ if (is_ajax ())
|
|||
case 'module':
|
||||
switch ($config["dbtype"]) {
|
||||
case "mysql":
|
||||
$agent_info = reporting_get_agent_module_info ($row["id_agente"], ' nombre LIKE "' . $name . '"');
|
||||
$agent_info = reporting_get_agent_module_info ($row["id_agente"], ' nombre COLLATE utf8_general_ci LIKE "' . $name . '"');
|
||||
break;
|
||||
case "postgresql":
|
||||
case "oracle":
|
||||
$agent_info = reporting_get_agent_module_info ($row["id_agente"], ' nombre LIKE \'' . $name . '\'');
|
||||
$agent_info = reporting_get_agent_module_info ($row["id_agente"], ' nombre COLLATE utf8_general_ci LIKE \'' . $name . '\'');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -487,14 +483,14 @@ if (is_ajax ())
|
|||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre LIKE \'' . io_safe_input($name) . '\'';
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre COLLATE utf8_general_ci LIKE \'' . io_safe_input($name) . '\'';
|
||||
break;
|
||||
case "postgresql":
|
||||
case "oracle":
|
||||
$sql = 'SELECT *
|
||||
FROM tagente_modulo AS t1
|
||||
INNER JOIN tagente_estado AS t2 ON t1.id_agente_modulo = t2.id_agente_modulo
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre LIKE \'' . io_safe_input($name) . '\'';
|
||||
WHERE t1.id_agente = ' . $id . ' AND nombre COLLATE utf8_general_ciLIKE \'' . io_safe_input($name) . '\'';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -635,6 +631,7 @@ if (is_ajax ())
|
|||
|
||||
|
||||
include_once($config['homedir'] . "/include/functions_groups.php");
|
||||
include_once($config['homedir'] . "/include/functions_os.php");
|
||||
include_once($config['homedir'] . "/include/functions_servers.php");
|
||||
include_once($config['homedir'] . "/include/functions_reporting.php");
|
||||
include_once($config['homedir'] . "/include/functions_ui.php");
|
||||
|
@ -674,10 +671,10 @@ function printTree_($type) {
|
|||
if ($search_free != '') {
|
||||
$sql = "SELECT * FROM tconfig_os
|
||||
WHERE id_os IN (SELECT id_os FROM tagente
|
||||
WHERE nombre LIKE '%$search_free%')";
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
|
||||
$list = db_get_all_rows_sql($sql);
|
||||
} else {
|
||||
$list = db_get_all_rows_in_table('tconfig_os', 'name');
|
||||
$list = db_get_all_rows_sql("SELECT DISTINCT (tagente.id_os), tconfig_os.name FROM tagente, tconfig_os WHERE tagente.id_os = tconfig_os.id_os");
|
||||
}
|
||||
break;
|
||||
case 'group':
|
||||
|
@ -690,7 +687,7 @@ function printTree_($type) {
|
|||
);
|
||||
if ($search_free != '') {
|
||||
$sql_search = " AND id_grupo IN (SELECT id_grupo FROM tagente
|
||||
WHERE nombre LIKE '%$search_free%')";
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
|
||||
} else {
|
||||
$sql_search ='';
|
||||
}
|
||||
|
@ -709,7 +706,7 @@ function printTree_($type) {
|
|||
$sql = "SELECT * FROM tmodule_group
|
||||
WHERE id_mg IN (SELECT id_module_group FROM tagente_modulo
|
||||
WHERE id_agente IN (SELECT id_agente FROM tagente
|
||||
WHERE nombre LIKE '%$search_free%'))";
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%'))";
|
||||
$list = db_get_all_rows_sql($sql);
|
||||
} else {
|
||||
$list = db_get_all_rows_in_table('tmodule_group', 'name');
|
||||
|
@ -725,7 +722,7 @@ function printTree_($type) {
|
|||
WHERE id_group IN ($groups)
|
||||
AND id IN (SELECT id_policy FROM tpolicy_agents
|
||||
WHERE id_agent IN (SELECT id_agente FROM tagente
|
||||
WHERE nombre LIKE '%$search_free%'))";
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%'))";
|
||||
$list = db_get_all_rows_sql($sql);
|
||||
} else {
|
||||
$list = db_get_all_rows_filter('tpolicies', array('id_group' => array_keys($avariableGroups)));
|
||||
|
@ -736,7 +733,7 @@ function printTree_($type) {
|
|||
case 'module':
|
||||
if ($search_free != '') {
|
||||
$sql_search = " AND t1.id_agente IN (SELECT id_agente FROM tagente
|
||||
WHERE nombre LIKE '%$search_free%')";
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE '%$search_free%')";
|
||||
} else {
|
||||
$sql_search ='';
|
||||
}
|
||||
|
@ -774,34 +771,10 @@ function printTree_($type) {
|
|||
$id = $item['id_os'];
|
||||
$name = $item['name'];
|
||||
$iconImg = html_print_image(str_replace('.png' ,'_small.png', ui_print_os_icon ($item['id_os'], false, true, false)) . " ", true);
|
||||
|
||||
$agentes = db_get_all_rows_sql("SELECT id_agente FROM tagente WHERE id_os=$id");
|
||||
if ($agentes === false) {
|
||||
$agentes = array();
|
||||
}
|
||||
|
||||
$num_ok = 0;
|
||||
$num_critical = 0;
|
||||
$num_warning = 0;
|
||||
$num_unknown = 0;
|
||||
foreach ($agentes as $agente) {
|
||||
$stat = reporting_get_agent_module_info ($agente["id_agente"]);
|
||||
|
||||
switch ($stat['status']) {
|
||||
case 'agent_ok.png':
|
||||
$num_ok++;
|
||||
break;
|
||||
case 'agent_critical.png':
|
||||
$num_critical++;
|
||||
break;
|
||||
case 'agent_warning.png':
|
||||
$num_warning++;
|
||||
break;
|
||||
case 'agent_down.png':
|
||||
$num_unknown++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$num_ok = os_agents_ok($id);
|
||||
$num_critical = os_agents_critical($id);
|
||||
$num_warning = os_agents_warning($id);
|
||||
$num_unknown = os_agents_unknown($id);
|
||||
break;
|
||||
case 'group':
|
||||
$id = $item['id_grupo'];
|
||||
|
@ -882,7 +855,7 @@ function printTree_($type) {
|
|||
$name_sql = io_safe_input($item['nombre']);
|
||||
$agentes = db_get_all_rows_sql("SELECT id_agente FROM tagente
|
||||
WHERE id_agente IN (SELECT id_agente FROM tagente_modulo
|
||||
WHERE nombre LIKE '$name_sql')");
|
||||
WHERE nombre COLLATE utf8_general_ci LIKE '%$name_sql%')");
|
||||
if ($agentes === false) {
|
||||
$agentes = array();
|
||||
}
|
||||
|
@ -932,21 +905,16 @@ function printTree_($type) {
|
|||
}
|
||||
}
|
||||
|
||||
//skip if there is a empty OS or group!
|
||||
if (($type == 'os' || $type == 'group') && ($num_ok == 0) && ($num_critical == 0) && ($num_warning == 0) && ($num_unknown == 0)) {
|
||||
continue;
|
||||
} else {
|
||||
echo "<li style='margin: 0px 0px 0px 0px;'>
|
||||
<a onfocus='JavaScript: this.blur()' href='javascript: loadSubTree(\"" . $type . "\",\"" . $id . "\", " . $lessBranchs . ", \"\")'>" .
|
||||
$img . $iconImg ." " . __($name) . ' ('.
|
||||
'<span class="green">'.'<b>'.$num_ok.'</b>'.'</span>'.
|
||||
' : <span class="red">'.$num_critical.'</span>' .
|
||||
' : <span class="yellow">'.$num_warning.'</span>'.
|
||||
' : <span class="grey">'.$num_unknown.'</span>'.') '. "</a>";
|
||||
|
||||
echo "<div hiddenDiv='1' loadDiv='0' style='margin: 0px; padding: 0px;' class='tree_view' id='tree_div_" . $type . "_" . $id . "'></div>";
|
||||
echo "</li>\n";
|
||||
}
|
||||
echo "<li style='margin: 0px 0px 0px 0px;'>
|
||||
<a onfocus='JavaScript: this.blur()' href='javascript: loadSubTree(\"" . $type . "\",\"" . $id . "\", " . $lessBranchs . ", \"\")'>" .
|
||||
$img . $iconImg ." " . __($name) . ' ('.
|
||||
'<span class="green">'.'<b>'.$num_ok.'</b>'.'</span>'.
|
||||
' : <span class="red">'.$num_critical.'</span>' .
|
||||
' : <span class="yellow">'.$num_warning.'</span>'.
|
||||
' : <span class="grey">'.$num_unknown.'</span>'.') '. "</a>";
|
||||
|
||||
echo "<div hiddenDiv='1' loadDiv='0' style='margin: 0px; padding: 0px;' class='tree_view' id='tree_div_" . $type . "_" . $id . "'></div>";
|
||||
echo "</li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
echo '</td>';
|
||||
|
|
Loading…
Reference in New Issue