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-07 08:19:25 +00:00
parent fd840ab59c
commit 81fdd46315

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}";