Make WordPress Core


Ignore:
Timestamp:
05/29/2007 04:28:10 AM (19 years ago)
Author:
ryan
Message:

Post and page management filter additions from mdawaffe. see #3945

File:
1 edited

Legend:

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

    r5194 r5587  
    180180}
    181181
     182function wp_dropdown_users( $args = '' ) {
     183        global $wpdb;
     184        $defaults = array(
     185                'show_option_all' => '', 'show_option_none' => '',
     186                'orderby' => 'display_name', 'order' => 'ASC',
     187                'include' => '', 'exclude' => '',
     188                'show' => 'display_name', 'echo' => 1,
     189                'selected' => 0, 'name' => 'user', 'class' => ''
     190        );
     191       
     192        $defaults['selected'] = is_author() ? get_query_var( 'author' ) : 0;
     193       
     194        $r = wp_parse_args( $args, $defaults );
     195        extract( $r );
     196
     197        $query = "SELECT * FROM $wpdb->users";
     198
     199        $query_where = array();
     200
     201        if ( is_array($include) )
     202                $include = join(',', $include);
     203        $include = preg_replace('/[^0-9,]/', '', $include); // (int)
     204        if ( $include )
     205                $query_where[] = "ID IN ($include)";
     206
     207        if ( is_array($exclude) )
     208                $exclude = join(',', $exclude);
     209        $exclude = preg_replace('/[^0-9,]/', '', $exclude); // (int)
     210        if ( $exclude )
     211                $query_where[] = "ID NOT IN ($exclude)";
     212
     213        if ( $query_where )
     214                $query .= " WHERE " . join(' AND', $query_where);
     215
     216        $query .= " ORDER BY $orderby $order";
     217
     218        $users = $wpdb->get_results( $query );
     219
     220        $output = '';
     221        if ( !empty($users) ) {
     222                $output = "<select name='$name' id='$name' class='$class'>\n";
     223
     224                if ( $show_option_all )
     225                        $output .= "\t<option value='0'>$show_option_all</option>\n";
     226
     227                if ( $show_option_none )
     228                        $output .= "\t<option value='-1'>$show_option_none</option>\n";
     229
     230                foreach ( $users as $user ) {
     231                        $user->ID = (int) $user->ID;
     232                        $_selected = $user->ID == $selected ? " selected='selected'" : '';
     233                        $output .= "\t<option value='$user->ID'$_selected>" . wp_specialchars($user->$show) . "</option>\n";
     234                }
     235
     236                $output .= "</select>";
     237        }
     238
     239        $output = apply_filters('wp_dropdown_users', $output);
     240
     241        if ( $echo )
     242                echo $output;
     243
     244        return $output;
     245}
     246
    182247?>
Note: See TracChangeset for help on using the changeset viewer.