MDL-78644 files: more fault tolerant resizing of logos/icons.

If we cannot resize the given file (files such as ICO can't be, for
SVG it makes no sense), then we should just return the original file
as is rather than an error.
This commit is contained in:
Paul Holden
2023-07-05 12:51:36 +01:00
parent b509652427
commit e2fd30a2c5
2 changed files with 7 additions and 8 deletions
+4 -8
View File
@@ -96,20 +96,16 @@ function core_admin_pluginfile($course, $cm, $context, $filearea, $args, $forced
send_file_not_found();
}
// No need for resizing, but if the file should be cached we save it so we can serve it fast next time.
if (empty($maxwidth) && empty($maxheight)) {
// Check whether width/height are specified, and we can resize the image (some types such as ICO cannot be resized).
if (($maxwidth === 0 && $maxheight === 0) ||
!$filedata = $file->resize_image($maxwidth, $maxheight)) {
if ($lifetime) {
file_safe_save_content($file->get_content(), $candidate);
}
send_stored_file($file, $lifetime, 0, false, $options);
}
// Proceed with the resizing.
$filedata = $file->resize_image($maxwidth, $maxheight);
if (!$filedata) {
send_file_not_found();
}
// If we don't want to cached the file, serve now and quit.
if (!$lifetime) {
send_content_uncached($filedata, $filename);
+3
View File
@@ -1141,6 +1141,9 @@ class stored_file {
// Create a new image from the file.
$original = @imagecreatefromstring($content);
if (empty($original)) {
return false;
}
// Generate the resized image.
return resize_image_from_image($original, $imageinfo, $width, $height);