From 9a9cb3957bb1e238bb72258131d511fc7c6433d4 Mon Sep 17 00:00:00 2001 From: netkas Date: Wed, 30 Oct 2024 15:29:21 -0400 Subject: [PATCH] Add serialization methods to PeerFlags enum --- src/Socialbox/Enums/Flags/PeerFlags.php | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/Socialbox/Enums/Flags/PeerFlags.php b/src/Socialbox/Enums/Flags/PeerFlags.php index ce7b085..86b69bb 100644 --- a/src/Socialbox/Enums/Flags/PeerFlags.php +++ b/src/Socialbox/Enums/Flags/PeerFlags.php @@ -2,6 +2,8 @@ namespace Socialbox\Enums\Flags; +use Socialbox\Classes\Logger; + enum PeerFlags : string { // Administrative Flags @@ -20,6 +22,33 @@ enum PeerFlags : string case VER_PHONE_CALL = 'VER_PHONE_CALL'; case VER_SOLVE_IMAGE_CAPTCHA = 'VER_SOLVE_IMAGE_CAPTCHA'; + /** + * Converts an array of PeerFlags enums to a string representation + * + * @param PeerFlags[] $flags Array of PeerFlags enums + * @return string Comma-separated string of flag values + */ + public static function toString(array $flags): string + { + return implode(',', array_map(fn(PeerFlags $flag) => $flag->value, $flags)); + } + + /** + * Converts a string representation back to an array of PeerFlags enums + * + * @param string $flagString Comma-separated string of flag values + * @return PeerFlags[] Array of PeerFlags enums + */ + public static function fromString(string $flagString): array + { + if (empty($flagString)) + { + return []; + } + + return array_map(fn(string $value) => PeerFlags::from(trim($value)), explode(',', $flagString)); + } + /** * Returns whether the flag is public. Public flags can be seen by other peers. *