diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 8700bce7fb..368e02c028 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -1009,15 +1009,31 @@ function events_get_all( if (!$user_is_admin) { // XXX: Confirm there's no extra grants unhandled!. + $can_manage = '0 as user_can_manage'; + if (!empty($EM_groups)) { + $can_manage = sprintf( + '(tbase.id_grupo IN (%s)) as user_can_manage', + join(', ', array_keys($EM_groups)) + ); + } + + $can_write = '0 as user_can_write'; + if (!empty($EW_groups)) { + $can_write = sprintf( + '(tbase.id_grupo IN (%s)) as user_can_write', + join(', ', array_keys($EW_groups)) + ); + } + $sql = sprintf( 'SELECT tbase.*, - (tbase.id_grupo IN (%s)) as user_can_manage, - (tbase.id_grupo IN (%s)) as user_can_write + %s, + %s FROM (', - join(', ', array_keys($EM_groups)), - join(', ', array_keys($EW_groups)) + $can_manage, + $can_write ).$sql.') tbase'; } else { $sql = 'SELECT diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index dda9fa3f0e..9803666c08 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -3245,7 +3245,8 @@ function ui_print_datatable(array $parameters) '; // Order. - $output = $filter.$extra.$table.$js; + $err_msg = '
'; + $output = $err_msg.$filter.$extra.$table.$js; ui_require_css_file('datatables.min', 'include/styles/js/'); ui_require_javascript_file('datatables.min'); diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index 4798927536..dee5498015 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -668,7 +668,7 @@ function show_event_response_command_dialog(id, response, total_checked) { }); } -var processing = 0; +var processed = 0; function update_event(table, id_evento, type, row) { var inputs = $("#events_form :input"); var values = {}; @@ -678,7 +678,6 @@ function update_event(table, id_evento, type, row) { }); var t1 = new Date(); - processing += 1; // Update events matching current filters and id_evento selected. $.ajax({ type: "POST", @@ -691,24 +690,23 @@ function update_event(table, id_evento, type, row) { id_evento: id_evento, filter: values }, - success: function() { + success: function(d) { + processed += 1; var t2 = new Date(); var diff_g = t2.getTime() - t1.getTime(); var diff_s = diff_g / 1000; - - // If operation takes less than 2 seconds, redraw. - processing -= 1; - if (diff_s < 2) { - redraw = true; - } - if (redraw) { - if (processing == 0) { - table.draw(false); + if (processed >= $(".chk_val:checked").length) { + // If operation takes less than 2 seconds, redraw. + if (diff_s < 2) { + redraw = true; + } + if (redraw) { + table.draw(false); + } else { + $(row) + .closest("tr") + .remove(); } - } else { - $(row) - .closest("tr") - .remove(); } } }); @@ -731,14 +729,22 @@ function delete_event(table, id_evento, row) { // Imported from old files. function execute_event_response(event_list_btn) { + processed = 0; $("#max_custom_event_resp_msg").hide(); $("#max_custom_selected").hide(); var response_id = $("select[name=response_id]").val(); + var total_checked = $(".chk_val:checked").length; + + // Check select an event. + if (total_checked == 0) { + $("#max_custom_selected").show(); + return; + } + if (!isNaN(response_id)) { // It is a custom response - var response = get_response(response_id); // If cannot get response abort it @@ -746,16 +752,8 @@ function execute_event_response(event_list_btn) { return; } - var total_checked = $(".chk_val:checked").length; - - // Check select an event. - if (total_checked == 0) { - $("#max_custom_selected").show(); - return; - } - // Limit number of events to apply custom responses - // to for performance reasons. + // due performance reasons. if (total_checked > $("#max_execution_event_response").val()) { $("#max_custom_event_resp_msg").show(); return; @@ -801,30 +799,32 @@ function execute_event_response(event_list_btn) { } } else { // It is not a custom response + var delay = 5000; + var $i = 0; switch (response_id) { case "in_progress_selected": - $(".chk_val").each(function() { - if ($(this).is(":checked")) { - in_process_event(dt_events, $(this).val(), this.parentElement); - } + $(".chk_val:checked").each(function() { + setTimeout( + in_process_event(dt_events, $(this).val(), this.parentElement), + total_checked * delay * $i++ + ); }); - dt_events.draw(false); break; case "validate_selected": - $(".chk_val").each(function() { - if ($(this).is(":checked")) { - validate_event(dt_events, $(this).val(), this.parentElement); - } + $(".chk_val:checked").each(function() { + setTimeout( + validate_event(dt_events, $(this).val(), this.parentElement), + total_checked * delay * $i++ + ); }); - dt_events.draw(false); break; case "delete_selected": - $(".chk_val").each(function() { - if ($(this).is(":checked")) { - delete_event(dt_events, $(this).val(), this.parentElement); - } + $(".chk_val:checked").each(function() { + setTimeout( + delete_event(dt_events, $(this).val(), this.parentElement), + total_checked * delay * $i++ + ); }); - dt_events.draw(false); break; } } @@ -839,28 +839,20 @@ function check_massive_response_event( var counter = 0; var end = 0; - $(".chk_val").each(function() { - if ($(this).is(":checked")) { - var event_id = $(this).val(); - var server_id = $("#hidden-server_id_" + event_id).val(); - response["target"] = get_response_target( - event_id, - response_id, - server_id, - response_command - ); + $(".chk_val:checked").each(function() { + var event_id = $(this).val(); + var server_id = $("#hidden-server_id_" + event_id).val(); + response["target"] = get_response_target( + event_id, + response_id, + server_id, + response_command + ); - if (total_checked - 1 === counter) end = 1; + if (total_checked - 1 === counter) end = 1; - show_massive_response_dialog( - event_id, - response_id, - response, - counter, - end - ); + show_massive_response_dialog(event_id, response_id, response, counter, end); - counter++; - } + counter++; }); } diff --git a/pandora_console/operation/events/event_statistics.php b/pandora_console/operation/events/event_statistics.php index 437ec0f47c..a4a5b1632a 100644 --- a/pandora_console/operation/events/event_statistics.php +++ b/pandora_console/operation/events/event_statistics.php @@ -1,30 +1,48 @@ '; diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index 8fa3963d6a..f8e53ab7d1 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -93,7 +93,7 @@ $text_agent = get_parameter('filter[text_agent]'); $id_agent = get_parameter('filter[id_agent]'); $id_agent_module = get_parameter('filter[id_agent_module]'); $pagination = get_parameter('filter[pagination]'); -$event_view_hr = get_parameter('filter[event_view_hr]', 8); +$event_view_hr = get_parameter('filter[event_view_hr]', $config['event_view_hr']); $id_user_ack = get_parameter('filter[id_user_ack]'); $group_rep = get_parameter('filter[group_rep]', 1); $tag_with = get_parameter('filter[tag_with]', []); @@ -1034,6 +1034,13 @@ $filter .= ui_toggle( ); try { + $checkbox_all = html_print_checkbox( + 'all_validate_box', + 1, + false, + true + ); + $default_fields = [ 'evento', 'id_evento', @@ -1070,7 +1077,7 @@ try { 'class' => 'action_buttons w120px', ],[ 'text' => 'm', - 'extra' => "", + 'extra' => $checkbox_all, 'class' => 'w20px', ], ]; @@ -1090,7 +1097,7 @@ try { 'class' => 'action_buttons w120px', ],[ 'text' => 'm', - 'extra' => "", + 'extra' => $checkbox_all, 'class' => 'w20px no-text-imp', ], ] @@ -1298,7 +1305,6 @@ html_print_input_hidden( echo ""; echo ""; echo ""; -echo ""; // Load filter div for dialog. echo '';