From 33c176d92ec2c060b18670e0975bce8a9559b7d8 Mon Sep 17 00:00:00 2001 From: "GREGA-AW\\grega" Date: Fri, 26 Jan 2018 01:45:23 +0100 Subject: [PATCH] Added support for converting arrays that contain other data than just entities. --- src/BlueDB.php | 2 +- src/Entity/FieldEntity.php | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/BlueDB.php b/src/BlueDB.php index f51be7a..796d42c 100644 --- a/src/BlueDB.php +++ b/src/BlueDB.php @@ -19,7 +19,7 @@ * * Bootstrap file for BlueDB library. * - * Version 1.2.0.1 + * Version 1.2.1.0 * * @project BlueDB * @author Grega Mohorko diff --git a/src/Entity/FieldEntity.php b/src/Entity/FieldEntity.php index f536c37..216d5e3 100644 --- a/src/Entity/FieldEntity.php +++ b/src/Entity/FieldEntity.php @@ -24,17 +24,17 @@ namespace BlueDB\Entity; -use Exception; -use ReflectionClass; use BlueDB\Configuration\BlueDBProperties; -use BlueDB\DataAccess\MySQL; use BlueDB\DataAccess\Criteria\Criteria; use BlueDB\DataAccess\Criteria\Expression; use BlueDB\DataAccess\JoinType; +use BlueDB\DataAccess\MySQL; use BlueDB\DataAccess\Session; use BlueDB\Entity\FieldTypeEnum; use BlueDB\Entity\PropertyTypeEnum; use BlueDB\Utility\StringUtility; +use Exception; +use ReflectionClass; abstract class FieldEntity extends DatabaseTable implements IFieldEntity { @@ -105,10 +105,19 @@ public function toArray($fieldsToIgnore=null,$includeHiddenFields=false) public static function toArrayList($entities,$fieldsToIgnore=null,$includeHiddenFields=false) { $session=[]; - - foreach($entities as $entity){ - /* @var $entity FieldEntity */ - $elements[]=$entity->toArrayInternal($fieldsToIgnore,$includeHiddenFields, $session); + return self::toArrayListInternal($entities, $fieldsToIgnore, $includeHiddenFields,$session); + } + + private static function toArrayListInternal($entities,$fieldsToIgnore,$includeHiddenFields,&$session) + { + $elements=[]; + foreach($entities as $entityKey => $entity){ + if(is_array($entity)){ + $elements[$entityKey]=self::toArrayListInternal($entity, $fieldsToIgnore, $includeHiddenFields, $session); + }else{ + /* @var $entity FieldEntity */ + $elements[$entityKey]=$entity->toArrayInternal($fieldsToIgnore,$includeHiddenFields, $session); + } } return $elements; @@ -183,7 +192,15 @@ private static function fromArrayList($array,&$session) $list=[]; foreach($array as $arrayKey => $element){ - $list[$arrayKey]=self::fromArraySingle($element,$session); + if(self::isEntityArray($element)){ + $result=self::fromArraySingle($element,$session); + }else if(is_array($element)){ + $result=self::fromArrayList($element, $session); + }else{ + $result=$element; + } + + $list[$arrayKey]=$result; } return $list;