mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-14 17:59:41 +00:00
Merge branch 'release/3.2'
This commit is contained in:
commit
203d7e23f4
@ -78,6 +78,65 @@ class Permission{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $data
|
||||||
|
* @param string $default
|
||||||
|
*
|
||||||
|
* @return Permission[]
|
||||||
|
*/
|
||||||
|
public static function loadPermissions(array $data, string $default = self::DEFAULT_OP) : array{
|
||||||
|
$result = [];
|
||||||
|
foreach($data as $key => $entry){
|
||||||
|
$result[] = self::loadPermission($key, $entry, $default, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $name
|
||||||
|
* @param array $data
|
||||||
|
* @param string $default
|
||||||
|
* @param array $output
|
||||||
|
*
|
||||||
|
* @return Permission
|
||||||
|
*
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public static function loadPermission(string $name, array $data, string $default = self::DEFAULT_OP, array &$output = []) : Permission{
|
||||||
|
$desc = null;
|
||||||
|
$children = [];
|
||||||
|
if(isset($data["default"])){
|
||||||
|
$value = Permission::getByName($data["default"]);
|
||||||
|
if($value !== null){
|
||||||
|
$default = $value;
|
||||||
|
}else{
|
||||||
|
throw new \InvalidStateException("'default' key contained unknown value");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($data["children"])){
|
||||||
|
if(is_array($data["children"])){
|
||||||
|
foreach($data["children"] as $k => $v){
|
||||||
|
if(is_array($v)){
|
||||||
|
if(($perm = self::loadPermission($k, $v, $default, $output)) !== null){
|
||||||
|
$output[] = $perm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$children[$k] = true;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
throw new \InvalidStateException("'children' key is of wrong type");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($data["description"])){
|
||||||
|
$desc = $data["description"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Permission($name, $desc, $default, $children);
|
||||||
|
}
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private $name;
|
private $name;
|
||||||
|
|
||||||
@ -195,64 +254,4 @@ class Permission{
|
|||||||
return $perm;
|
return $perm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $data
|
|
||||||
* @param string $default
|
|
||||||
*
|
|
||||||
* @return Permission[]
|
|
||||||
*/
|
|
||||||
public static function loadPermissions(array $data, string $default = self::DEFAULT_OP) : array{
|
|
||||||
$result = [];
|
|
||||||
foreach($data as $key => $entry){
|
|
||||||
$result[] = self::loadPermission($key, $entry, $default, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $name
|
|
||||||
* @param array $data
|
|
||||||
* @param string $default
|
|
||||||
* @param array $output
|
|
||||||
*
|
|
||||||
* @return Permission
|
|
||||||
*
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public static function loadPermission(string $name, array $data, string $default = self::DEFAULT_OP, array &$output = []) : Permission{
|
|
||||||
$desc = null;
|
|
||||||
$children = [];
|
|
||||||
if(isset($data["default"])){
|
|
||||||
$value = Permission::getByName($data["default"]);
|
|
||||||
if($value !== null){
|
|
||||||
$default = $value;
|
|
||||||
}else{
|
|
||||||
throw new \InvalidStateException("'default' key contained unknown value");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($data["children"])){
|
|
||||||
if(is_array($data["children"])){
|
|
||||||
foreach($data["children"] as $k => $v){
|
|
||||||
if(is_array($v)){
|
|
||||||
if(($perm = self::loadPermission($k, $v, $default, $output)) !== null){
|
|
||||||
$output[] = $perm;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$children[$k] = true;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
throw new \InvalidStateException("'children' key is of wrong type");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($data["description"])){
|
|
||||||
$desc = $data["description"];
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Permission($name, $desc, $default, $children);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user