From 90ac62c0cc40b9b1571c1ecc6d68cba1014a1fdf Mon Sep 17 00:00:00 2001 From: Calvo Date: Mon, 27 Sep 2021 16:14:07 +0200 Subject: [PATCH] Fix recursion on networkmap nodes --- .../agentes/pandora_networkmap.view.php | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/pandora_console/operation/agentes/pandora_networkmap.view.php b/pandora_console/operation/agentes/pandora_networkmap.view.php index 09baf79f6b..4f8ba82521 100644 --- a/pandora_console/operation/agentes/pandora_networkmap.view.php +++ b/pandora_console/operation/agentes/pandora_networkmap.view.php @@ -55,6 +55,7 @@ if (is_ajax()) { $process_migration = (bool) get_parameter('process_migration', false); $get_agent_info = (bool) get_parameter('get_agent_info', false); $update_node = (bool) get_parameter('update_node', false); + $get_agents_in_group = (bool) get_parameter('get_agents_in_group', false); if ($update_node) { $node_json = io_safe_output(get_parameter('node', '')); @@ -80,6 +81,65 @@ if (is_ajax()) { return; } + + if ($get_agents_in_group) { + $id = (int) get_parameter('id', 0); + $group = (int) get_parameter('group', -1); + $group_recursion = (int) get_parameter('group_recursion', 0); + + $return = []; + $return['correct'] = false; + + if ($group != -1) { + $where_id_agente = ' 1=1 '; + + $agents_in_networkmap = db_get_all_rows_filter( + 'titem', + [ + 'id_map' => $id, + 'deleted' => 0, + ] + ); + if ($agents_in_networkmap !== false) { + $ids = []; + foreach ($agents_in_networkmap as $agent) { + if ($agent['type'] == 0) { + $ids[] = $agent['source_data']; + } + } + + if (empty($ids) === false) { + $where_id_agente = 'AND id_agente NOT IN ('.implode(',', $ids).')'; + } + } + + if ($group_recursion !== 0) { + $group_tree = groups_get_children_ids($group); + $group = implode(',', $group_tree); + } + + $sql = 'SELECT id_agente, alias + FROM tagente + WHERE id_grupo IN ('.$group.') AND '.$where_id_agente.' + ORDER BY alias ASC'; + + $agents = db_get_all_rows_sql($sql); + + if ($agents !== false) { + $return['agents'] = []; + foreach ($agents as $agent) { + $return['agents'][$agent['id_agente']] = $agent['alias']; + } + + $return['correct'] = true; + } + } + + echo json_encode($return); + + return; + } + if ($module_get_status) { $id = (int) get_parameter('id', 0);