public static function loadPermission($name, array $data, $default = self::DEFAULT_OP, &$output = [])
{
$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);
}