From aee5a86441ff4fa98ae1759170134b15c45738bc Mon Sep 17 00:00:00 2001 From: jsatoh <junichi@rworks.jp> Date: Wed, 20 Oct 2010 04:58:22 +0000 Subject: [PATCH] 2010-10-20 Junichi Satoh <junichi@rworks.jp> * godmode/massive/massive_enable_disable_alerts.php: Improved template selection to be selected more than one. Added agent selection. (It can also be selected more than one.) * godmode/include/functions_alerts.php: Added a argument, $id_agents array, to get_agents_with_alert_template(). It is used to select specific agents in the function. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3426 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 10 + .../massive/massive_enable_disable_alerts.php | 182 +++++++++++++----- pandora_console/include/functions_alerts.php | 8 +- 3 files changed, 144 insertions(+), 56 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 3e9cf88f2b..16d88e8d41 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,13 @@ +2010-10-20 Junichi Satoh <junichi@rworks.jp> + + * godmode/massive/massive_enable_disable_alerts.php: Improved template + selection to be selected more than one. Added agent selection. (It can + also be selected more than one.) + + * godmode/include/functions_alerts.php: Added a argument, $id_agents + array, to get_agents_with_alert_template(). It is used to select + specific agents in the function. + 2010-10-19 Sergio Martin <sergio.martin@artica.es> * include/functions_visual_map.php diff --git a/pandora_console/godmode/massive/massive_enable_disable_alerts.php b/pandora_console/godmode/massive/massive_enable_disable_alerts.php index 11e43d5995..a897b4cbb5 100644 --- a/pandora_console/godmode/massive/massive_enable_disable_alerts.php +++ b/pandora_console/godmode/massive/massive_enable_disable_alerts.php @@ -31,29 +31,42 @@ if (is_ajax ()) { $get_alerts = (bool) get_parameter ('get_alerts'); if ($get_alerts) { - $id_group = (int) get_parameter ('id_group'); - $id_alert_template = (int) get_parameter ('id_alert_template'); - $disabled = (int) get_parameter ('disabled'); + $id_agents = get_parameter ('id_agents'); + $get_templates = (bool) get_parameter ('get_templates'); - $agents_alerts = get_agents_with_alert_template ($id_alert_template, $id_group, - array('order' => 'tagente.nombre, talert_template_modules.disabled', '`talert_template_modules`.disabled' => $disabled), - array ('LEFT(CONCAT(LEFT(tagente.nombre,40), " - ", tagente_modulo.nombre), 85) as agent_agentmodule_name', - 'talert_template_modules.id as template_module_id')); + if ($get_templates) { + if (!is_array($id_agents)) { + echo json_encode (''); + return; + } + $alert_templates = get_agent_alerts_simple ($id_agents); + echo json_encode (index_array ($alert_templates, 'id_alert_template', 'template_name')); + return; + } else { + $id_alert_templates = (array) get_parameter ('id_alert_templates'); + $disabled = (int) get_parameter ('disabled'); - echo json_encode (index_array ($agents_alerts, 'template_module_id', 'agent_agentmodule_name')); - return; + $agents_alerts = get_agents_with_alert_template ($id_alert_templates, false, + array('order' => 'tagente.nombre, talert_template_modules.disabled', '`talert_template_modules`.disabled' => $disabled), + array ('LEFT(CONCAT(LEFT(tagente.nombre,40), " - ", tagente_modulo.nombre), 85) as agent_agentmodule_name', + 'talert_template_modules.id as template_module_id'), $id_agents); + + echo json_encode (index_array ($agents_alerts, 'template_module_id', 'agent_agentmodule_name')); + return; + } } return; } $id_group = (int) get_parameter ('id_group'); +$id_agents = (array) get_parameter ('id_agents'); $action = (string) get_parameter ('action', ''); $result = false; switch($action) { case 'enable_alerts': - $id_alert_template = (int) get_parameter ('id_alert_template_disabled', 0); + $id_alert_templates = (int) get_parameter ('id_alert_template_disabled', 0); $id_disabled_alerts = get_parameter_post ('id_disabled_alerts', array()); foreach($id_disabled_alerts as $id_alert) { $result = set_alerts_agent_module_disable ($id_alert, false); @@ -61,7 +74,7 @@ switch($action) { print_result_message ($result, __('Successfully enabled'), __('Could not be enabled')); break; case 'disable_alerts': - $id_alert_template = (int) get_parameter ('id_alert_template_enabled', 0); + $id_alert_templates = (int) get_parameter ('id_alert_template_enabled', 0); $id_enabled_alerts = get_parameter_post ('id_enabled_alerts', array()); foreach($id_enabled_alerts as $id_alert) { @@ -70,7 +83,7 @@ switch($action) { print_result_message ($result, __('Successfully disabled'), __('Could not be disabled')); break; default: - $id_alert_template = (int) get_parameter ('id_alert_template', 0); + $id_alert_templates = (int) get_parameter ('id_alert_template', 0); break; } @@ -88,41 +101,49 @@ $table->size[1] = '85%'; $table->data = array (); -$templates = get_alert_templates (false, array ('id', 'name')); $table->data[0][0] = '<form method="post" action="index.php?sec=gmassive&sec2=godmode/massive/massive_operations&tab=massive_alerts&option=enable_disable_alerts&action=disable_alerts" onsubmit="if (! confirm(\''.__('Are you sure?').'\')) return false;">'; -$table->data[0][0] .= print_input_hidden('id_alert_template_enabled', $id_alert_template, true); -$table->data[0][0] .= __('Alert template'); -$table->data[0][1] = print_select (index_array ($templates, 'id', 'name'), - 'id_alert_template', $id_alert_template, false, __('Select'), 0, true); - -$table->data[1][0] = __('Group'); -$table->data[1][1] = print_select_groups(false, "AR", true, 'id_group', $id_group, - '', '', '', true, false, true, '', $id_alert_template == 0); +$table->data[0][0] .= print_input_hidden('id_alert_template_enabled', $id_alert_templates, true); -$table->data[2][0] = __('Enabled alerts').print_help_tip(__('Format').":<br> ".__('Agent')." - ".__('Module'), true); -$table->data[2][0] .= '<span id="alerts_loading" class="invisible">'; +$table->data[0][0] .= __('Group'); +$table->data[0][1] = print_select_groups(false, "AR", true, 'id_group', $id_group, '', '', '', true); + +$table->data[1][0] = __('Agents'); +$table->data[1][0] .= '<span id="agent_loading" class="invisible">'; +$table->data[1][0] .= '<img src="images/spinner.png" />'; +$table->data[1][0] .= '</span>'; +$table->data[1][1] = print_select (get_group_agents ($id_group, false, "none"), + 'id_agents[]', 0, false, '', '', true, true); + +$table->data[2][0] = __('Alert template'); +$table->data[2][0] .= '<span id="template_loading" class="invisible">'; $table->data[2][0] .= '<img src="images/spinner.png" />'; $table->data[2][0] .= '</span>'; -$agents_alerts = get_agents_with_alert_template ($id_alert_template, $id_group, +$table->data[2][1] = print_select ('', 'id_alert_templates[]', '', '', '', '', true, true, true, '', true); + +$table->data[3][0] = __('Enabled alerts').print_help_tip(__('Format').":<br> ".__('Agent')." - ".__('Module'), true); +$table->data[3][0] .= '<span id="alerts_loading" class="invisible">'; +$table->data[3][0] .= '<img src="images/spinner.png" />'; +$table->data[3][0] .= '</span>'; +$agents_alerts = get_agents_with_alert_template ($id_alert_templates, $id_group, false, array ('tagente.nombre', 'tagente.id_agente')); -$table->data[2][1] = print_select (index_array ($agents_alerts, 'id_agente', 'nombre'), - 'id_enabled_alerts[]', '', '', '', '', true, true, true, '', $id_alert_template == 0); +$table->data[3][1] = print_select (index_array ($agents_alerts, 'id_agente', 'nombre'), + 'id_enabled_alerts[]', '', '', '', '', true, true, true, '', $id_alert_templates == 0); -$table->data[3][0] = __('Action'); +$table->data[4][0] = __('Action'); -$table->data[3][1] = "<table border='0' width='100%'><tr><td>".print_input_image ('disable_alerts', 'images/darrowdown.png', 1, 'margin-left: 150px;', true, array ('title' => __('Disable selected alerts')))."</td><td>"; -$table->data[3][1] .= '</form>'; -$table->data[3][1] .= '<form method="post" action="index.php?sec=gmassive&sec2=godmode/massive/massive_operations&tab=massive_alerts&option=enable_disable_alerts&action=enable_alerts" onsubmit="if (! confirm(\''.__('Are you sure?').'\')) return false;">'; -$table->data[3][1] .= print_input_hidden('id_alert_template_disabled', $id_alert_template, true); -$table->data[3][1] .= print_input_image ('enable_alerts', 'images/darrowup.png', 1, 'margin-left: 200px;', true, array ('title' => __('Enable selected alerts')))."</td></tr></table>"; - -$table->data[4][0] = __('Disabled alerts').print_help_tip(__('Format').":<br> ".__('Agent')." - ".__('Module'), true); -$table->data[4][0] .= '<span id="alerts_loading2" class="invisible">'; -$table->data[4][0] .= '<img src="images/spinner.png" />'; -$table->data[4][0] .= '</span>'; -$table->data[4][1] = print_select (index_array ($agents_alerts, 'id_agente2', 'nombre'), - 'id_disabled_alerts[]', '', '', '', '', true, true, true, '', $id_alert_template == 0); +$table->data[4][1] = "<table border='0' width='100%'><tr><td>".print_input_image ('disable_alerts', 'images/darrowdown.png', 1, 'margin-left: 150px;', true, array ('title' => __('Disable selected alerts')))."</td><td>"; $table->data[4][1] .= '</form>'; +$table->data[4][1] .= '<form method="post" action="index.php?sec=gmassive&sec2=godmode/massive/massive_operations&tab=massive_alerts&option=enable_disable_alerts&action=enable_alerts" onsubmit="if (! confirm(\''.__('Are you sure?').'\')) return false;">'; +$table->data[4][1] .= print_input_hidden('id_alert_template_disabled', $id_alert_templates, true); +$table->data[4][1] .= print_input_image ('enable_alerts', 'images/darrowup.png', 1, 'margin-left: 200px;', true, array ('title' => __('Enable selected alerts')))."</td></tr></table>"; + +$table->data[5][0] = __('Disabled alerts').print_help_tip(__('Format').":<br> ".__('Agent')." - ".__('Module'), true); +$table->data[5][0] .= '<span id="alerts_loading2" class="invisible">'; +$table->data[5][0] .= '<img src="images/spinner.png" />'; +$table->data[5][0] .= '</span>'; +$table->data[5][1] = print_select (index_array ($agents_alerts, 'id_agente2', 'nombre'), + 'id_disabled_alerts[]', '', '', '', '', true, true, true, '', $id_alert_templates == 0); +$table->data[5][1] .= '</form>'; print_table ($table); @@ -135,23 +156,70 @@ require_jquery_file ('pandora.controls'); <script type="text/javascript"> /* <![CDATA[ */ $(document).ready (function () { - update_alerts(); + clear_alert_fields(); + + $("#id_group").pandoraSelectGroupAgent ({ + agentSelect: "select#id_agents", + callbackPost: function () { + clear_alert_fields(); + } + }); + + $("#id_agents").change (function () { + clear_alert_fields(); + update_alert_templates(); + }); - $("#id_alert_template").change (function () { + $("#id_alert_templates").change (function () { if (this.value != 0) { $("#id_enabled_alerts").enable (); $("#id_disabled_alerts").enable (); - $("#id_group").enable ().change (); } else { - $("#id_group, #id_enabled_alerts").disable (); - $("#id_group, #id_disabled_alerts").disable (); + $("#id_enabled_alerts").disable (); + $("#id_disabled_alerts").disable (); } - $("#hidden-id_alert_template_enabled").attr("value",$("#id_alert_template").attr("value")); - $("#hidden-id_alert_template_disable").val($("#id_alert_template").attr("value")); + update_alerts(); }); + function update_alert_templates() { + var idAgents = Array(); + jQuery.each ($("#id_agents option:selected"), function (i, val) { + idAgents.push($(val).val()); + }); + $("#template_loading").show(); + + var $select_template = $("#id_alert_templates").disable (); + $("option", $select_template).remove (); + + jQuery.post ("ajax.php", + {"page" : "godmode/massive/massive_enable_disable_alerts", + "get_alerts" : 1, + "get_templates" : 1, + "id_agents[]" : idAgents + }, + function (data, status) { + options = ""; + jQuery.each (data, function (id, value) { + options += "<option value=\""+id+"\">"+value+"</option>"; + }); + $("#id_alert_templates").append (options); + $("#template_loading").hide (); + $select_template.enable (); + }, + "json" + ); + } function update_alerts() { + var idAgents = Array(); + jQuery.each ($("#id_agents option:selected"), function (i, val) { + idAgents.push($(val).val()); + }); + var idAlertTemplates = Array(); + jQuery.each ($("#id_alert_templates option:selected"), function (i, val) { + idAlertTemplates.push($(val).val()); + }); + var $select = $("#id_enabled_alerts").disable (); var $select2 = $("#id_disabled_alerts").disable (); $("#alerts_loading").show (); @@ -162,8 +230,9 @@ $(document).ready (function () { jQuery.post ("ajax.php", {"page" : "godmode/massive/massive_enable_disable_alerts", "get_alerts" : 1, - "id_group" : $("#id_group").attr("value"), - "id_alert_template" : $("#id_alert_template").attr("value"), + "get_templates" : 0, + "id_agents[]" : idAgents, + "id_alert_templates[]" : idAlertTemplates, "disabled" : 0 }, function (data, status) { @@ -181,8 +250,9 @@ $(document).ready (function () { jQuery.post ("ajax.php", {"page" : "godmode/massive/massive_enable_disable_alerts", "get_alerts" : 1, - "id_group" : $("#id_group").attr("value"), - "id_alert_template" : $("#id_alert_template").attr("value"), + "get_templates" : 0, + "id_agents[]" : idAgents, + "id_alert_templates[]" : idAlertTemplates, "disabled" : 1 }, function (data, status) { @@ -197,10 +267,16 @@ $(document).ready (function () { "json" ); } + + function clear_alert_fields() { + var $select_template = $("#id_alert_templates").disable (); + var $select_enabled = $("#id_enabled_alerts").disable (); + var $select_disabled = $("#id_disabled_alerts").disable (); + $("option", $select_template).remove (); + $("option", $select_enabled).remove (); + $("option", $select_disabled).remove (); + } - $("#id_group").change (function () { - update_alerts(); - }); }); /* ]]> */ </script> diff --git a/pandora_console/include/functions_alerts.php b/pandora_console/include/functions_alerts.php index 0fe8b32037..eac1252d29 100644 --- a/pandora_console/include/functions_alerts.php +++ b/pandora_console/include/functions_alerts.php @@ -900,7 +900,7 @@ function delete_alert_compound ($id_alert_compound) { array ('id' => $id_alert_compound))) !== false; } -function get_agents_with_alert_template ($id_alert_template, $id_group, $filter = false, $fields = false) { +function get_agents_with_alert_template ($id_alert_template, $id_group, $filter = false, $fields = false, $id_agents = false) { if (empty ($id_alert_template)) return false; if (! is_array ($filter)) @@ -908,11 +908,13 @@ function get_agents_with_alert_template ($id_alert_template, $id_group, $filter $filter[] = 'tagente_modulo.id_agente_modulo = talert_template_modules.id_agent_module'; $filter[] = 'tagente_modulo.id_agente = tagente.id_agente'; $filter['id_alert_template'] = $id_alert_template; - $filter['`tagente`.id_agente'] = array_keys (get_group_agents ($id_group, false, "none")); + if (empty ($id_agents)) + $filter['`tagente`.id_agente'] = array_keys (get_group_agents ($id_group, false, "none")); + else + $filter['`tagente`.id_agente'] = $id_agents; return get_db_all_rows_filter ('tagente, tagente_modulo, talert_template_modules', $filter, $fields); } - ?>