MDL-73013 calendar: fix serving of files added to category events.

This commit is contained in:
Paul Holden 2021-11-08 21:24:19 +00:00
parent 941a29925e
commit 5215a02444

View File

@ -4561,6 +4561,40 @@ function file_pluginfile($relativepath, $forcedownload, $preview = null, $offlin
\core\session\manager::write_close(); // Unlock session during file serving.
send_stored_file($file, 0, 0, true, $sendfileoptions);
} else if ($filearea === 'event_description' and $context->contextlevel == CONTEXT_COURSECAT) {
if ($CFG->forcelogin) {
require_login();
}
// Get category, this will also validate access.
$category = core_course_category::get($context->instanceid);
// Get the event ID from the args array, load event.
$eventid = array_shift($args);
$event = $DB->get_record('event', [
'id' => (int) $eventid,
'eventtype' => 'category',
'categoryid' => $category->id,
]);
if (!$event) {
send_file_not_found();
}
// Retrieve file from storage, and serve.
$filename = array_pop($args);
$filepath = $args ? '/' . implode('/', $args) .'/' : '/';
if (!$file = $fs->get_file($context->id, $component, $filearea, $eventid, $filepath, $filename) or
$file->is_directory()) {
send_file_not_found();
}
// Unlock session during file serving.
\core\session\manager::write_close();
send_stored_file($file, HOURSECS, 0, $forcedownload, $sendfileoptions);
} else if ($filearea === 'event_description' and $context->contextlevel == CONTEXT_COURSE) {
// Respect forcelogin and require login unless this is the site.... it probably