| Server IP : 172.67.71.254 / Your IP : 216.73.216.4 Web Server : nginx/1.27.1 System : Linux in-5 5.15.0-143-generic #153-Ubuntu SMP Fri Jun 13 19:10:45 UTC 2025 x86_64 User : arabianexpress ( 1872) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /storage/v9321/leapdubai/public_html/wp-content/plugins/kirki/includes/Ajax/ |
Upload File : |
<?php
/**
* Role manager api
*
* @package kirki
*/
namespace Kirki\Ajax;
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly.
}
use Kirki\HelperFunctions;
/**
* Role manager API Class
*/
class RBAC
{
/**
* Get members based on role
*
* @return void wp_send_json.
*/
public static function members_based_on_role()
{
$roles = static::get_all_roles();
$user_count = static::get_user_count_based_on_role($roles);
$user_dps = static::get_user_dp($roles);
$access_levels = static::get_access_level($roles);
wp_send_json(
array(
'user_count' => $user_count,
'roles' => $roles,
'dp' => $user_dps,
'access' => $access_levels,
)
);
}
/**
* Update access lavel
*
* @return void wp_send_json.
*/
public static function update_access_level()
{
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$role_name = HelperFunctions::sanitize_text(isset($_POST['roleName']) ? $_POST['roleName'] : null);
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$access = HelperFunctions::sanitize_text(isset($_POST['access']) ? $_POST['access'] : null);
// The access level of `administrator` & `subscriber` role can't be updated.
if (in_array($role_name, array('administrator', 'subscriber'), true)) {
wp_send_json(false);
die();
}
;
if ($role_name && $access) {
$res = update_option('kirki_' . $role_name, $access, false);
if ($res) {
wp_send_json(true);
}
}
wp_send_json(false);
}
/**
* Get editor access lavel
*
* @return void wp_send_json.
*/
public static function get_editor_access_level()
{
$curr_user = wp_get_current_user();
if (HelperFunctions::is_api_call_from_editor_preview() && HelperFunctions::is_api_header_post_editor_preview_token_valid()) {
wp_send_json(KIRKI_ACCESS_LEVELS['FULL_ACCESS']);
}
if ($curr_user) {
$roles = $curr_user->roles;
$access_arr = array();
foreach ($roles as $role) {
$access = get_option('kirki_' . $role);
$access_arr[] = $access;
}
if (in_array(KIRKI_ACCESS_LEVELS['FULL_ACCESS'], $access_arr, true)) {
wp_send_json(KIRKI_ACCESS_LEVELS['FULL_ACCESS']);
} elseif (in_array(KIRKI_ACCESS_LEVELS['CONTENT_ACCESS'], $access_arr, true)) {
wp_send_json(KIRKI_ACCESS_LEVELS['CONTENT_ACCESS']);
} elseif (in_array(KIRKI_ACCESS_LEVELS['VIEW_ACCESS'], $access_arr, true)) {
wp_send_json(KIRKI_ACCESS_LEVELS['VIEW_ACCESS']);
} else {
wp_send_json(KIRKI_ACCESS_LEVELS['NO_ACCESS']);
}
} else {
wp_send_json(KIRKI_ACCESS_LEVELS['VIEW_ACCESS']);
}
}
/**
* Get user count based on role
*
* @return int count.
*/
private static function get_user_count_based_on_role()
{
$result = count_users();
$user_count = $result['avail_roles'];
unset($user_count['none']); // This is not needed.
return $user_count;
}
/**
* Get user DP
*
* @param array $roles wp roles.
* @return array
*/
private static function get_user_dp($roles = array())
{
if (count($roles)) {
$dp = array();
foreach ($roles as $role) {
$role_id = $role['id'];
$users = get_users(
array(
'role' => $role_id,
'number' => 3,
)
);
$user_ids = array();
foreach ($users as $user) {
$user_ids[] = $user->ID;
}
$avatars = array();
foreach ($user_ids as $user_id) {
$avatar = get_avatar_url($user_id);
$avatars[] = $avatar;
}
$dp[$role_id] = $avatars;
}
return $dp;
}
return array();
}
/**
* Get all roles
*
* @return array
*/
public static function get_all_roles()
{
global $wp_roles;
$role_list = $wp_roles->roles;
$roles = array();
if (is_array($role_list)) {
foreach ($role_list as $key => $val) {
$roles[] = array(
'id' => $key,
'name' => $val['name'],
);
}
}
return $roles;
}
/**
* Get access level
*
* @param array $roles wp roles.
* @return array
*
* @deprecated
* @see \Kirki\App\Supports\Role::get_access_levels_by_roles()
*/
public static function get_access_level($roles)
{
$access_levels = array();
foreach ($roles as $role) {
$role_id = $role['id'];
$result = get_option('kirki_' . $role_id);
if ($result) {
$access_levels[$role_id] = $result;
} else {
if (in_array($role_id, KIRKI_USERS_DEFAULT_FULL_ACCESS, true)) {
add_option('kirki_' . $role_id, KIRKI_ACCESS_LEVELS['FULL_ACCESS']);
$access_levels[$role_id] = KIRKI_ACCESS_LEVELS['FULL_ACCESS'];
} else {
add_option('kirki_' . $role_id, KIRKI_ACCESS_LEVELS['NO_ACCESS']);
$access_levels[$role_id] = KIRKI_ACCESS_LEVELS['NO_ACCESS'];
}
}
}
return $access_levels;
}
}