/** * 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; }
/** * 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; }
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; }