From 0775add67860b94a35b68c01b133ec8ec969f539 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Sat, 5 Aug 2023 10:06:49 +0000 Subject: [PATCH] fix(media): init file properties in setAttributes' Model method + set defaults to pathinfo data --- modules/Media/Entities/Audio.php | 9 ++---- modules/Media/Entities/BaseMedia.php | 29 ++++++++++--------- modules/Media/Entities/Image.php | 5 +--- modules/Media/Entities/Transcript.php | 6 ++-- modules/Media/Models/MediaModel.php | 9 +----- .../PodcastImport/Commands/PodcastImport.php | 4 +++ 6 files changed, 27 insertions(+), 35 deletions(-) diff --git a/modules/Media/Entities/Audio.php b/modules/Media/Entities/Audio.php index 8ee6a70a..7637099d 100644 --- a/modules/Media/Entities/Audio.php +++ b/modules/Media/Entities/Audio.php @@ -21,14 +21,11 @@ class Audio extends BaseMedia { protected string $type = 'audio'; - /** - * @param array|null $data - */ - public function __construct(array $data = null) + public function initFileProperties(): void { - parent::__construct($data); + parent::initFileProperties(); - if ($this->file_metadata) { + if ($this->file_metadata !== null) { $this->duration = (float) $this->file_metadata['playtime_seconds']; $this->header_size = (int) $this->file_metadata['avdataoffset']; } diff --git a/modules/Media/Entities/BaseMedia.php b/modules/Media/Entities/BaseMedia.php index 750db5a7..df6d1f9d 100644 --- a/modules/Media/Entities/BaseMedia.php +++ b/modules/Media/Entities/BaseMedia.php @@ -56,29 +56,30 @@ class BaseMedia extends Entity ]; /** - * @param array|null $data + * @param array $data */ - public function __construct(array $data = null) + public function setAttributes(array $data): self { - parent::__construct($data); + parent::setAttributes($data); $this->initFileProperties(); + + return $this; } public function initFileProperties(): void { - if ($this->file_key !== '') { - [ - 'filename' => $filename, - 'dirname' => $dirname, - 'extension' => $extension, - ] = pathinfo($this->file_key); + $pathInfo = pathinfo($this->file_key) + [ + 'filename' => '', + 'dirname' => '', + 'extension' => '', + ]; - $this->attributes['file_url'] = service('file_manager')->getUrl($this->file_key); - $this->attributes['file_name'] = $filename; - $this->attributes['file_directory'] = $dirname; - $this->attributes['file_extension'] = $extension; - } + $this->file_url = service('file_manager') + ->getUrl($this->file_key); + $this->file_name = $pathInfo['filename']; + $this->file_directory = $pathInfo['dirname']; + $this->file_extension = $pathInfo['extension']; } public function setFile(File $file): self diff --git a/modules/Media/Entities/Image.php b/modules/Media/Entities/Image.php index aae0fd19..4e0af892 100644 --- a/modules/Media/Entities/Image.php +++ b/modules/Media/Entities/Image.php @@ -29,10 +29,7 @@ class Image extends BaseMedia { parent::initFileProperties(); - if ($this->file_key !== '' && $this->file_metadata !== null && array_key_exists( - 'sizes', - $this->file_metadata - )) { + if ($this->file_metadata && array_key_exists('sizes', $this->file_metadata)) { $this->sizes = $this->file_metadata['sizes']; $this->initSizeProperties(); } diff --git a/modules/Media/Entities/Transcript.php b/modules/Media/Entities/Transcript.php index a969cff1..6bb5cf1e 100644 --- a/modules/Media/Entities/Transcript.php +++ b/modules/Media/Entities/Transcript.php @@ -21,11 +21,11 @@ class Transcript extends BaseMedia protected string $type = 'transcript'; - public function __construct(?array $data = null) + public function initFileProperties(): void { - parent::__construct($data); + parent::initFileProperties(); - if ($this->file_key && $this->file_metadata && array_key_exists('json_key', $this->file_metadata)) { + if ($this->file_metadata !== null && array_key_exists('json_key', $this->file_metadata)) { helper('media'); $this->json_key = $this->file_metadata['json_key']; diff --git a/modules/Media/Models/MediaModel.php b/modules/Media/Models/MediaModel.php index 69506c7c..97f2880a 100644 --- a/modules/Media/Models/MediaModel.php +++ b/modules/Media/Models/MediaModel.php @@ -102,14 +102,7 @@ class MediaModel extends Model { $cacheName = "media#{$mediaId}"; if (! ($found = cache($cacheName))) { - $builder = $this->where([ - 'id' => $mediaId, - ]); - - /** @var object $result */ - $result = $builder->first(); - $mediaClass = $this->returnType; - $found = new $mediaClass($result->toArray(false, true)); + $found = $this->find($mediaId); cache() ->save($cacheName, $found, DECADE); diff --git a/modules/PodcastImport/Commands/PodcastImport.php b/modules/PodcastImport/Commands/PodcastImport.php index 9104f9ed..504214e2 100644 --- a/modules/PodcastImport/Commands/PodcastImport.php +++ b/modules/PodcastImport/Commands/PodcastImport.php @@ -168,6 +168,10 @@ class PodcastImport extends BaseCommand $this->importTask->pass(); } catch (Exception $exception) { $this->error($exception->getMessage()); + log_message( + 'critical', + 'Error when importing ' . $this->importTask->feed_url . PHP_EOL . $exception->getTraceAsString() + ); } }