diff --git a/src/pocketmine/permission/Permission.php b/src/pocketmine/permission/Permission.php index 690d4872a..70c7b88b0 100644 --- a/src/pocketmine/permission/Permission.php +++ b/src/pocketmine/permission/Permission.php @@ -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 */ private $name; @@ -195,64 +254,4 @@ class Permission{ 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); - - } }