Commit 0775add6 authored by Yassine Doghri's avatar Yassine Doghri
Browse files

fix(media): init file properties in setAttributes' Model method + set defaults to pathinfo data

parent 26a714d9
Loading
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -21,14 +21,11 @@ class Audio extends BaseMedia
{
    protected string $type = 'audio';

    /**
     * @param array<string, mixed>|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'];
        }
+16 −15
Original line number Diff line number Diff line
@@ -56,29 +56,30 @@ class BaseMedia extends Entity
    ];

    /**
     * @param array<string, mixed>|null $data
     * @param array<string, mixed> $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);

            $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;
        }
        $pathInfo = pathinfo($this->file_key) + [
            'filename'  => '',
            'dirname'   => '',
            '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
+1 −4
Original line number Diff line number Diff line
@@ -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();
        }
+3 −3
Original line number Diff line number Diff line
@@ -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'];
+1 −8
Original line number Diff line number Diff line
@@ -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);
Loading