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 00:54:03 +01:00
parent 8dbb6183ff
commit 85afb069a0
No known key found for this signature in database
GPG Key ID: A81A96D6045F6164
2 changed files with 7 additions and 8 deletions

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);

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);