Make WordPress Core

Changeset 16974


Ignore:
Timestamp:
12/15/2010 11:56:53 PM (16 years ago)
Author:
scribu
Message:

Fetch only the required field in wp_dropdown_users(). See #14572

File:
1 edited

Legend:

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

    r16956 r16974  
    352352        var $total_users = 0;
    353353
    354         // SQL pieces
     354        // SQL clauses
     355        var $query_fields;
    355356        var $query_from;
    356357        var $query_where;
    … …  
    407408                $qv = &$this->query_vars;
    408409
    409                 $this->query_from = " FROM $wpdb->users";
    410                 $this->query_where = " WHERE 1=1";
     410                if ( is_array( $qv['fields'] ) ) {
     411                        $qv['fields'] = array_unique( $qv['fields'] );
     412
     413                        $this->query_fields = array();
     414                        foreach ( $qv['fields'] as $field )
     415                                $this->query_fields[] = $wpdb->users . '.' . esc_sql( $field );
     416                        $this->query_fields = implode( ',', $this->query_fields );
     417                } else {
     418                        $this->query_fields = "$wpdb->users.ID";
     419                }
     420
     421                $this->query_from = "FROM $wpdb->users";
     422                $this->query_where = "WHERE 1=1";
    411423
    412424                // sorting
    … …  
    438450                else
    439451                        $order = 'DESC';
    440                 $this->query_orderby = " ORDER BY $orderby $order";
     452                $this->query_orderby = "ORDER BY $orderby $order";
    441453
    442454                // limit
    443455                if ( $qv['number'] ) {
    444456                        if ( $qv['offset'] )
    445                                 $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $qv['offset'], $qv['number']);
     457                                $this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']);
    446458                        else
    447                                 $this->query_limit = $wpdb->prepare(" LIMIT %d", $qv['number']);
     459                                $this->query_limit = $wpdb->prepare("LIMIT %d", $qv['number']);
    448460                }
    449461
    … …  
    511523                global $wpdb;
    512524
    513                 $this->results = $wpdb->get_col("SELECT $wpdb->users.ID" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit);
     525                if ( is_array( $this->query_vars['fields'] ) ) {
     526                        $this->results = $wpdb->get_results("SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit");
     527                } else {
     528                        $this->results = $wpdb->get_col("SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit");
     529                }
    514530
    515531                if ( !$this->results )
    … …  
    517533
    518534                if ( $this->query_vars['count_total'] )
    519                         $this->total_users = $wpdb->get_var("SELECT COUNT($wpdb->users.ID)" . $this->query_from . $this->query_where);
     535                        $this->total_users = $wpdb->get_var("SELECT COUNT($wpdb->users.ID) $this->query_from $this->query_where $this->query_orderby $this->query_limit");
    520536
    521537                if ( 'all' == $this->query_vars['fields'] ) {
    … …  
    968984        extract( $r, EXTR_SKIP );
    969985
    970         $users = get_users( wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order' ) ) );
     986        $query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order' ) );
     987        $query_args['fields'] = array( 'ID', $show );
     988
     989        $users = get_users( $query_args );
    971990
    972991        $output = '';
Note: See TracChangeset for help on using the changeset viewer.