[UTIL] Update bitmap base class, making using easier
This commit is contained in:
parent
a248f23cef
commit
ffcf909bda
@ -21,7 +21,7 @@ namespace App\Core;
|
|||||||
|
|
||||||
use App\Util\Bitmap;
|
use App\Util\Bitmap;
|
||||||
|
|
||||||
abstract class NoteScope extends Bitmap
|
class NoteScope extends Bitmap
|
||||||
{
|
{
|
||||||
public const PUBLIC = 1;
|
public const PUBLIC = 1;
|
||||||
public const SITE = 2;
|
public const SITE = 2;
|
||||||
|
@ -32,7 +32,7 @@ namespace App\Core;
|
|||||||
|
|
||||||
use App\Util\Bitmap;
|
use App\Util\Bitmap;
|
||||||
|
|
||||||
abstract class UserRoles extends Bitmap
|
class UserRoles extends Bitmap
|
||||||
{
|
{
|
||||||
public const ADMIN = 1;
|
public const ADMIN = 1;
|
||||||
public const MODERATOR = 2;
|
public const MODERATOR = 2;
|
||||||
|
@ -25,28 +25,53 @@ abstract class Bitmap
|
|||||||
{
|
{
|
||||||
public static $consts = null;
|
public static $consts = null;
|
||||||
|
|
||||||
public static function bitmapToStrings(int $r): array
|
public static function _do(int $r, bool $instance)
|
||||||
{
|
{
|
||||||
$init = $r;
|
$init = $r;
|
||||||
$class = get_called_class();
|
$class = get_called_class();
|
||||||
|
if ($instance) {
|
||||||
|
$obj = new $class;
|
||||||
|
} else {
|
||||||
$vals = [];
|
$vals = [];
|
||||||
|
}
|
||||||
|
|
||||||
if (self::$consts == null) {
|
if (self::$consts == null) {
|
||||||
self::$consts = (new \ReflectionClass($class))->getConstants();
|
self::$consts = (new \ReflectionClass($class))->getConstants();
|
||||||
unset(self::$consts['PREFIX']);
|
unset(self::$consts['PREFIX']);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (self::$consts as $c => $v) {
|
foreach (self::$consts as $c => $v) {
|
||||||
if (($r & $v) !== 0) {
|
$b = ($r & $v) !== 0;
|
||||||
|
if ($instance) {
|
||||||
|
$obj->{$c} = $b;
|
||||||
|
}
|
||||||
|
if ($b) {
|
||||||
$r -= $v;
|
$r -= $v;
|
||||||
|
if (!$instance) {
|
||||||
$vals[] = $class::PREFIX . $c;
|
$vals[] = $class::PREFIX . $c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($r != 0) {
|
if ($r != 0) {
|
||||||
Log::error('Bitmap to array conversion failed');
|
Log::error('Bitmap to array conversion failed');
|
||||||
throw new ServerException("Bug in bitmap conversion for class {$class} from value {$init}");
|
throw new ServerException("Bug in bitmap conversion for class {$class} from value {$init}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($instance) {
|
||||||
|
return $obj;
|
||||||
|
} else {
|
||||||
return $vals;
|
return $vals;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function create(int $r): self
|
||||||
|
{
|
||||||
|
return self::_do($r, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function toArray(int $r): array
|
||||||
|
{
|
||||||
|
return self::_do($r, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user