From 9f000fcc3584bdd25a5efd352168bd0bd5f8abd1 Mon Sep 17 00:00:00 2001
From: Daniel Cebrian <daniel.cebrian@pandorafms.com>
Date: Mon, 19 Feb 2024 12:47:15 +0100
Subject: [PATCH] #12909 fixed macros plugin in policies

---
 .../agentes/module_manager_editor_plugin.php  | 11 ++---
 pandora_console/include/ajax/module.php       | 44 ++++++++++++++-----
 .../include/javascript/pandora_modules.js     |  3 +-
 3 files changed, 40 insertions(+), 18 deletions(-)

diff --git a/pandora_console/godmode/agentes/module_manager_editor_plugin.php b/pandora_console/godmode/agentes/module_manager_editor_plugin.php
index abbbc4d9c1..affa225969 100644
--- a/pandora_console/godmode/agentes/module_manager_editor_plugin.php
+++ b/pandora_console/godmode/agentes/module_manager_editor_plugin.php
@@ -164,12 +164,13 @@ foreach ($password_fields as $k => $p) {
             return;
         }
 
-        const moduleId = <?php echo $id_agent_module; ?>;
-        
+        const moduleId = <?php echo ($module['id_policy'] > 0) ? $module['id'] : $id_agent_module; ?>;
+        const isPolicy = <?php echo ($module['id_policy'] > 0) ? '1' : '0'; ?>;
+
         load_plugin_description($("#id_plugin").val());
-        
-        load_plugin_macros_fields('simple-macro', moduleId);
-        
+
+        load_plugin_macros_fields('simple-macro', moduleId, isPolicy);
+
         forced_title_callback();
 
         $('select#id_plugin').select2('close');
diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php
index 1418024c4d..0e723cafe8 100755
--- a/pandora_console/include/ajax/module.php
+++ b/pandora_console/include/ajax/module.php
@@ -41,6 +41,7 @@ if (check_login()) {
 
     $get_plugin_macros = get_parameter('get_plugin_macros');
     $get_module_macros = get_parameter('get_module_macros');
+    $is_policy = (bool) get_parameter('is_policy', 0);
     $search_modules = get_parameter('search_modules');
     $get_module_detail = get_parameter('get_module_detail', 0);
     $get_module_autocomplete_input = (bool) get_parameter(
@@ -104,12 +105,22 @@ if (check_login()) {
     $id_plugin = get_parameter('id_plugin', 0);
 
     if ($id_plugin !== 0) {
-        $id_module_plugin = db_get_value(
-            'id_plugin',
-            'tagente_modulo',
-            'id_agente_modulo',
-            $get_module_macros
-        );
+        if ($is_policy === true) {
+            $id_module_plugin = db_get_value(
+                'id_plugin',
+                'tpolicy_modules',
+                'id',
+                $get_module_macros
+            );
+        } else {
+            $id_module_plugin = db_get_value(
+                'id_plugin',
+                'tagente_modulo',
+                'id_agente_modulo',
+                $get_module_macros
+            );
+        }
+
         if ($id_plugin !== $id_module_plugin) {
             $get_plugin_macros = true;
             $get_module_macros = 0;
@@ -145,12 +156,21 @@ if (check_login()) {
 
         $module_id = $get_module_macros;
 
-        $module_macros = db_get_value(
-            'macros',
-            'tagente_modulo',
-            'id_agente_modulo',
-            $module_id
-        );
+        if ($is_policy === true) {
+            $module_macros = db_get_value(
+                'macros',
+                'tpolicy_modules',
+                'id',
+                $module_id
+            );
+        } else {
+            $module_macros = db_get_value(
+                'macros',
+                'tagente_modulo',
+                'id_agente_modulo',
+                $module_id
+            );
+        }
 
         $macros = [];
         $macros['base64'] = base64_encode($module_macros);
diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js
index b4445e0877..6b697fc2bb 100644
--- a/pandora_console/include/javascript/pandora_modules.js
+++ b/pandora_console/include/javascript/pandora_modules.js
@@ -1011,7 +1011,7 @@ function add_macro_field(macro, row_model_id, type_copy, k) {
   $("#" + row_id).show();
 }
 
-function load_plugin_macros_fields(row_model_id, moduleId = 0) {
+function load_plugin_macros_fields(row_model_id, moduleId = 0, is_policy = 0) {
   // Get plugin macros when selected and load macros fields
   var id_plugin = $("#id_plugin").val();
 
@@ -1024,6 +1024,7 @@ function load_plugin_macros_fields(row_model_id, moduleId = 0) {
     params.push("get_plugin_macros=1");
   }
   params.push("id_plugin=" + id_plugin);
+  params.push("is_policy=" + is_policy);
 
   jQuery.ajax({
     data: params.join("&"),