From 7e2fc669f7991e822365ccffc374a86c9ef8c810 Mon Sep 17 00:00:00 2001
From: alejandro-campos <alejandro.campos@artica.es>
Date: Wed, 18 Nov 2020 16:48:49 +0100
Subject: [PATCH 1/2] fixed status filter when applying changes to a module of
 any agent

---
 .../godmode/massive/massive_edit_modules.php  | 23 +++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/pandora_console/godmode/massive/massive_edit_modules.php b/pandora_console/godmode/massive/massive_edit_modules.php
index 8c5a611847..c3abea586a 100755
--- a/pandora_console/godmode/massive/massive_edit_modules.php
+++ b/pandora_console/godmode/massive/massive_edit_modules.php
@@ -50,6 +50,7 @@ if ($update) {
         $agents_ = [];
 
         $force = get_parameter('force_type', false);
+        $module_status = get_parameter('status_module', null);
 
         if ($agents_select == false) {
             $agents_select = [];
@@ -109,7 +110,7 @@ if ($update) {
                 }
 
                 foreach ($module_name as $mod_name) {
-                    $result = process_manage_edit($mod_name['nombre'], $id_agent, $modules_selection_mode);
+                    $result = process_manage_edit($mod_name['nombre'], $id_agent, $module_status, $modules_selection_mode);
                     $count++;
                     $success += (int) $result;
                 }
@@ -132,7 +133,7 @@ if ($update) {
                 }
 
                 foreach ($module_name as $mod_name) {
-                    $result = process_manage_edit($mod_name['nombre'], $id_agent, $modules_selection_mode);
+                    $result = process_manage_edit($mod_name['nombre'], $id_agent, $module_status, $modules_selection_mode);
                     $count++;
                     $success += (int) $result;
                 }
@@ -150,7 +151,7 @@ if ($update) {
             }
 
             foreach ($modules_ as $module_) {
-                $result = process_manage_edit($module_, $agent_, $modules_selection_mode);
+                $result = process_manage_edit($module_, $agent_, $module_status, $modules_selection_mode);
                 $count++;
                 $success += (int) $result;
             }
@@ -1859,7 +1860,7 @@ function disabled_status () {
 /* ]]> */
 </script>
 <?php
-function process_manage_edit($module_name, $agents_select=null, $module_status='all')
+function process_manage_edit($module_name, $agents_select=null, $module_status=null, $selection_mode='all')
 {
     if (is_int($module_name) && $module_name < 0) {
         ui_print_error_message(__('No modules selected'));
@@ -2149,6 +2150,20 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
     }
 
     foreach ($modules as $module) {
+        if ($module_status !== null) {
+            if (modules_is_not_init($module['id_agente_modulo']) === true) {
+                if ($module_status != AGENT_MODULE_STATUS_NO_DATA && $module_status != AGENT_MODULE_STATUS_NOT_INIT) {
+                    continue;
+                }
+            } else {
+                $status = modules_get_agentmodule_status($module['id_agente_modulo']);
+
+                if ($module_status !== $status) {
+                    continue;
+                }
+            }
+        }
+
         // Set tcp_send value according to module type since the purpose of this field in database varies in case of SNMP modules.
         if ($module['id_tipo_modulo'] >= 15 && $module['id_tipo_modulo'] <= 18) {
             if ($snmp_version != '') {

From bb32f40da9901890acc637b290e52fdc5454d20c Mon Sep 17 00:00:00 2001
From: alejandro-campos <alejandro.campos@artica.es>
Date: Tue, 1 Dec 2020 15:50:52 +0100
Subject: [PATCH 2/2] added filter for bulk edition and deletion of modules

---
 .../godmode/massive/massive_delete_modules.php            | 6 +++++-
 pandora_console/godmode/massive/massive_edit_modules.php  | 8 +++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/pandora_console/godmode/massive/massive_delete_modules.php b/pandora_console/godmode/massive/massive_delete_modules.php
index 7d8d64141a..06f918d873 100755
--- a/pandora_console/godmode/massive/massive_delete_modules.php
+++ b/pandora_console/godmode/massive/massive_delete_modules.php
@@ -86,7 +86,11 @@ function process_manage_delete($module_name, $id_agents, $module_status='all')
     if ($selection_delete_mode == 'agents') {
         // We are selecting "any" module for the selecteds agents
         if (($module_name[0] == '0') and (is_array($module_name)) and (count($module_name) == 1)) {
-            $filter_for_module_deletion = false;
+            if ($status_module != -1) {
+                $filter_for_module_deletion = sprintf('tagente_modulo.id_agente_modulo IN (SELECT id_agente_modulo FROM tagente_estado where estado = %s OR utimestamp=0 )', $status_module);
+            } else {
+                $filter_for_module_deletion = false;
+            }
         } else {
             $filter_for_module_deletion = sprintf('tagente_modulo.nombre IN ("%s")', implode('","', $module_name));
         }
diff --git a/pandora_console/godmode/massive/massive_edit_modules.php b/pandora_console/godmode/massive/massive_edit_modules.php
index c3abea586a..b9205c75fe 100755
--- a/pandora_console/godmode/massive/massive_edit_modules.php
+++ b/pandora_console/godmode/massive/massive_edit_modules.php
@@ -46,11 +46,13 @@ $update = (bool) get_parameter_post('update');
 
 if ($update) {
     $agents_ = '';
+
+    $module_status = get_parameter('status_module');
+
     if ($selection_mode == 'modules') {
         $agents_ = [];
 
         $force = get_parameter('force_type', false);
-        $module_status = get_parameter('status_module', null);
 
         if ($agents_select == false) {
             $agents_select = [];
@@ -1860,7 +1862,7 @@ function disabled_status () {
 /* ]]> */
 </script>
 <?php
-function process_manage_edit($module_name, $agents_select=null, $module_status=null, $selection_mode='all')
+function process_manage_edit($module_name, $agents_select=null, $module_status='-1', $selection_mode='all')
 {
     if (is_int($module_name) && $module_name < 0) {
         ui_print_error_message(__('No modules selected'));
@@ -2150,7 +2152,7 @@ function process_manage_edit($module_name, $agents_select=null, $module_status=n
     }
 
     foreach ($modules as $module) {
-        if ($module_status !== null) {
+        if ($module_status !== '-1') {
             if (modules_is_not_init($module['id_agente_modulo']) === true) {
                 if ($module_status != AGENT_MODULE_STATUS_NO_DATA && $module_status != AGENT_MODULE_STATUS_NOT_INIT) {
                     continue;