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. *