From f2bc892cb4ea7d5ac0ddd319a9f8884876365df5 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 8 Apr 2022 14:47:15 +0300 Subject: [PATCH] Bug fixes for media --- system/src/Grav/Common/Media/Traits/ImageMediaTrait.php | 2 +- system/src/Grav/Common/Page/Medium/AbstractMedia.php | 2 +- system/src/Grav/Common/Page/Medium/LocalMedia.php | 6 +++++- system/src/Grav/Common/Page/Medium/Medium.php | 9 ++++++++- system/src/Grav/Framework/Flex/FlexObject.php | 2 +- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php b/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php index fca906837..75b23f6aa 100644 --- a/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php @@ -624,7 +624,7 @@ trait ImageMediaTrait $file->touch(); } - return $this->generateCacheImage(GRAV_WEBROOT . '/' . $imageFile); + return $this->generateCacheImage(GRAV_WEBROOT . $imageFile); } /** diff --git a/system/src/Grav/Common/Page/Medium/AbstractMedia.php b/system/src/Grav/Common/Page/Medium/AbstractMedia.php index 5a532ef39..f296bf52d 100644 --- a/system/src/Grav/Common/Page/Medium/AbstractMedia.php +++ b/system/src/Grav/Common/Page/Medium/AbstractMedia.php @@ -194,7 +194,7 @@ abstract class AbstractMedia implements ExportInterface, MediaCollectionInterfac public function current(): ?MediaObjectInterface { $instance = current($this->items); - if ($instance && !$instance instanceof MediaObjectInterface) { + if (false !== $instance && !$instance instanceof MediaObjectInterface) { // Initialize media object. $key = $this->key(); $this->items[$key] = $instance = $this->initMedium($key); diff --git a/system/src/Grav/Common/Page/Medium/LocalMedia.php b/system/src/Grav/Common/Page/Medium/LocalMedia.php index 2f4a1500e..afab22a4f 100644 --- a/system/src/Grav/Common/Page/Medium/LocalMedia.php +++ b/system/src/Grav/Common/Page/Medium/LocalMedia.php @@ -47,7 +47,11 @@ abstract class LocalMedia extends AbstractMedia */ public function getPath(string $filename = null): ?string { - return $this->path ? GRAV_WEBROOT . '/' . $this->path . ($filename ? '/' . $filename : '') : null; + if (!$this->path) { + return null; + } + + return GRAV_WEBROOT . '/' . $this->path . ($filename ? '/' . $filename : ''); } /** diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index 6fe2538d6..082ddbda8 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -112,11 +112,18 @@ class Medium extends Data implements RenderableInterface, MediaFileInterface */ public function getMeta(): array { - return [ + // TODO: this may require some tweaking, works for now. + $meta = $this->metadata + ($this->meta ?? []) + [ + 'name' => $this->filename, 'mime' => $this->mime, 'size' => $this->size, + 'width' => $this->width, + 'height' => $this->height, + 'orientation' => $this->orientation, 'modified' => $this->modified, ]; + + return array_filter($meta, static function($val) { return $val !== null; } ); } /** diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index 6d28e196d..a4a1c710e 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -936,7 +936,7 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface if ($media && !$media instanceof LocalMedia) { $value = []; foreach ($media->all() as $medium) { - $value[] = $medium->meta; + $value[] = $medium->getMeta(); } } }