Airship\Cabin\Bridge\Blueprint\Permissions::flattenContextTree PHP Method

flattenContextTree() protected method

protected flattenContextTree ( array $return, array $perms, array $actions = [] ) : array
$return array
$perms array
$actions array
return array
    protected function flattenContextTree(array $return, array $perms, array $actions = []) : array
    {
        foreach ($perms as $i => $per) {
            // Combine with AND logic
            foreach ($actions as $l) {
                // Active permissions
                $return[$i]['perms'][$l] = ($return[$i]['perms'][$l] ?? false) && ($per['perms'][$l] ?? false);
                // Inherited permissions
                $return[$i]['inherit'][$l] = $return[$i]['inherit'][$l] ?? false;
                $return[$i]['inherit'][$l] = $return[$i]['inherit'][$l] && (($per['inherit'][$l] ?? false) && ($return[$i]['inherit'][$l] ?? false));
            }
            // Recursion!
            if (!empty($per['children'])) {
                $return[$i]['children'] = $this->flattenContextTree($return[$i]['children'], $per['children'], $actions);
            }
        }
        return $return;
    }