示例#1
0
 /**
  * Exclude roles created by bbPress
  * 
  * @global array $wp_roles
  * @return array
  */
 public function get_roles()
 {
     global $wp_roles;
     $roles = bbp_filter_blog_editable_roles($wp_roles->roles);
     // exclude bbPress roles
     return $roles;
 }
示例#2
0
 /**
  * return array with WordPress user roles
  * 
  * @global WP_Roles $wp_roles
  * @global type $wp_user_roles
  * @return array
  */
 public function get_user_roles()
 {
     global $wp_roles;
     if (!isset($wp_roles)) {
         $wp_roles = new WP_Roles();
     }
     if (function_exists('bbp_filter_blog_editable_roles')) {
         // bbPress plugin is active
         $this->roles = bbp_filter_blog_editable_roles($wp_roles->roles);
         // exclude bbPress roles
         $bbp_full_caps = bbp_get_caps_for_role(bbp_get_keymaster_role());
         // exclude capabilities automatically added by bbPress bbp_dynamic_role_caps() and not bbPress related: read, level_0, all s2Member levels, e.g. access_s2member_level_0, etc.
         $built_in_wp_caps = $this->get_built_in_wp_caps();
         $bbp_only_caps = array();
         foreach ($bbp_full_caps as $bbp_cap => $val) {
             if (isset($built_in_wp_caps[$bbp_cap]) || substr($bbp_cap, 0, 15) == 'access_s2member') {
                 continue;
             }
             $bbp_only_caps[$bbp_cap] = $val;
         }
         // remove bbPress dynamically created capabilities from WordPress persistent roles in order to not save them to database with any role update
         $cap_removed = false;
         foreach ($bbp_only_caps as $bbp_cap => $val) {
             foreach ($this->roles as &$role) {
                 if (isset($role['capabilities'][$bbp_cap])) {
                     unset($role['capabilities'][$bbp_cap]);
                     $cap_removed = true;
                 }
             }
         }
     } else {
         $this->roles = $wp_roles->roles;
     }
     if (is_array($this->roles) && count($this->roles) > 0) {
         asort($this->roles);
     }
     return $this->roles;
 }
示例#3
0
function ure_getUserRoles()
{
    global $wp_roles, $wpdb;
    if (!isset($wp_roles)) {
        $wp_roles = new WP_Roles();
    }
    if (function_exists('bbp_filter_blog_editable_roles')) {
        // bbPress plugin is active
        $ure_roles = bbp_filter_blog_editable_roles($wp_roles->roles);
        // exclude bbPress roles
        $bbp_full_caps = bbp_get_caps_for_role(bbp_get_keymaster_role());
        // remove bbPress dinamically created capabilities from WordPress persistent roles in case we caught some with previouse URE version
        $cap_removed = false;
        foreach ($bbp_full_caps as $bbp_cap => $val) {
            foreach ($ure_roles as &$role) {
                if (isset($role['capabilities'][$bbp_cap])) {
                    unset($role['capabilities'][$bbp_cap]);
                    $cap_removed = true;
                }
            }
        }
        if ($cap_removed) {
            // save changes to database
            $option_name = $wpdb->prefix . 'user_roles';
            update_option($option_name, $ure_roles);
        }
    } else {
        $ure_roles = $wp_roles->roles;
    }
    if (is_array($ure_roles) && count($ure_roles) > 0) {
        asort($ure_roles);
    }
    return $ure_roles;
}