';
// Get Groups and profiles from user
$user_groups = implode (",", array_keys (users_get_groups ()));
////////////////////////////////////
// Begin Build SQL sentences
$sql_from = " FROM tagente, tagente_modulo, tagente_estado ";
$sql_conditions_base = " WHERE tagente.id_agente = tagente_modulo.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo";
$sql_conditions = " AND tagente_modulo.disabled = 0 AND tagente.disabled = 0";
// Agent group selector
if (!defined('METACONSOLE')) {
if ($ag_group > 0 && check_acl ($config["id_user"], $ag_group, "AR")) {
$sql_conditions_group = sprintf (" AND tagente.id_grupo = %d", $ag_group);
}
elseif ($user_groups != '') {
// User has explicit permission on group 1 ?
$sql_conditions_group = " AND tagente.id_grupo IN (".$user_groups.")";
}
}
else {
if ($ag_group != "0" && check_acl ($config["id_user"], $ag_group, "AR")) {
$sql_conditions_group = sprintf (" AND tagente.id_grupo IN ( SELECT id_grupo FROM tgrupo where nombre = '%s') ", $ag_group);
}
elseif ($user_groups != '') {
// User has explicit permission on group 1 ?
$sql_conditions_group = " AND tagente.id_grupo IN (".$user_groups.")";
}
}
// Module group
if (defined('METACONSOLE')) {
if ($modulegroup != '-1')
$sql_conditions .= sprintf (" AND tagente_modulo.id_module_group IN (SELECT id_mg
FROM tmodule_group WHERE name = '%s')", $modulegroup);
}
else if ($modulegroup > -1) {
$sql_conditions .= sprintf (" AND tagente_modulo.id_module_group = '%d'", $modulegroup);
}
// Module name selector
if ($ag_modulename != "") {
$sql_conditions .= sprintf (" AND tagente_modulo.nombre = '%s'",
$ag_modulename);
}
// Freestring selector
if ($ag_freestring != "") {
$sql_conditions .= sprintf (" AND (tagente.nombre LIKE '%%%s%%'
OR tagente_modulo.nombre LIKE '%%%s%%'
OR tagente_modulo.descripcion LIKE '%%%s%%')",
$ag_freestring, $ag_freestring, $ag_freestring);
}
// Status selector
if ($status == AGENT_MODULE_STATUS_NORMAL) { //Normal
$sql_conditions .= " AND tagente_estado.estado = 0
AND (utimestamp > 0 OR (tagente_modulo.id_tipo_modulo IN(21,22,23,100))) ";
}
elseif ($status == AGENT_MODULE_STATUS_CRITICAL_BAD) { //Critical
$sql_conditions .= " AND tagente_estado.estado = 1 AND utimestamp > 0";
}
elseif ($status == AGENT_MODULE_STATUS_WARNING) { //Warning
$sql_conditions .= " AND tagente_estado.estado = 2 AND utimestamp > 0";
}
elseif ($status == AGENT_MODULE_STATUS_NOT_NORMAL) { //Not normal
$sql_conditions .= " AND tagente_estado.estado <> 0";
}
elseif ($status == AGENT_MODULE_STATUS_UNKNOW) { //Unknown
$sql_conditions .= " AND tagente_estado.estado = 3 AND tagente_estado.utimestamp <> 0";
}
elseif ($status == AGENT_MODULE_STATUS_NOT_INIT) { //Not init
$sql_conditions .= " AND tagente_estado.utimestamp = 0
AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23,100)";
}
//Filter by tag
if ($tag_filter !== 0) {
if (defined('METACONSOLE')) {
$sql_conditions .= " AND tagente_modulo.id_agente_modulo IN (
SELECT ttag_module.id_agente_modulo
FROM ttag_module
WHERE ttag_module.id_tag IN (SELECT id_tag FROM ttag where name LIKE '%" . $tag_filter . "%')
)";
}
else{
$sql_conditions .= " AND tagente_modulo.id_agente_modulo IN (
SELECT ttag_module.id_agente_modulo
FROM ttag_module
WHERE ttag_module.id_tag = " . $tag_filter . "
)";
}
}
$sql_conditions_tags = tags_get_acl_tags($config['id_user'], $ag_group, 'AR', 'module_condition', 'AND', 'tagente_modulo');
// Two modes of filter. All the filters and only ACLs filter
$sql_conditions_all = $sql_conditions_base . $sql_conditions . $sql_conditions_group . $sql_conditions_tags;
$sql_conditions_acl = $sql_conditions_base . $sql_conditions_group . $sql_conditions_tags;
// Get count to paginate
if (!defined('METACONSOLE'))
$count = db_get_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) " . $sql_from . $sql_conditions_all);
// Get limit_sql depend of the metaconsole or standard mode
if (defined('METACONSOLE')) {
// Offset will be used to get the subset of modules
$inferior_limit = $offset;
$superior_limit = $config["block_size"] + $offset;
// Offset reset to get all elements
$offset = 0;
if (!isset($config["meta_num_elements"]))
$config["meta_num_elements"] = 100;
$limit_sql = $config["meta_num_elements"];
}
else
$limit_sql = $config["block_size"];
// End Build SQL sentences
/////////////////////////////////////
// Query to get name of the modules to module name filter combo
switch ($config["dbtype"]) {
case "mysql":
case "postgresql":
$profiles = db_get_all_rows_sql('SELECT id_grupo
FROM tusuario_perfil AS t1
INNER JOIN tperfil AS t2 ON t1.id_perfil = t2.id_perfil
WHERE t2.agent_view = 1 AND t1.id_usuario = \'' . $config['id_user'] . '\';');
if ($profiles === false)
$profiles = array();
$id_groups = array();
$flag_all_group = false;
foreach ($profiles as $profile) {
if ($profile['id_grupo'] == 0) {
$flag_all_group = true;
}
$id_groups[] = $profile['id_grupo'];
}
//The check of is_admin
$flag_is_admin = (bool)db_get_value('is_admin', 'tusuario', 'id_user', $config['id_user']);
$sql = ' SELECT distinct(tagente_modulo.nombre)
'. $sql_from . $sql_conditions_acl;
break;
case "oracle":
$profiles = db_get_all_rows_sql('SELECT id_grupo
FROM tusuario_perfil t1
INNER JOIN tperfil t2 ON t1.id_perfil = t2.id_perfil
WHERE t2.agent_view = 1 AND t1.id_usuario = \'' . $config['id_user'] . '\';');
if ($profiles === false)
$profiles = array();
$id_groups = array();
$flag_all_group = false;
foreach ($profiles as $profile) {
if ($profile['id_grupo'] == 0) {
$flag_all_group = true;
}
$id_groups[] = $profile['id_grupo'];
}
//The check of is_admin
$flag_is_admin = (bool)db_get_value('is_admin', 'tusuario',
'id_user', $config['id_user']);
$sql = ' SELECT DISTINCT dbms_lob.substr(nombre,4000,1) AS nombre' .
$sql_from . $sql_conditions_acl;
break;
}
$modules = array();
$tags = array();
$rows_select = array();
$rows_temp_processed = array();
$groups_select = array();
if ($flag_is_admin)
$groups_select[0] = __('All');
if (defined('METACONSOLE')) {
// For each server defined and not disabled:
$servers = db_get_all_rows_sql ("SELECT * FROM tmetaconsole_setup WHERE disabled = 0");
if ($servers === false)
$servers = array();
$result = array();
foreach($servers as $server) {
// If connection was good then retrieve all data server
if (metaconsole_connect($server) == NOERR) {
$connection = true;
}
else {
$connection = false;
}
// Get all info for filters of all nodes
$modules_temp = db_get_all_rows_sql($sql);
$tags_temp = db_get_all_rows_sql('
SELECT name, name
FROM ttag
WHERE id_tag IN (SELECT ttag_module.id_tag
FROM ttag_module)');
$rows_temp = db_get_all_rows_sql("SELECT distinct name
FROM tmodule_group
ORDER BY name");
$rows_temp = io_safe_output($rows_temp);
if (!empty($rows_temp)) {
foreach ($rows_temp as $module_group_key => $modules_group_val)
$rows_temp_processed[$modules_group_val['name']] = $modules_group_val['name'];
$rows_select = array_unique(array_merge($rows_select, $rows_temp_processed));
}
$groups_temp = users_get_groups_for_select(false, "AR", true, true, false);
$groups_temp_processed = array();
foreach ($groups_temp as $group_temp_key => $group_temp_val) {
$new_key = str_replace(' ','',$group_temp_val);
$groups_temp_processed[$new_key] = $group_temp_val;
}
if (!empty($groups_temp_processed)) {
$groups_select = array_unique(array_merge($groups_select, $groups_temp_processed));
}
if (!empty($modules_temp))
$modules = array_merge($modules, $modules_temp);
if (!empty($tags_temp))
$tags = array_merge($tags, $tags_temp);
metaconsole_restore_db();
}
unset($groups_select[__('All')]);
}
if (!defined('METACONSOLE')) {
echo '
' . __('Group') . ' |
' .
html_print_select_groups(false, "AR", true, "ag_group",
$ag_group, '', '', '0', true, false, false, 'w130',
false, 'width:150px;') . '
| ';
}
else {
echo '
' . __('Group') . ' |
' .
html_print_select($groups_select, "ag_group",
io_safe_output($ag_group), '', '', '0', true, false, false, 'w130',
false, 'width:150px;') . '
| ';
}
echo '' . __('Monitor status') . " | ";
echo "";
$fields = array ();
$fields[AGENT_MODULE_STATUS_NORMAL] = __('Normal');
$fields[AGENT_MODULE_STATUS_WARNING] = __('Warning');
$fields[AGENT_MODULE_STATUS_CRITICAL_BAD] = __('Critical');
$fields[AGENT_MODULE_STATUS_UNKNOW] = __('Unknown');
$fields[AGENT_MODULE_STATUS_NOT_NORMAL] = __('Not normal'); //default
$fields[AGENT_MODULE_STATUS_NOT_INIT] = __('Not init');
html_print_select ($fields, "status", $status, '', __('All'), -1,
false, false, true, '', false, 'width: 125px;');
echo ' | ';
echo '' . __('Module group') . ' | ';
echo '';
if (!defined('METACONSOLE')) {
$rows = db_get_all_rows_sql("SELECT *
FROM tmodule_group ORDER BY name");
$rows = io_safe_output($rows);
$rows_select = array();
if (!empty($rows))
foreach ($rows as $module_group)
$rows_select[$module_group['id_mg']] = $module_group['name'];
}
$rows_select[0] = __('Not assigned');
html_print_select($rows_select, 'modulegroup', $modulegroup, '', __('All'), -1);
echo ' | ';
echo '
';
echo '';
echo '' . __('Module name') . ' | ';
echo '';
if (!defined('METACONSOLE'))
$modules = db_get_all_rows_sql($sql);
html_print_select (index_array ($modules, 'nombre', 'nombre'), "ag_modulename",
$ag_modulename, '', __('All'), '', false, false, true, '', false, 'width: 150px;');
echo ' | ';
echo '' .
__('Tags') .
ui_print_help_tip(__('Only it is show tags in use.'), true) .
' | ';
echo '';
if (!defined('METACONSOLE')) {
$tags = tags_get_user_tags();
}
if (empty($tags)) {
echo __('No tags');
}
else {
if (!defined('METACONSOLE'))
html_print_select ($tags, "tag_filter",
$tag_filter, '', __('All'), '', false, false, true, '', false, 'width: 150px;');
else
html_print_select (index_array($tags, 'name', 'name'), "tag_filter",
$tag_filter, '', __('All'), '', false, false, true, '', false, 'width: 150px;');
}
echo ' | ';
echo '' .
__('Search') .
' | ';
echo '';
html_print_input_text ("ag_freestring", $ag_freestring, '', 20,30, false);
echo ' | ';
echo '';
html_print_submit_button (__('Show'), "uptbutton", false, 'class="sub search"');
echo " | ";
echo "