diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index a87bb904f1..72aeba2380 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,9 @@ +2009-07-15 Miguel de Dios + + * include/functions_modules.php: fix bug that the function + copy_agent_module_to_agent didn't copy the modules what was previus + delete. + 2009-07-16 Jorge Gonzalez * godmode/servers/manage_recontask_form.php: Changed sql query to diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 67865141d7..1379b3cfe0 100644 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -31,35 +31,68 @@ function copy_agent_module_to_agent ($id_agent_module, $id_destiny_agent) { return false; $modules = get_agent_modules ($id_destiny_agent, false, - array ('nombre' => $module['nombre'])); + array ('nombre' => $module['nombre'], 'disabled' => false)); if (! empty ($modules)) return array_pop (array_keys ($modules)); - - /* PHP copy arrays on assignment */ - $new_module = $module; - - /* Rewrite different values */ - $new_module['id_agente'] = $id_destiny_agent; - $new_module['ip_target'] = get_agent_address ($id_destiny_agent); - - /* Unset numeric indexes or SQL would fail */ - $len = count ($new_module) / 2; - for ($i = 0; $i < $len; $i++) - unset ($new_module[$i]); - /* Unset original agent module id */ - unset ($new_module['id_agente_modulo']); - - $id_new_module = process_sql_insert ('tagente_modulo', $new_module); - if ($id_new_module === false) { - return false; + + $modulesDisabled = get_agent_modules ($id_destiny_agent, false, + array ('nombre' => $module['nombre'], 'disabled' => true)); + + if (!empty($modulesDisabled)) { + //the foreach have only one loop but extract the array index, and it's id_agente_modulo + foreach ($modulesDisabled as $id => $garbage) { + $id_module = $id; + process_sql_update('tagente_modulo', array('disabled' => false, 'delete_pending' => false), + array('id_agente_modulo' => $id_module, 'disabled' => true)); + } + + $values = array (); + $values['id_agente_modulo'] = $id_module; + + /* PHP copy arrays on assignment */ + $new_module = $module; + + /* Rewrite different values */ + $new_module['id_agente'] = $id_destiny_agent; + $new_module['ip_target'] = get_agent_address ($id_destiny_agent); + + /* Unset numeric indexes or SQL would fail */ + $len = count ($new_module) / 2; + for ($i = 0; $i < $len; $i++) + unset ($new_module[$i]); + /* Unset original agent module id */ + unset ($new_module['id_agente_modulo']); + + $id_new_module = $id_module; + } + else { + /* PHP copy arrays on assignment */ + $new_module = $module; + + /* Rewrite different values */ + $new_module['id_agente'] = $id_destiny_agent; + $new_module['ip_target'] = get_agent_address ($id_destiny_agent); + + /* Unset numeric indexes or SQL would fail */ + $len = count ($new_module) / 2; + for ($i = 0; $i < $len; $i++) + unset ($new_module[$i]); + /* Unset original agent module id */ + unset ($new_module['id_agente_modulo']); + + $id_new_module = process_sql_insert ('tagente_modulo', $new_module); + if ($id_new_module === false) { + return false; + } + + $values = array (); + $values['id_agente_modulo'] = $id_new_module; } - $values = array (); - $values['id_agente_modulo'] = $id_new_module; $values['id_agente'] = $id_destiny_agent; - if (! in_array ($new_module['id_tipo_modulo'], array (2, 6, 9, 18, 21, 100))) + if (! in_array ($new_module['id_tipo_modulo'], array (2, 6, 9, 18, 21, 100))) //TODO delete magic numbers /* Not proc modules uses a special estado (status) value */ $values['estado'] = 100;