WordPress.org

Make WordPress Core

Ticket #5540: get_users_with_cap.patch

File get_users_with_cap.patch, 1.8 KB (added by tellyworth, 6 years ago)

sample implementation of get_users_with_cap()

  • wp-includes/capabilities.php

     
    7171                if ( $this->use_db ) 
    7272                        update_option($this->role_key, $this->roles); 
    7373        } 
     74         
     75        function has_cap($role, $cap) { 
     76                return !empty($this->roles[$role]['capabilities'][$cap]); 
     77        } 
    7478 
    7579        function &get_role($role) { 
    7680                if ( isset($this->role_objects[$role]) ) 
     
    8791        { 
    8892                return isset($this->role_names[$role]); 
    8993        } 
     94         
     95        function get_roles_with_cap($cap) { 
     96                $out = array(); 
     97                foreach ( array_keys($this->roles) as $role ) { 
     98                        if ( $this->has_cap($role, $cap) ) 
     99                                $out[] = $role; 
     100                } 
     101                return $out; 
     102        } 
    90103} 
    91104 
    92105class WP_Role { 
     
    504517        return $wp_roles->is_role($role); 
    505518} 
    506519 
     520function get_roles_with_cap($cap) { 
     521        global $wp_roles; 
     522 
     523        if ( ! isset($wp_roles) ) 
     524                $wp_roles = new WP_Roles(); 
     525 
     526        return $wp_roles->get_roles_with_cap($cap); 
     527} 
     528 
    507529?> 
  • wp-includes/user.php

     
    5656        return $users; 
    5757} 
    5858 
     59// Get users with a given capability for the current blog 
     60function get_users_with_cap( $cap, $id = '' ) { 
     61        global $wpdb, $blog_id; 
     62        if ( empty($id) ) 
     63                $id = (int) $blog_id; 
     64 
     65        $roles = get_roles_with_cap( $cap ); 
     66        if ( empty($roles) ) 
     67                return array(); 
     68        $roles = add_magic_quotes($roles); 
     69         
     70        $users = $wpdb->get_results( "SELECT user_id, user_login, display_name, user_email, role FROM {$wpdb->users}, {$wpdb->user_role} WHERE {$wpdb->users}.ID = {$wpdb->user_role}.user_id AND {$wpdb->user_role}.role IN ('".implode("','", $roles)."') GROUP BY user_id ORDER BY {$wpdb->user_role}.user_id" ); 
     71        return $users; 
     72} 
     73 
     74 
    5975// 
    6076// User meta functions 
    6177//