. // }}} namespace App\Core; /** * User role enum * * @category User * @package GNUsocial * * @author Hugo Sales * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ abstract class UserRoles { public const ADMIN = 1; public const MODERATOR = 2; public const USER = 4; public const BOT = 8; public static $consts = null; public static function bitmapToStrings(int $r): array { $roles = []; if (self::$consts == null) { self::$consts = (new \ReflectionClass(__CLASS__))->getConstants(); } foreach (self::$consts as $c => $v) { if (($r & $v) !== 0) { $r -= $v; $roles[] = "ROLE_{$c}"; } } if ($r != 0) { Log::error('User roles bitmap to array failed'); } return $roles; } }