99 lines
2.1 KiB
PHP
99 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* @package Restrict User Access
|
|
* @author Joachim Jensen <joachim@dev.institute>
|
|
* @license GPLv3
|
|
* @copyright 2020 by Joachim Jensen
|
|
*/
|
|
|
|
/**
|
|
* @since 1.1
|
|
* @param WP_User|int|null $user
|
|
* @return RUA_User_Interface
|
|
*/
|
|
function rua_get_user($user = null)
|
|
{
|
|
if (is_null($user) && is_user_logged_in()) {
|
|
$user = wp_get_current_user();
|
|
}
|
|
|
|
if (!($user instanceof WP_User)) {
|
|
$user = new WP_User($user);
|
|
}
|
|
|
|
return new RUA_User($user);
|
|
}
|
|
|
|
/**
|
|
* @since 2.1
|
|
* @param WP_Post|int $post
|
|
*
|
|
* @return RUA_Level_Interface
|
|
* @throws Exception
|
|
*/
|
|
function rua_get_level($post)
|
|
{
|
|
if (is_numeric($post)) {
|
|
$post = WP_Post::get_instance($post);
|
|
}
|
|
|
|
if (!($post instanceof WP_Post)) {
|
|
throw new Exception();
|
|
}
|
|
|
|
return new RUA_Level($post);
|
|
}
|
|
|
|
/**
|
|
* @since 2.1
|
|
* @param RUA_Level_Interface|WP_Post|int
|
|
* @param RUA_User_Interface|WP_User|int|null $user
|
|
*
|
|
* @return RUA_User_Level_Interface
|
|
*/
|
|
function rua_get_user_level($level, $user = null)
|
|
{
|
|
if (!($level instanceof RUA_Level_Interface)) {
|
|
$level = rua_get_level($level);
|
|
}
|
|
|
|
if (!($user instanceof RUA_User_Interface)) {
|
|
$user = rua_get_user($user);
|
|
}
|
|
|
|
$user_level = new RUA_User_Level($user, $level);
|
|
$user_level->refresh();
|
|
return $user_level;
|
|
}
|
|
|
|
/**
|
|
* API to get level by name
|
|
*
|
|
* @since 0.9
|
|
* @param string $name
|
|
* @return WP_Post|bool
|
|
*/
|
|
function rua_get_level_by_name($name)
|
|
{
|
|
return RUA_App::instance()->level_manager->get_level_by_name($name);
|
|
}
|
|
|
|
/**
|
|
* API to get level capabilities
|
|
*
|
|
* @since 0.13
|
|
* @param int $level_id
|
|
* @param bool $hierarchical
|
|
* @return array
|
|
*/
|
|
function rua_get_level_caps($level_id, $hierarchical = false)
|
|
{
|
|
$levels = array( $level_id );
|
|
if ($hierarchical) {
|
|
$levels = array_merge($levels, get_post_ancestors((int) $level_id));
|
|
$levels = array_reverse($levels);
|
|
}
|
|
$caps = RUA_App::instance()->level_manager->get_levels_caps($levels);
|
|
return $caps;
|
|
}
|