From b7562e74b0c97ebb8c3840720447ddd34a383fd5 Mon Sep 17 00:00:00 2001 From: Elke Kreim <elke.kreim@hs-hannover.de> Date: Fri, 7 Feb 2025 17:35:35 +0100 Subject: [PATCH] Replace special characters in filename --- classes/local/exporter.php | 17 +++-------------- export.php | 5 ++--- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/classes/local/exporter.php b/classes/local/exporter.php index acaa32d..3ef3581 100644 --- a/classes/local/exporter.php +++ b/classes/local/exporter.php @@ -37,8 +37,6 @@ class exporter { private int $courseid; /** @var string Identifier for the evaluation of a course. */ private string $code; - /** @var string identifier for the course. */ - private string $codereplacement; /** @var int[] Array of role ids. */ private array $roles; /** @var string Name of the file to download. */ @@ -54,10 +52,9 @@ class exporter { * @param string $codereplacement * @param array $roles */ - public function __construct($courseid=0, $code=null, $codereplacement=null, $roles=[]) { + public function __construct($courseid=0, $code=null, $roles=[]) { $this->courseid = $this->set_courseid($courseid); $this->code = $code; - $this->codereplacement = $codereplacement; $this->roles = $this->set_roles($roles); $this->filename = $this->set_filename(); $this->content = $this->set_content(); @@ -97,14 +94,6 @@ class exporter { return \csv_export_writer::print_array($rows, $delimiter, '"', true); } - private function get_base_filename() { - $base = $this->code; - if (!$base) { - $base = str_replace(',', '-', $this->codereplacement); - } - return $base; - } - /** * Create filename. * @@ -116,8 +105,8 @@ class exporter { */ private function set_filename() { - // Use course shortname if no course code is given. - $filename = $this->get_base_filename(); + // Replace special characters with '-' to create a "clean" filename. + $filename = preg_replace("/[^A-Za-z0-9_-]/", '-', $this->code); // Extend filename with prefix and timestamp. $filename = $this->add_prefix($filename); $filename = $this->add_timestamp($filename); diff --git a/export.php b/export.php index d75c691..b0b3ce5 100644 --- a/export.php +++ b/export.php @@ -62,10 +62,9 @@ if ($mform->is_cancelled()) { redirect($returnurl); } else if ($formdata) { $courseid = $formdata->courseid; - $code = $formdata->coursecode; - $codereplacement = $course->shortname; + $code = $formdata->coursecode ? $formdata->coursecode : $course->shortname; $roles = $formdata->roles; - $exporter = new exporter($courseid, $code, $codereplacement, $roles); + $exporter = new exporter($courseid, $code, $roles); $exporter->send_file(); } else { $mform->set_data($formdata); -- GitLab