diff --git a/pandora_console/extensions/agents_modules.php b/pandora_console/extensions/agents_modules.php index 1349497e0a..3c1dc59d3a 100644 --- a/pandora_console/extensions/agents_modules.php +++ b/pandora_console/extensions/agents_modules.php @@ -148,19 +148,18 @@ function mainAgentsModules() { $agents = agents_get_group_agents($group_id); if ((empty($agents)) || $agents == -1) $agents = array(); $filter_agents_label = ''.__('Agents').''; - $filter_agents = html_print_select($agents, 'id_agents2[]', $agents_id, '', '', 0, true, true, true, '', false, "min-width: 180px"); + $filter_agents = html_print_select($agents, 'id_agents2[]', $agents_id, '', '', 0, true, true, true, '', false, "min-width: 180px; max-width: 200px;"); //type show $selection = array(0 => __('Show common modules'), 1=> __('Show all modules')); $filter_type_show_label = ''.__('Show common modules').''; - $filter_type_show = html_print_select($selection, 'selection_agent_module', $selection_a_m, '', "", 0, true, false, true, '', false, "min-width: 180px"); + $filter_type_show = html_print_select($selection, 'selection_agent_module', $selection_a_m, '', "", 0, true, false, true, '', false, "min-width: 180px;"); //modules - $all_modules = db_get_all_rows_sql("SELECT DISTINCT nombre, id_agente_modulo FROM tagente_modulo WHERE id_agente IN (" . implode(',', array_keys($agents)) . ")"); - + $all_modules = select_modules_for_agent_group($group_id, $agents_id, $selection_a_m, false); $filter_modules_label = ''.__('Module').''; - $filter_modules = html_print_select($all_modules, 'module[]', $modules_selected, '', __('None'), 0, true, true, true, '', false, "min-width: 180px"); + $filter_modules = html_print_select($all_modules, 'module[]', $modules_selected, '', '', 0, true, true, true, '', false, "min-width: 180px; max-width: 200px;"); //update $filter_update = html_print_submit_button(__('Update item'), 'edit_item', false, 'class="sub upd"', true); @@ -618,7 +617,6 @@ extensions_add_main_function('mainAgentsModules'); ); }); - selection_agent_module(); }); function selection_agent_module() { @@ -643,4 +641,4 @@ extensions_add_main_function('mainAgentsModules'); "json" ); } - + \ No newline at end of file diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index ccb02da5f7..01b0f42fc9 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -2522,4 +2522,79 @@ function agents_get_agent_custom_field ($agent_id, $custom_field_name) { return db_get_value_sql($sql); } +function select_modules_for_agent_group($id_group, $id_agents, $selection, $return=true){ + $agents = implode(",", $id_agents); + + $filter_group = ""; + $filter_agent = ""; + + if ($id_group != 0) { + $filter_group = " AND id_module_group = ". $id_group; + } + if ($agents != null) { + $filter_agent = " AND id_agente IN (" . $agents . ")"; + } + + if ($selection == 1 || (count($id_agents) == 1)) { + $modules = db_get_all_rows_sql("SELECT DISTINCT nombre, id_agente_modulo FROM tagente_modulo WHERE 1 = 1" . $filter_agent . $filter_group); + + if (empty($modules)) $modules = array(); + + $found = array(); + foreach ($modules as $i=>$row) { + $check = $row['nombre']; + if (@$found[$check]++) { + unset($modules[$i]); + } + } + } + else { + $modules = db_get_all_rows_sql("SELECT nombre, id_agente_modulo FROM tagente_modulo WHERE 1 = 1" . $filter_agent . $filter_group); + + if (empty($modules)) $modules = array(); + + foreach ($modules as $m) { + $is_in_all_agents = true; + $module_name = modules_get_agentmodule_name($m['id_agente_modulo']); + foreach ($id_agents as $a) { + $module_in_agent = db_get_value_filter('id_agente_modulo', + 'tagente_modulo', array('id_agente' => $a, 'nombre' => $module_name)); + if (!$module_in_agent) { + $is_in_all_agents = false; + } + } + if ($is_in_all_agents) { + $modules_to_report[] = $m; + } + } + $modules = $modules_to_report; + + $found = array(); + if (is_array($modules) || is_object($modules)){ + foreach ($modules as $i=>$row) { + $check = $row['nombre']; + if (@$found[$check]++) { + unset($modules[$i]); + } + } + } + } + if (is_array($modules) || is_object($modules)){ + foreach ($modules as $k => $v) { + $modules[$k] = io_safe_output($v); + } + } + + if($return == false){ + foreach ($modules as $value) { + $modules_array[$value['id_agente_modulo']] = $value['nombre']; + } + return $modules_array; + } + else{ + echo json_encode($modules); + return; + } +} + ?> diff --git a/pandora_console/operation/agentes/ver_agente.php b/pandora_console/operation/agentes/ver_agente.php index c99a5a692c..3ad4eb52b4 100644 --- a/pandora_console/operation/agentes/ver_agente.php +++ b/pandora_console/operation/agentes/ver_agente.php @@ -126,71 +126,8 @@ if (is_ajax ()) { $id_group = (int) get_parameter('id_module_group'); $id_agents = get_parameter('id_agents'); $selection = get_parameter('selection'); - if(isset($id_agents)){ - $agents = implode(",", $id_agents); - } - $filter_group = ""; - $filter_agent = ""; - - if ($id_group != 0) { - $filter_group = " AND id_module_group = ". $id_group; - } - if ($agents != null) { - $filter_agent = " AND id_agente IN (" . $agents . ")"; - } - - if ($selection == 1 || (count($id_agents) == 1)) { - $modules = db_get_all_rows_sql("SELECT DISTINCT nombre, id_agente_modulo FROM tagente_modulo WHERE 1 = 1" . $filter_agent . $filter_group); - - if (empty($modules)) $modules = array(); - - $found = array(); - foreach ($modules as $i=>$row) { - $check = $row['nombre']; - if (@$found[$check]++) { - unset($modules[$i]); - } - } - } - else { - $modules = db_get_all_rows_sql("SELECT nombre, id_agente_modulo FROM tagente_modulo WHERE 1 = 1" . $filter_agent . $filter_group); - - if (empty($modules)) $modules = array(); - - foreach ($modules as $m) { - $is_in_all_agents = true; - $module_name = modules_get_agentmodule_name($m['id_agente_modulo']); - foreach ($id_agents as $a) { - $module_in_agent = db_get_value_filter('id_agente_modulo', - 'tagente_modulo', array('id_agente' => $a, 'nombre' => $module_name)); - if (!$module_in_agent) { - $is_in_all_agents = false; - } - } - if ($is_in_all_agents) { - $modules_to_report[] = $m; - } - } - $modules = $modules_to_report; - - $found = array(); - if (is_array($modules) || is_object($modules)){ - foreach ($modules as $i=>$row) { - $check = $row['nombre']; - if (@$found[$check]++) { - unset($modules[$i]); - } - } - } - } - if (is_array($modules) || is_object($modules)){ - foreach ($modules as $k => $v) { - $modules[$k] = io_safe_output($v); - } - } - echo json_encode($modules); - return; + select_modules_for_agent_group($id_group, $id_agents, $selection); } if ($get_agent_json) {