AP_Roles()
Description #
AnsPress user role helper
Source #
File: includes/class/roles-cap.php
class AP_Roles {
/**
* Base user capabilities.
*
* @var array
*/
public $base_caps = array();
/**
* Moderator level permissions.
*
* @var array
*/
public $mod_caps = array();
/**
* Initialize the class
*/
public function __construct() {
$this->base_caps = ap_role_caps( 'participant' );
$this->mod_caps = ap_role_caps( 'moderator' );
}
/**
* Add roles and cap, called on plugin activation
*
* @since 2.0.1
*/
public function add_roles() {
// @codingStandardsIgnoreStart
add_role(
'ap_moderator',
__( 'AnsPress Moderator', 'anspress-question-answer' ),
array(
'read' => true,
)
);
add_role( 'ap_participant', __( 'AnsPress Participants', 'anspress-question-answer' ), array( 'read' => true ) );
add_role( 'ap_banned', __( 'AnsPress Banned', 'anspress-question-answer' ), array( 'read' => true ) );
// @codingStandardsIgnoreEnd
}
/**
* Add new capabilities
*
* @access public
* @since 2.0
* @global WP_Roles $wp_roles
* @return void
*/
public function add_capabilities() {
global $wp_roles;
if ( class_exists( 'WP_Roles' ) && ! isset( $wp_roles ) ) {
$wp_roles = new WP_Roles(); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
}
if ( is_object( $wp_roles ) ) {
$roles = array( 'editor', 'administrator', 'contributor', 'author', 'ap_participant', 'ap_moderator', 'subscriber' );
foreach ( $roles as $role_name ) {
// Add base cpas to all roles.
foreach ( $this->base_caps as $k => $grant ) {
$wp_roles->add_cap( $role_name, $k );
}
if ( in_array( $role_name, array( 'editor', 'administrator', 'ap_moderator' ), true ) ) {
foreach ( $this->mod_caps as $k => $grant ) {
$wp_roles->add_cap( $role_name, $k );
}
}
}
}
}
/**
* Remove an AnsPress role
*/
public static function remove_roles() {
global $wp_roles;
if ( class_exists( 'WP_Roles' ) && ! isset( $wp_roles ) ) {
$wp_roles = new WP_Roles(); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
}
$wp_roles->remove_role( 'ap_participant' );
$wp_roles->remove_role( 'ap_moderator' );
$wp_roles->remove_role( 'ap_banned' );
}
}
Expand full source code Collapse full source code View on GitHub: includes/class/roles-cap.php:21
Add your comment