diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php index d84800e984..5f716f571d 100644 --- a/pandora_console/godmode/agentes/agent_manager.php +++ b/pandora_console/godmode/agentes/agent_manager.php @@ -636,7 +636,8 @@ $tableAdvancedAgent->data['secondary_groups'][] = html_print_label_input_block( __('Secondary groups'), html_print_select_agent_secondary( $agent, - $id_agente + $id_agente, + ['selected_post' => $secondary_groups] ) ); diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index dc27e4b207..f5a9278a68 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -228,7 +228,7 @@ if ($create_agent) { $cps = (int) get_parameter_switch('cps', -1); $fixed_ip = (int) get_parameter_switch('fixed_ip', 0); - $secondary_groups = (string) get_parameter('secondary_hidden', ''); + $secondary_groups = (array) get_parameter('secondary_groups_selected', ''); $fields = db_get_all_fields_in_table('tagent_custom_fields'); if ($fields === false) { @@ -343,7 +343,7 @@ if ($create_agent) { 'agents_update_secondary_groups', [ $id_agente, - explode(',', $secondary_groups), + $secondary_groups, [], ] ); @@ -992,7 +992,7 @@ if ($update_agent) { $cps = get_parameter_switch('cps', -1); $old_values = db_get_row('tagente', 'id_agente', $id_agente); $fields = db_get_all_fields_in_table('tagent_custom_fields'); - $secondary_groups = (string) get_parameter('secondary_hidden', ''); + $secondary_groups = (array) get_parameter('secondary_groups_selected', ''); $satellite_server = (int) get_parameter('satellite_server', 0); $fixed_ip = (int) get_parameter_switch('fixed_ip', 0); @@ -1185,13 +1185,27 @@ if ($update_agent) { "Quiet":"'.(int) $quiet.'", "Cps":"'.(int) $cps.'"}'; + + $secondary_groups_selected = enterprise_hook( + 'agents_get_secondary_groups', + [$id_agente] + ); + + $delete_secondary_groups = []; + foreach ($secondary_groups_selected['plain'] as $v_selected) { + if (in_array($v_selected, $secondary_groups) === false) { + array_push($delete_secondary_groups, $v_selected); + } + } + // Create the secondary groups. enterprise_hook( 'agents_update_secondary_groups', [ $id_agente, - explode(',', $secondary_groups), - [], + $secondary_groups, + $delete_secondary_groups, + true, ] ); diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index 37054a3e86..7af040fcc1 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -6435,7 +6435,11 @@ function html_print_select_agent_secondary($agent, $id_agente, $options=[]) [$id_agente] ); - $name = 'secondary_groups_selected'.$options['extra_id']; + if ($options['selected_post'] !== null) { + $secondary_groups_selected['plain'] = $options['selected_post']; + } + + $name = 'secondary_groups_selected[]'.$options['extra_id']; if ($options['only_select'] === true) { $name = 'secondary_groups'.$options['extra_id'].'[]'; } @@ -6455,7 +6459,7 @@ function html_print_select_agent_secondary($agent, $id_agente, $options=[]) $name, // Selected. // No select any by default. - $secondary_groups_selected['for_select'], + $secondary_groups_selected['plain'], // Script. // Javascript onChange code. '',