From df7b18b9bc1d5542deefe4c97b6a8edb87cff72e Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Fri, 2 Feb 2024 15:58:51 +0000 Subject: [PATCH] MDL-80735 reportbuilder: do not render filters form during download this removes unnecessary calculations and also prevents the session mutation --- reportbuilder/classes/external/custom_report_exporter.php | 2 +- reportbuilder/classes/external/system_report_exporter.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/reportbuilder/classes/external/custom_report_exporter.php b/reportbuilder/classes/external/custom_report_exporter.php index b3e9f9fb6c0..18b6b05d21d 100644 --- a/reportbuilder/classes/external/custom_report_exporter.php +++ b/reportbuilder/classes/external/custom_report_exporter.php @@ -153,7 +153,7 @@ class custom_report_exporter extends persistent_exporter { // Generate filters form if report contains any filters. $filterspresent = !empty($report->get_active_filters()); - if ($filterspresent) { + if ($filterspresent && empty($this->download)) { $filtersform = $this->generate_filters_form()->render(); } diff --git a/reportbuilder/classes/external/system_report_exporter.php b/reportbuilder/classes/external/system_report_exporter.php index 4a2e2854bec..919c58cc1c2 100644 --- a/reportbuilder/classes/external/system_report_exporter.php +++ b/reportbuilder/classes/external/system_report_exporter.php @@ -104,12 +104,13 @@ class system_report_exporter extends persistent_exporter { $filterset->add_filter(new integer_filter('reportid', null, [$reportid])); $filterset->add_filter(new string_filter('parameters', null, [$parameters])); - $table = system_report_table::create($reportid, (array) json_decode($parameters, true)); + $params = (array) json_decode($parameters, true); + $table = system_report_table::create($reportid, $params); $table->set_filterset($filterset); // Generate filters form if report uses the default form, and contains any filters. $filterspresent = $source->get_filter_form_default() && !empty($source->get_active_filters()); - if ($filterspresent) { + if ($filterspresent && empty($params['download'])) { $filtersform = new filter(null, null, 'post', '', [], true, [ 'reportid' => $reportid, 'parameters' => $parameters,