File "RoleManager-20250925111707.php"
Full Path: /home/timepamn/dailynetworth.org/wp-content/plugins/hide-my-wp/models/RoleManager-20250925111707.php
File size: 2.91 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* RoleManager Model
* Called to handle the RoleManager & Capabilities for the current user
*
* @file The RoleManager Model file
* @package HMWP/RoleManagerModel
* @since 5.0.0
*/
class HMWP_Models_RoleManager {
public $roles;
public function __construct() {
add_action( 'admin_init', array( $this, 'addHMWPCaps' ), PHP_INT_MAX );
add_filter( 'user_has_cap', array( $this, 'setUserHasCap' ), PHP_INT_MAX, 4);
}
/**
* Make sure the user has the capability if set in any role
* @param $allcaps
* @param $caps
* @param $args
* @param $user
*
* @return mixed
*/
public function setUserHasCap( $allcaps, $caps, $args, $user ) {
if ( ! in_array( HMWP_CAPABILITY, $caps ) ) {
return $allcaps;
}
if( isset($allcaps[HMWP_CAPABILITY]) && $allcaps[HMWP_CAPABILITY] ) {
return $allcaps;
}elseif( ! isset($allcaps[HMWP_CAPABILITY]) && user_can( $user->ID, 'manage_options' ) ){
$allcaps[HMWP_CAPABILITY] = 1;
}
//If the user has multiple roles
if ( !empty( $user->roles ) && is_array( $user->roles ) ) {
foreach ( $user->roles as $role ) {
/** @var WP_Role $allroles */
$role_object = get_role( $role );
foreach ( (array) $caps as $cap ) {
if ( $role_object->has_cap( $cap ) ) {
$allcaps[$cap] = 1;
}
}
}
}
return $allcaps;
}
/**
* Register HMWP Caps
* in case they don't exist
*/
public function addHMWPCaps() {
if ( function_exists( 'wp_roles' ) ) {
/** @var WP_Role[] $allroles */
$allroles = wp_roles()->get_names();
if ( ! empty( $allroles ) ) {
$allroles = array_keys( $allroles );
}
if ( ! empty( $allroles ) ) {
foreach ( $allroles as $role ) {
if ( $role == 'administrator' ) {
/** @var WP_Role $allroles */
$wp_role = get_role( $role );
$this->addCap( $wp_role, HMWP_CAPABILITY );
}
}
}
}
}
public function removeHMWPCaps() {
if ( function_exists( 'wp_roles' ) ) {
/** @var WP_Role[] $allroles */
$allroles = wp_roles()->get_names();
if ( ! empty( $allroles ) ) {
$allroles = array_keys( $allroles );
}
if ( ! empty( $allroles ) ) {
foreach ( $allroles as $role ) {
/** @var WP_Role $allroles */
$wp_role = get_role( $role );
$this->removeCap( $wp_role, HMWP_CAPABILITY );
}
}
}
}
/**
* Add a cap into WP for a role
*
* @param WP_Role $role
* @param string $capability
*/
public function addCap( $role, $capability ) {
if ( ! $role || ! method_exists( $role, 'add_cap' ) ) {
return;
}
if ( ! isset( $role->capabilities[$capability] ) ) {
$role->add_cap( $capability );
}
}
/**
* Remove the caps for a role
*
* @param WP_Role $role
* @param string $capability
*/
public function removeCap( $role, $capability ) {
if ( ! $role || ! method_exists( $role, 'remove_cap' ) ) {
return;
}
if ( isset( $role->capabilities[$capability] ) ) {
$role->remove_cap( $capability );
}
}
}