diff --git a/actions/avatarsettings.php b/actions/avatarsettings.php index 4279a3c99f..2979a99343 100644 --- a/actions/avatarsettings.php +++ b/actions/avatarsettings.php @@ -359,7 +359,7 @@ class AvatarsettingsAction extends SettingsAction 'x' => $dest_x, 'y' => $dest_y, 'w' => $dest_w, 'h' => $dest_h,]; - $imagefile = new ImageFile(null, $filedata['filepath']); + $imagefile = new ImageFile(-1, $filedata['filepath']); $filename = Avatar::filename( $this->scoped->getID(), image_type_to_extension($imagefile->preferredType()), diff --git a/lib/media/imagefile.php b/lib/media/imagefile.php index 821a0776d2..824a9bc748 100644 --- a/lib/media/imagefile.php +++ b/lib/media/imagefile.php @@ -55,7 +55,21 @@ class ImageFile extends MediaFile public $animated; // Animated image? (has more than 1 frame). null means untested public $mimetype; // The _ImageFile_ mimetype, _not_ the originating File object - public function __construct($id, string $filepath) + /** + * ImageFile constructor. + * + * @param int|null $id The DB id of the file. Int if known, null if not. + * If null, it searches for it. If -1, it skips all DB + * interactions (useful for temporary objects) + * @param string $filepath The path of the file this media refers to. Required + * @param string|null $filehash The hash of the file, if known. Optional + * + * @throws ClientException + * @throws NoResultException + * @throws ServerException + * @throws UnsupportedMediaException + */ + public function __construct(?int $id = null, string $filepath, ?string $filehash = null) { $old_limit = ini_set('memory_limit', common_config('attachments', 'memory_limit')); @@ -74,7 +88,14 @@ class ImageFile extends MediaFile } return false; }; - if (!(($cmp($this, IMAGETYPE_GIF) && function_exists('imagecreatefromgif')) || ($cmp($this, IMAGETYPE_JPEG) && function_exists('imagecreatefromjpeg')) || ($cmp($this, IMAGETYPE_BMP) && function_exists('imagecreatefrombmp')) || ($cmp($this, IMAGETYPE_WBMP) && function_exists('imagecreatefromwbmp')) || ($cmp($this, IMAGETYPE_XBM) && function_exists('imagecreatefromxbm')) || ($cmp($this, IMAGETYPE_PNG) && function_exists('imagecreatefrompng')))) { + if (!(($cmp($this, IMAGETYPE_GIF) && function_exists('imagecreatefromgif')) || + ($cmp($this, IMAGETYPE_JPEG) && function_exists('imagecreatefromjpeg')) || + ($cmp($this, IMAGETYPE_BMP) && function_exists('imagecreatefrombmp')) || + ($cmp($this, IMAGETYPE_WBMP) && function_exists('imagecreatefromwbmp')) || + ($cmp($this, IMAGETYPE_XBM) && function_exists('imagecreatefromxbm')) || + ($cmp($this, IMAGETYPE_PNG) && function_exists('imagecreatefrompng')) + ) + ) { common_debug("Mimetype '{$this->mimetype}' was not recognized as a supported format"); // TRANS: Exception thrown when trying to upload an unsupported image file format. throw new UnsupportedMediaException(_m('Unsupported image format.'), $this->filepath); @@ -86,7 +107,7 @@ class ImageFile extends MediaFile parent::__construct( $filepath, $this->mimetype, - null /* filehash, MediaFile will calculate it */, + $filehash, $id ); @@ -123,7 +144,11 @@ class ImageFile extends MediaFile /** * Create a thumbnail from a file object * + * @param File $file * @return ImageFile + * @throws FileNotFoundException + * @throws UnsupportedMediaException + * @throws UseFileAsThumbnailException */ public static function fromFileObject(File $file) { diff --git a/lib/media/mediafile.php b/lib/media/mediafile.php index 224de175be..f9ba1656b4 100644 --- a/lib/media/mediafile.php +++ b/lib/media/mediafile.php @@ -44,10 +44,12 @@ class MediaFile public $mimetype; /** + * MediaFile constructor. + * * @param string $filepath The path of the file this media refers to. Required * @param string $mimetype The mimetype of the file. Required - * @param string $filehash The hash of the file, if known. Optional - * @param null|int $id The DB id of the file. Int if known, null if not. + * @param string|null $filehash The hash of the file, if known. Optional + * @param int|null $id The DB id of the file. Int if known, null if not. * If null, it searches for it. If -1, it skips all DB * interactions (useful for temporary objects) * @@ -55,7 +57,7 @@ class MediaFile * @throws NoResultException * @throws ServerException */ - public function __construct(string $filepath, string $mimetype, $filehash = null, $id = null) + public function __construct(string $filepath, string $mimetype, ?string $filehash = null, ?int $id = null) { $this->filepath = $filepath; $this->filename = basename($this->filepath);