MDL-70585 course: deeper clean of path names in course export.

This fixes an issue on those systems that don't fully support unicode
characters within zip structures, which subsequently led to broken
links when browsing downloaded course content.
This commit is contained in:
Paul Holden
2021-01-22 08:15:32 +00:00
parent 2477b04d12
commit 52bc8499aa
+6 -3
View File
@@ -424,11 +424,14 @@ class zipwriter {
* @return string
*/
protected function get_context_folder_name(context $context): string {
// Replace spaces with underscores, or they will be removed completely when cleaning.
$contextname = str_replace(' ', '_', $context->get_context_name());
// Clean the context name of all but basic characters, as some systems don't support unicode within zip structure.
$shortenedname = shorten_text(
clean_param($context->get_context_name(), PARAM_FILE),
clean_param($contextname, PARAM_SAFEDIR),
self::MAX_CONTEXT_NAME_LENGTH,
true,
json_decode('"' . '\u2026' . '"')
true
);
return "{$shortenedname}_.{$context->id}";