From: Hypolite Petovan Date: Wed, 23 Nov 2022 16:00:15 +0000 (-0500) Subject: Ensure $attachment has a width and a height when it's an image in Mastodon\Attachment X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=7c6d54c98903a2a8a77fd32411041e61036f1d1d;p=friendica.git Ensure $attachment has a width and a height when it's an image in Mastodon\Attachment - Address https://github.com/friendica/friendica/issues/11993#issuecomment-1323274513 --- diff --git a/src/Factory/Api/Mastodon/Attachment.php b/src/Factory/Api/Mastodon/Attachment.php index 5a87aeed95..accebe3433 100644 --- a/src/Factory/Api/Mastodon/Attachment.php +++ b/src/Factory/Api/Mastodon/Attachment.php @@ -94,12 +94,17 @@ class Attachment extends BaseFactory */ public function createFromPhoto(int $id): array { - $photo = Photo::selectFirst(['resource-id', 'uid', 'id', 'title', 'type'], ['id' => $id]); + $photo = Photo::selectFirst(['resource-id', 'uid', 'id', 'title', 'type', 'width', 'height'], ['id' => $id]); if (empty($photo)) { return []; } - $attachment = ['id' => $photo['id'], 'description' => $photo['title']]; + $attachment = [ + 'id' => $photo['id'], + 'description' => $photo['title'], + 'width' => $photo['width'], + 'height' => $photo['height'], + ]; $photoTypes = Images::supportedTypes(); $ext = $photoTypes[$photo['type']]; @@ -113,7 +118,6 @@ class Attachment extends BaseFactory $preview_url = ''; } - $object = new \Friendica\Object\Api\Mastodon\Attachment($attachment, 'image', $url, $preview_url, ''); return $object->toArray(); } diff --git a/src/Object/Api/Mastodon/Attachment.php b/src/Object/Api/Mastodon/Attachment.php index 90b1bffb9f..3f890bf744 100644 --- a/src/Object/Api/Mastodon/Attachment.php +++ b/src/Object/Api/Mastodon/Attachment.php @@ -22,6 +22,8 @@ namespace Friendica\Object\Api\Mastodon; use Friendica\BaseDataTransferObject; +use Friendica\Core\Logger; +use Friendica\Core\System; /** * Class Attachment @@ -50,8 +52,12 @@ class Attachment extends BaseDataTransferObject /** * Creates an attachment * - * @param array $attachment - * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @param array $attachment Expected keys: id, description + * If $type == 'image': width, height[, preview-width, preview-height] + * @param string $type One of: audio, video, gifv, image, unknown + * @param string $url + * @param string $preview + * @param string $remote */ public function __construct(array $attachment, string $type, string $url, string $preview, string $remote) { @@ -70,7 +76,7 @@ class Attachment extends BaseDataTransferObject $this->meta['original']['aspect'] = (float) ((int) $attachment['width'] / (int) $attachment['height']); } - if ((int) $attachment['preview-width'] > 0 && (int) $attachment['preview-height'] > 0) { + if (isset($attachment['preview-width']) && (int) $attachment['preview-width'] > 0 && (int) $attachment['preview-height'] > 0) { $this->meta['small']['width'] = (int) $attachment['preview-width']; $this->meta['small']['height'] = (int) $attachment['preview-height']; $this->meta['small']['size'] = (int) $attachment['preview-width'] . 'x' . (int) $attachment['preview-height'];