From: Vincent Vanwaelscappel Date: Wed, 11 Sep 2019 13:56:55 +0000 (+0200) Subject: done #3029 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=cb4dd23b9826867026c43dd652ad379d05a2afce;p=cubist_cms-back.git done #3029 @1 --- diff --git a/src/app/Magic/BunchOfFields.php b/src/app/Magic/BunchOfFields.php index 6bfc00c..79f61d0 100644 --- a/src/app/Magic/BunchOfFields.php +++ b/src/app/Magic/BunchOfFields.php @@ -60,4 +60,13 @@ trait BunchOfFields { return $this->_fields; } + + /** + * @param $name + * @return Field|null + */ + public function getField($name) + { + return isset($this->_fields[$name]) ? $this->_fields[$name] : null; + } } diff --git a/src/app/Magic/Fields/Field.php b/src/app/Magic/Fields/Field.php index 9fdb24a..e4133f8 100644 --- a/src/app/Magic/Fields/Field.php +++ b/src/app/Magic/Fields/Field.php @@ -206,4 +206,13 @@ class Field implements \ArrayAccess $this->setAttribute('wrapperAttributes', $wrapperAttributes); } } + + /** + * @param mixed $value + * @return mixed + */ + public function filterValue($value) + { + return $value; + } } diff --git a/src/app/Magic/Fields/Table.php b/src/app/Magic/Fields/Table.php index 11bff60..949e7ca 100644 --- a/src/app/Magic/Fields/Table.php +++ b/src/app/Magic/Fields/Table.php @@ -10,4 +10,35 @@ class Table extends Field protected $_databaseType = 'text'; protected $_translatable = true; + + public function filterValue($value) + { + if (null === $value) { + return '[]'; + } + + if (is_string($value)) { + $string = true; + $decoded = json_decode($value, 1); + } else { + $decoded = $value; + } + $res = []; + if (!is_array($decoded)) { + dd($decoded); + } + foreach ($decoded as $i => $item) { + if (!isset($item['id']) || $item['id'] == '') { + $item['id'] = $i; + } + $res[$i] = $item; + } + if ($string) { + $value = json_encode($res); + } else { + $value = $res; + } + + return parent::filterValue($value); + } } diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index 359405d..26aaec1 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -586,4 +586,13 @@ class CubistMagicAbstractModel extends Model implements HasMedia return $this->getMedia($c); } + public function getAttribute($key) + { + $value = parent::getAttribute($key); + $f = $this->getField($key); + if (null === $f) { + return $value; + } + return $f->filterValue($value); + } }