Make WordPress Core

Changeset 13122


Ignore:
Timestamp:
02/13/2010 08:12:08 PM (16 years ago)
Author:
nacin
Message:

Don't query against entire users table in wp_dropdown_users() to be multisite friendly. Fixes #11086

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/user.php

    r12879 r13122  
    508508 * <li>name - Default is 'user'. Name attribute of select element.</li>
    509509 * <li>class - Class attribute of select element.</li>
     510 * <li>blog - ID of blog (Multisite only). Defaults to ID of current blog.</li>
    510511 * </ol>
    511512 *
     
    517518 */
    518519function wp_dropdown_users( $args = '' ) {
    519     global $wpdb;
     520    global $wpdb, $blog_id;
    520521    $defaults = array(
    521522        'show_option_all' => '', 'show_option_none' => '',
     
    523524        'include' => '', 'exclude' => '', 'multi' => 0,
    524525        'show' => 'display_name', 'echo' => 1,
    525         'selected' => 0, 'name' => 'user', 'class' => ''
     526        'selected' => 0, 'name' => 'user', 'class' => '', 'blog' => $blog_id,
    526527    );
    527528
     
    531532    extract( $r, EXTR_SKIP );
    532533
    533     $query = "SELECT * FROM $wpdb->users";
     534    $blog_prefix = $wpdb->get_blog_prefix( $blog );
     535    $query = "SELECT {$wpdb->users}.* FROM $wpdb->users, $wpdb->usermeta WHERE {$wpdb->users}.ID = {$wpdb->usermeta}.user_id AND meta_key = '{$blog_prefix}capabilities'";
    534536
    535537    $query_where = array();
     
    548550
    549551    if ( $query_where )
    550         $query .= " WHERE " . join(' AND', $query_where);
     552        $query .= " AND " . join(' AND', $query_where);
    551553
    552554    $query .= " ORDER BY $orderby $order";
Note: See TracChangeset for help on using the changeset viewer.