From 1b89a7f9219dfbb22bf6260bd475ed9dbdfd8054 Mon Sep 17 00:00:00 2001 From: netkas Date: Mon, 27 Jan 2025 03:51:44 -0500 Subject: [PATCH] Improved Flag Parsing in Peer object constructor --- src/Socialbox/Objects/Standard/Peer.php | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/Socialbox/Objects/Standard/Peer.php b/src/Socialbox/Objects/Standard/Peer.php index b9dcea2..1d2ae72 100644 --- a/src/Socialbox/Objects/Standard/Peer.php +++ b/src/Socialbox/Objects/Standard/Peer.php @@ -3,6 +3,7 @@ namespace Socialbox\Objects\Standard; use InvalidArgumentException; + use Socialbox\Enums\Flags\PeerFlags; use Socialbox\Interfaces\SerializableInterface; use Socialbox\Objects\Database\PeerInformationFieldRecord; use Socialbox\Objects\PeerAddress; @@ -66,7 +67,35 @@ } $this->informationFields = $informationFields; - $this->flags = $data['flags']; + + if(is_array($data['flags'])) + { + $this->flags = []; + foreach($data['flags'] as $flag) + { + if($flag instanceof PeerFlags) + { + $this->flags[] = $flag->value; + } + elseif(is_string($flag)) + { + $this->flags[] = $flag; + } + else + { + throw new InvalidArgumentException('Invalid flag type, got type ' . gettype($flag)); + } + } + } + elseif(is_string($data['flags'])) + { + $this->flags = PeerFlags::fromString($data['flags']); + } + else + { + throw new InvalidArgumentException('Invalid flags value type, got type ' . gettype($data['flags'])); + } + $this->registered = $data['registered']; }