mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 08:55:15 +02:00
MDL-55957 workshop: Fix the embedded files serving
There was a bug with serving the files from the areas instructauthors, instructreviewers and conclusion. These three areas should not use the itemid in the plugininfo URLs. But they did use 0 as the itemid which broke the file previews when browsing via server files repository. The first part of the patch fixes all relevant calls to file_rewrite_pluginfile_urls() so that null is now properly used instead of zero. The second part of the fix is that we no longer delete the first $args element in the workshop_pluginfile() function - the itemid is not supposed to appear there now. The last part of the patch is that instead of repeating the same code block copy&pasted for each file area in workshop_pluginfile(), we now have a single block covering them all.
This commit is contained in:
parent
0344082208
commit
e46aec4c45
@ -265,7 +265,7 @@ echo $output->render($workshop->prepare_submission($submission, has_capability('
|
||||
// for evaluating the assessment
|
||||
if (trim($workshop->instructreviewers)) {
|
||||
$instructions = file_rewrite_pluginfile_urls($workshop->instructreviewers, 'pluginfile.php', $PAGE->context->id,
|
||||
'mod_workshop', 'instructreviewers', 0, workshop::instruction_editors_options($PAGE->context));
|
||||
'mod_workshop', 'instructreviewers', null, workshop::instruction_editors_options($PAGE->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-instructreviewers', get_string('instructreviewers', 'workshop'));
|
||||
echo $output->box(format_text($instructions, $workshop->instructreviewersformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
|
||||
print_collapsible_region_end();
|
||||
|
@ -143,7 +143,7 @@ echo $output->render($workshop->prepare_example_submission(($example)));
|
||||
// for evaluating the assessment
|
||||
if (trim($workshop->instructreviewers)) {
|
||||
$instructions = file_rewrite_pluginfile_urls($workshop->instructreviewers, 'pluginfile.php', $PAGE->context->id,
|
||||
'mod_workshop', 'instructreviewers', 0, workshop::instruction_editors_options($PAGE->context));
|
||||
'mod_workshop', 'instructreviewers', null, workshop::instruction_editors_options($PAGE->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-instructreviewers', get_string('instructreviewers', 'workshop'));
|
||||
echo $output->box(format_text($instructions, $workshop->instructreviewersformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
|
||||
print_collapsible_region_end();
|
||||
|
@ -179,7 +179,7 @@ echo $output->heading(format_string($workshop->name), 2);
|
||||
// while reading the submitted answer
|
||||
if (trim($workshop->instructauthors)) {
|
||||
$instructions = file_rewrite_pluginfile_urls($workshop->instructauthors, 'pluginfile.php', $PAGE->context->id,
|
||||
'mod_workshop', 'instructauthors', 0, workshop::instruction_editors_options($PAGE->context));
|
||||
'mod_workshop', 'instructauthors', null, workshop::instruction_editors_options($PAGE->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-instructauthors', get_string('instructauthors', 'workshop'));
|
||||
echo $output->box(format_text($instructions, $workshop->instructauthorsformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
|
||||
print_collapsible_region_end();
|
||||
|
@ -1318,8 +1318,8 @@ function workshop_pluginfile($course, $cm, $context, $filearea, array $args, $fo
|
||||
|
||||
require_login($course, true, $cm);
|
||||
|
||||
if ($filearea === 'instructauthors') {
|
||||
array_shift($args); // itemid is ignored here
|
||||
if ($filearea === 'instructauthors' or $filearea === 'instructreviewers' or $filearea === 'conclusion') {
|
||||
// The $args are supposed to contain just the path, not the item id.
|
||||
$relativepath = implode('/', $args);
|
||||
$fullpath = "/$context->id/mod_workshop/$filearea/0/$relativepath";
|
||||
|
||||
@ -1327,34 +1327,6 @@ function workshop_pluginfile($course, $cm, $context, $filearea, array $args, $fo
|
||||
if (!$file = $fs->get_file_by_hash(sha1($fullpath)) or $file->is_directory()) {
|
||||
send_file_not_found();
|
||||
}
|
||||
|
||||
// finally send the file
|
||||
send_stored_file($file, null, 0, $forcedownload, $options);
|
||||
|
||||
} else if ($filearea === 'instructreviewers') {
|
||||
array_shift($args); // itemid is ignored here
|
||||
$relativepath = implode('/', $args);
|
||||
$fullpath = "/$context->id/mod_workshop/$filearea/0/$relativepath";
|
||||
|
||||
$fs = get_file_storage();
|
||||
if (!$file = $fs->get_file_by_hash(sha1($fullpath)) or $file->is_directory()) {
|
||||
send_file_not_found();
|
||||
}
|
||||
|
||||
// finally send the file
|
||||
send_stored_file($file, null, 0, $forcedownload, $options);
|
||||
|
||||
} else if ($filearea === 'conclusion') {
|
||||
array_shift($args); // itemid is ignored here
|
||||
$relativepath = implode('/', $args);
|
||||
$fullpath = "/$context->id/mod_workshop/$filearea/0/$relativepath";
|
||||
|
||||
$fs = get_file_storage();
|
||||
if (!$file = $fs->get_file_by_hash(sha1($fullpath)) or $file->is_directory()) {
|
||||
send_file_not_found();
|
||||
}
|
||||
|
||||
// finally send the file
|
||||
send_stored_file($file, null, 0, $forcedownload, $options);
|
||||
|
||||
} else if ($filearea === 'submission_content' or $filearea === 'submission_attachment') {
|
||||
|
@ -321,7 +321,7 @@ echo $output->heading(get_string('mysubmission', 'workshop'), 3);
|
||||
// while reading the submitted answer
|
||||
if (trim($workshop->instructauthors)) {
|
||||
$instructions = file_rewrite_pluginfile_urls($workshop->instructauthors, 'pluginfile.php', $PAGE->context->id,
|
||||
'mod_workshop', 'instructauthors', 0, workshop::instruction_editors_options($PAGE->context));
|
||||
'mod_workshop', 'instructauthors', null, workshop::instruction_editors_options($PAGE->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-instructauthors', get_string('instructauthors', 'workshop'));
|
||||
echo $output->box(format_text($instructions, $workshop->instructauthorsformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
|
||||
print_collapsible_region_end();
|
||||
|
@ -148,7 +148,7 @@ case workshop::PHASE_SETUP:
|
||||
case workshop::PHASE_SUBMISSION:
|
||||
if (trim($workshop->instructauthors)) {
|
||||
$instructions = file_rewrite_pluginfile_urls($workshop->instructauthors, 'pluginfile.php', $PAGE->context->id,
|
||||
'mod_workshop', 'instructauthors', 0, workshop::instruction_editors_options($PAGE->context));
|
||||
'mod_workshop', 'instructauthors', null, workshop::instruction_editors_options($PAGE->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-instructauthors', get_string('instructauthors', 'workshop'));
|
||||
echo $output->box(format_text($instructions, $workshop->instructauthorsformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
|
||||
print_collapsible_region_end();
|
||||
@ -333,7 +333,7 @@ case workshop::PHASE_ASSESSMENT:
|
||||
}
|
||||
if (trim($workshop->instructreviewers)) {
|
||||
$instructions = file_rewrite_pluginfile_urls($workshop->instructreviewers, 'pluginfile.php', $PAGE->context->id,
|
||||
'mod_workshop', 'instructreviewers', 0, workshop::instruction_editors_options($PAGE->context));
|
||||
'mod_workshop', 'instructreviewers', null, workshop::instruction_editors_options($PAGE->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-instructreviewers', get_string('instructreviewers', 'workshop'));
|
||||
echo $output->box(format_text($instructions, $workshop->instructreviewersformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
|
||||
print_collapsible_region_end();
|
||||
@ -554,7 +554,7 @@ case workshop::PHASE_EVALUATION:
|
||||
case workshop::PHASE_CLOSED:
|
||||
if (trim($workshop->conclusion)) {
|
||||
$conclusion = file_rewrite_pluginfile_urls($workshop->conclusion, 'pluginfile.php', $workshop->context->id,
|
||||
'mod_workshop', 'conclusion', 0, workshop::instruction_editors_options($workshop->context));
|
||||
'mod_workshop', 'conclusion', null, workshop::instruction_editors_options($workshop->context));
|
||||
print_collapsible_region_start('', 'workshop-viewlet-conclusion', get_string('conclusion', 'workshop'));
|
||||
echo $output->box(format_text($conclusion, $workshop->conclusionformat, array('overflowdiv'=>true)), array('generalbox', 'conclusion'));
|
||||
print_collapsible_region_end();
|
||||
|
Loading…
x
Reference in New Issue
Block a user