diff --git a/plugins/StoreRemoteMedia/StoreRemoteMedia.php b/plugins/StoreRemoteMedia/StoreRemoteMedia.php index 85f50f6bcf..67f81f25ff 100644 --- a/plugins/StoreRemoteMedia/StoreRemoteMedia.php +++ b/plugins/StoreRemoteMedia/StoreRemoteMedia.php @@ -160,6 +160,7 @@ class StoreRemoteMedia extends Plugin $attachment = GSFile::storeFileAsAttachment($temp_file); // Relate the link with the attachment + // TODO: Create a function that gets the title from content disposition or URL when such header isn't available DB::persist(AttachmentToLink::create([ 'link_id' => $link->getId(), 'attachment_id' => $attachment->getId(), diff --git a/src/Entity/AttachmentThumbnail.php b/src/Entity/AttachmentThumbnail.php index 6ff83d09c3..a4bc914a34 100644 --- a/src/Entity/AttachmentThumbnail.php +++ b/src/Entity/AttachmentThumbnail.php @@ -152,7 +152,7 @@ class AttachmentThumbnail extends Entity * * @return mixed */ - public static function getOrCreate(Attachment $attachment, ?string $size = null, bool $crop = false) + public static function getOrCreate(Attachment $attachment, ?string $size = null, bool $crop = false): ?self { $size = $size ?? Common::config('thumbnail', 'default_size'); $size_int = match ($size) { @@ -171,7 +171,13 @@ class AttachmentThumbnail extends Entity } [$predicted_width, $predicted_height] = self::predictScalingValues($attachment->getWidth(), $attachment->getHeight(), $size, $crop); if (!file_exists($attachment->getPath())) { - throw new NotStoredLocallyException(); + // Before we quit, check if there's any other thumb + $alternative_thumbs = DB::findBy('attachment_thumbnail', ['attachment_id' => $attachment->getId()]); + if ($alternative_thumbs === []) { + throw new NotStoredLocallyException(); + } else { + return $alternative_thumbs[0]; + } } $thumbnail = self::create(['attachment_id' => $attachment->getId()]); $mimetype = $attachment->getMimetype();