From 2f2ffb7afea07cf88eb971a163653264b85a2568 Mon Sep 17 00:00:00 2001 From: Awilum Date: Tue, 2 Jun 2020 14:30:13 +0300 Subject: [PATCH] feat(media): Media API implementation #428 --- src/flextype/core/Media/Media.php | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/flextype/core/Media/Media.php b/src/flextype/core/Media/Media.php index 09754119..e934ee45 100644 --- a/src/flextype/core/Media/Media.php +++ b/src/flextype/core/Media/Media.php @@ -290,8 +290,8 @@ class Media { $file_data = $this->flextype['serializer']->decode(Filesystem::read($this->getFileMetaLocation($id)), 'yaml'); - if (Arr::has($file_data[$field])) { - $file_data[$field] = $value; + if (Arr::keyExists($file_data, $field)) { + Arr::set($file_data, $field, $value); return Filesystem::write($this->getFileMetaLocation($id), $this->flextype['serializer']->encode($file_data, 'yaml')); } @@ -312,8 +312,30 @@ class Media { $file_data = $this->flextype['serializer']->decode(Filesystem::read($this->getFileMetaLocation($id)), 'yaml'); - if (!Arr::has($file_data[$field])) { - $file_data[$field] = $value; + if (!Arr::keyExists($file_data, $field)) { + Arr::set($file_data, $field, $value); + return Filesystem::write($this->getFileMetaLocation($id), $this->flextype['serializer']->encode($file_data, 'yaml')); + } + + return false; + } + + /** + * Delete file meta information + * + * @param string $id Unique identifier of the file. + * @param string $value Value for title field + * + * @return bool True on success, false on failure. + * + * @access public + */ + public function deleteFileMeta(string $id, string $field) : bool + { + $file_data = $this->flextype['serializer']->decode(Filesystem::read($this->getFileMetaLocation($id)), 'yaml'); + + if (Arr::keyExists($file_data, $field)) { + Arr::delete($file_data, $field); return Filesystem::write($this->getFileMetaLocation($id), $this->flextype['serializer']->encode($file_data, 'yaml')); }