Merge branch '1228-massive-module-deletes-all-modules-with-any-tag-dev' into 'develop'

Fixed "any" filter with selects unknown and not init modules in massive delete operation

See merge request !756
This commit is contained in:
slerena 2017-08-30 17:50:15 +02:00
commit 0a11d3d086
2 changed files with 38 additions and 8 deletions

View File

@ -48,7 +48,7 @@ if (is_ajax ()) {
return; return;
} }
function process_manage_delete ($module_name, $id_agents) { function process_manage_delete ($module_name, $id_agents, $module_status = 'all') {
global $config; global $config;
@ -217,6 +217,20 @@ function process_manage_delete ($module_name, $id_agents) {
} }
} }
if (($module_status == 'unknown') && ($module_name[0] == "0") && (is_array($module_name)) && (count($module_name) == 1)) {
$modules_to_delete = array();
foreach ($modules as $mod_id) {
$mod_status = (int)db_get_value_filter ('estado', 'tagente_estado', array('id_agente_modulo' => $mod_id));
// Unknown, not init and no data modules
if ($mod_status == 3 || $mod_status == 4 || $mod_status == 5) {
$modules_to_delete[$mod_id] = $mod_id;
}
}
$modules = $modules_to_delete;
}
$count_deleted_modules = count($modules); $count_deleted_modules = count($modules);
if ($config['dbtype'] == "oracle") { if ($config['dbtype'] == "oracle") {
$success = db_process_sql(sprintf("DELETE FROM tagente_modulo WHERE id_agente_modulo IN (%s)", implode(",", $modules))); $success = db_process_sql(sprintf("DELETE FROM tagente_modulo WHERE id_agente_modulo IN (%s)", implode(",", $modules)));
@ -251,6 +265,7 @@ $agents_id = get_parameter('id_agents');
$modules_select = get_parameter('module'); $modules_select = get_parameter('module');
$selection_mode = get_parameter('selection_mode', 'modules'); $selection_mode = get_parameter('selection_mode', 'modules');
$recursion = get_parameter('recursion'); $recursion = get_parameter('recursion');
$modules_selection_mode = get_parameter('modules_selection_mode');
if ($delete) { if ($delete) {
switch ($selection_mode) { switch ($selection_mode) {
@ -299,7 +314,7 @@ if ($delete) {
$module_name = array(); $module_name = array();
} }
foreach ($module_name as $mod_name) { foreach ($module_name as $mod_name) {
$result = process_manage_delete ($mod_name['nombre'], $id_agent['id_agente']); $result = process_manage_delete ($mod_name['nombre'], $id_agent['id_agente'], $modules_selection_mode);
$count ++; $count ++;
$success += (int)$result; $success += (int)$result;
} }
@ -319,7 +334,7 @@ if ($delete) {
$module_name = array(); $module_name = array();
} }
else { else {
$result = process_manage_delete (array(0 => 0), $id_agent); $result = process_manage_delete (array(0 => 0), $id_agent, $modules_selection_mode);
} }
$success += (int)$result; $success += (int)$result;
} }
@ -330,7 +345,8 @@ if ($delete) {
} }
if (!$force) { if (!$force) {
$result = process_manage_delete ($modules_, $agents_); $result = false;
$result = process_manage_delete ($modules_, $agents_, $modules_selection_mode);
} }
if ($result) { if ($result) {

View File

@ -40,6 +40,7 @@ $agents_id = get_parameter('id_agents');
$modules_select = get_parameter('module'); $modules_select = get_parameter('module');
$selection_mode = get_parameter('selection_mode', 'modules'); $selection_mode = get_parameter('selection_mode', 'modules');
$recursion = get_parameter('recursion'); $recursion = get_parameter('recursion');
$modules_selection_mode = get_parameter('modules_selection_mode');
$update = (bool) get_parameter_post ('update'); $update = (bool) get_parameter_post ('update');
@ -105,7 +106,7 @@ if ($update) {
$module_name = array(); $module_name = array();
foreach ($module_name as $mod_name) { foreach ($module_name as $mod_name) {
$result = process_manage_edit($mod_name['nombre'], $id_agent); $result = process_manage_edit($mod_name['nombre'], $id_agent, $modules_selection_mode);
$count++; $count++;
$success += (int)$result; $success += (int)$result;
} }
@ -127,7 +128,7 @@ if ($update) {
$module_name = array(); $module_name = array();
foreach($module_name as $mod_name) { foreach($module_name as $mod_name) {
$result = process_manage_edit($mod_name['nombre'], $id_agent); $result = process_manage_edit($mod_name['nombre'], $id_agent, $modules_selection_mode);
$count++; $count++;
$success += (int)$result; $success += (int)$result;
} }
@ -146,7 +147,7 @@ if ($update) {
foreach ($modules_ as $module_) { foreach ($modules_ as $module_) {
$result = process_manage_edit ($module_, $agent_); $result = process_manage_edit ($module_, $agent_, $modules_selection_mode);
$count++; $count++;
$success += (int)$result; $success += (int)$result;
@ -1112,7 +1113,7 @@ function disabled_status () {
/* ]]> */ /* ]]> */
</script> </script>
<?php <?php
function process_manage_edit ($module_name, $agents_select = null) { function process_manage_edit ($module_name, $agents_select = null, $module_status = 'all') {
if (is_int ($module_name) && $module_name < 0) { if (is_int ($module_name) && $module_name < 0) {
ui_print_error_message(__('No modules selected')); ui_print_error_message(__('No modules selected'));
@ -1230,6 +1231,19 @@ function process_manage_edit ($module_name, $agents_select = null) {
if ($modules === false) if ($modules === false)
return false; return false;
if (($module_status == 'unknown') && ($module_name == "0")) {
$modules_to_delete = array();
foreach ($modules as $mod_id) {
$mod_status = (int)db_get_value_filter ('estado', 'tagente_estado', array('id_agente_modulo' => $mod_id));
// Unknown, not init and no data modules
if ($mod_status == 3 || $mod_status == 4 || $mod_status == 5) {
$modules_to_delete[$mod_id] = $mod_id;
}
}
$modules = $modules_to_delete;
}
foreach ($modules as $module) { foreach ($modules as $module) {
$result = modules_update_agent_module( $result = modules_update_agent_module(