From 37d3a18d3cd7215823576969ea094bda64a8a27a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Sat, 12 Feb 2022 17:11:13 +0200 Subject: [PATCH] More medium improvements --- .../Grav/Common/Page/Medium/ImageMedium.php | 5 ++++- system/src/Grav/Common/Page/Medium/Medium.php | 19 ++++++++++++------- system/src/Grav/Common/Utils.php | 3 ++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/system/src/Grav/Common/Page/Medium/ImageMedium.php b/system/src/Grav/Common/Page/Medium/ImageMedium.php index c1bf54434..8d84f9551 100644 --- a/system/src/Grav/Common/Page/Medium/ImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/ImageMedium.php @@ -19,6 +19,7 @@ use Grav\Common\Media\Traits\ImageMediaTrait; use Grav\Common\Utils; use Gregwar\Image\Image; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; +use function array_key_exists; use function func_get_args; use function in_array; @@ -239,7 +240,9 @@ class ImageMedium extends Medium implements ImageMediaInterface, ImageManipulate */ public function sourceParsedownElement(array $attributes, $reset = true) { - empty($attributes['src']) && $attributes['src'] = $this->url(false); + if (empty($attributes['src'])) { + $attributes['src'] = $this->url(false); + } $srcset = $this->srcset($reset); if ($srcset) { diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index 5cc79624e..f39611dee 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -53,14 +53,19 @@ class Medium extends Data implements RenderableInterface, MediaFileInterface $this->def('mime', 'application/octet-stream'); - $path = $this->get('filepath'); - if ($path && file_exists($path)) { - if (!$this->offsetExists('size')) { - $this->set('size', filesize($path)); - } - if (!$this->offsetExists('modified')) { - $this->set('modified', filemtime($path)); + $sizeMissing = !$this->offsetExists('size'); + $modifiedMissing = !$this->offsetExists('modified'); + if ($sizeMissing || $modifiedMissing) { + $path = $this->get('filepath'); + if ($path && file_exists($path)) { + if ($sizeMissing) { + $this->set('size', filesize($path)); + } + if ($modifiedMissing) { + $this->set('modified', filemtime($path)); + } } + } $this->reset(); diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 64c81a927..737f02e6f 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -992,7 +992,8 @@ abstract class Utils * * @param string $path * @param int|null $flags - * @return array|string + * @return string[]|string + * @phpstan-return array{dirname: string, basename: string, extension: string|null, filename: string}|string */ public static function pathinfo(string $path, int $flags = null) {