public function getPermittedRoles(core_kernel_classes_Resource $user, array $roles, $encoded = true)
    {
        $exclude = [];
        if (!$this->userHasRoles($user, TaoRoles::SYSTEM_ADMINISTRATOR)) {
            $exclude[] = $encoded ? tao_helpers_Uri::encode(TaoRoles::SYSTEM_ADMINISTRATOR) : TaoRoles::SYSTEM_ADMINISTRATOR;
            if (!$this->userHasRoles($user, TaoRoles::GLOBAL_MANAGER)) {
                $exclude[] = $encoded ? tao_helpers_Uri::encode(TaoRoles::GLOBAL_MANAGER) : TaoRoles::GLOBAL_MANAGER;
            }
        }
        if (count($exclude)) {
            $roles = array_filter($roles, function($k) use ($exclude) {
                return !in_array($k, $exclude);
            }, ARRAY_FILTER_USE_KEY);
        }
        return $roles;
    }
public function getPermittedRoles(core_kernel_classes_Resource $user, array $roles, $encoded = true)
    {
        $exclude = [];
        if (!$this->userHasRoles($user, TaoRoles::SYSTEM_ADMINISTRATOR)) {
            $exclude[] = $encoded ? tao_helpers_Uri::encode(TaoRoles::SYSTEM_ADMINISTRATOR) : TaoRoles::SYSTEM_ADMINISTRATOR;
            if (!$this->userHasRoles($user, TaoRoles::GLOBAL_MANAGER)) {
                $exclude[] = $encoded ? tao_helpers_Uri::encode(TaoRoles::GLOBAL_MANAGER) : TaoRoles::GLOBAL_MANAGER;
            }
        }
        if (count($exclude)) {
            $roles = array_filter($roles, function($k) use ($exclude) {
                return !in_array($k, $exclude);
            }, ARRAY_FILTER_USE_KEY);
        }
        return $roles;
    }
public function getPermittedRoles ( core_kernel_classes_Resource $ user , array $ roles , $ encoded = true ) { $ exclude = [ ] ; if ( ! $ this -> userHasRoles ( $ user , TaoRoles :: SYSTEM_ADMINISTRATOR ) ) { $ exclude [ ] = $ encoded ? tao_helpers_Uri :: encode ( TaoRoles :: SYSTEM_ADMINISTRATOR ) : TaoRoles :: SYSTEM_ADMINISTRATOR ; if ( ! $ this -> userHasRoles ( $ user , TaoRoles :: GLOBAL_MANAGER ) ) { $ exclude [ ] = $ encoded ? tao_helpers_Uri :: encode ( TaoRoles :: GLOBAL_MANAGER ) : TaoRoles :: GLOBAL_MANAGER ; } } if ( count ( $ exclude ) ) { $ roles = array_filter ( $ roles , function ( $ k ) use ( $ exclude ) { return ! in_array ( $ k , $ exclude ) ; } , ARRAY_FILTER_USE_KEY ) ; } return $ roles ; }
Filter roles to leave only permitted roles
@param $user
@param $roles
@return array
Filter roles to leave only permitted roles