WordPress.org

Make WordPress Core

Ticket #19810: 19810.diff

File 19810.diff, 6.3 KB (added by nacin, 6 years ago)
  • wp-includes/user.php

     
    378378                                'include' => array(),
    379379                                'exclude' => array(),
    380380                                'search' => '',
     381                                'search_columns' => array(),
    381382                                'orderby' => 'login',
    382383                                'order' => 'ASC',
    383384                                'offset' => '',
     
    476477                        if ( $wild )
    477478                                $search = trim($search, '*');
    478479
    479                         if ( false !== strpos( $search, '@') )
    480                                 $search_columns = array('user_email');
    481                         elseif ( is_numeric($search) )
    482                                 $search_columns = array('user_login', 'ID');
    483                         elseif ( preg_match('|^https?://|', $search) )
    484                                 $search_columns = array('user_url');
    485                         else
    486                                 $search_columns = array('user_login', 'user_nicename');
     480                        $search_columns = array();
     481                        if ( $qv['search_columns'] )
     482                                $search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) );
     483                        if ( ! $search_columns ) {
     484                                if ( false !== strpos( $search, '@') )
     485                                        $search_columns = array('user_email');
     486                                elseif ( is_numeric($search) )
     487                                        $search_columns = array('user_login', 'ID');
     488                                elseif ( preg_match('|^https?://|', $search) )
     489                                        $search_columns = array('user_url');
     490                                else
     491                                        $search_columns = array('user_login', 'user_nicename');
     492                        }
    487493
    488494                        $this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
    489495                }
  • wp-includes/script-loader.php

     
    260260
    261261        $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter' ), false, 1 );
    262262
     263        $scripts->add( 'user-search', "/wp-admin/js/user-search$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 );
     264
    263265        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", array(), false, 1 );
    264266
    265267        $scripts->add( 'wplink', "/wp-includes/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), false, 1 );
  • wp-admin/admin-ajax.php

     
    3434
    3535do_action( 'admin_init' );
    3636
    37 $core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed_cache' );
     37$core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed_cache', 'autocomplete-user' );
    3838
    3939$core_actions_post = array(
    4040        'oembed_cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
  • wp-admin/includes/ajax-actions.php

     
    146146        wp_die( $return );
    147147}
    148148
     149function wp_ajax_autocomplete_user() {
     150        $return = array();
     151
     152        // Exclude current users of this blog
     153        $this_blog_users = get_users( array( 'blog_id' => get_current_blog_id(), 'fields' => 'ID' ) );
     154
     155        $users = get_users( array(
     156                'blog_id' => false,
     157                'search'  => '*' . $_REQUEST['term'] . '*',
     158                'exclude' => $this_blog_users,
     159                'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ),
     160        ) );
     161
     162        foreach ( $users as $user ) {
     163                $return[] = array(
     164                        /* translators: 1: user_login, 2: user_email */
     165                        'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ),
     166                        'value' => $user->user_login,
     167                );
     168        }
     169
     170        wp_die( json_encode( $return ) );
     171}
     172
    149173/*
    150174 * Ajax helper.
    151175 */
  • wp-admin/js/user-search.dev.js

     
     1(function($){   
     2        $(document).ready(function() { 
     3                var ainput = $('#adduser-email'),
     4                        options = {
     5                                source: ajaxurl + '?action=autocomplete-user',
     6                                appendTo: 'form#adduser',
     7                                select: function( e, ui ){ ainput.val( ui.item.value ); },
     8                                delay: 500, // milliseconds
     9                                minLength: 2, // Don't want to match a crazy number of items.
     10                        };
     11                ainput.autocomplete(options);
     12        });
     13})(jQuery);
     14 No newline at end of file
  • wp-admin/user-new.php

     
    178178
    179179wp_enqueue_script('wp-ajax-response');
    180180wp_enqueue_script('user-profile');
     181if ( is_multisite() )
     182        wp_enqueue_script('user-search');
    181183
    182184require_once ('admin-header.php');
    183185
  • wp-admin/css/wp-admin.dev.css

     
    892892        margin: 0;
    893893}
    894894
     895#wpcontent input[type="text"].ui-autocomplete-loading {
     896        background: transparent url('../images/loading.gif') no-repeat right center;
     897        visibility: visible;
     898}
    895899
     900ul#add-to-blog-users {
     901        margin: 0 0 0 14px;
     902}
     903
     904form#adduser ul.ui-autocomplete {
     905        padding: 0;
     906        margin: 0;
     907        list-style: none;
     908        position: absolute;
     909        z-index: 10000;
     910        border-width: 1px;
     911        border-style: solid;
     912
     913        background-color: #ffffff;
     914        border-color: gray;
     915}
     916
     917form#adduser .ui-widget-content {
     918        background: #ececec;
     919}
     920
     921form#adduser .ui-widget-content li {
     922        padding: 2px 5px;
     923        white-space: nowrap;
     924        text-align: left;
     925        color: #101010;
     926}
     927
     928form#adduser .ui-widget-content li a {
     929        display: block;
     930        height: 100%;
     931        padding: 2px 5px;
     932        color: #333;
     933}
     934
     935form#adduser .ui-widget-content li a.ui-state-hover {
     936        background-color: #f0f0b8;
     937}
     938
     939form#adduser a.remove {
     940        margin: 6px 0pt 0pt -12px;
     941        cursor: pointer;
     942        width: 10px;
     943        height: 10px;
     944        display: block;
     945        float: left;
     946        text-indent: -9999px;
     947        overflow: hidden;
     948        position: absolute;
     949        background: transparent url(../images/xit.gif) no-repeat;
     950}
     951
     952form#adduser a.remove:hover {
     953        background: transparent url(../images/xit.gif) no-repeat -10px 0;
     954}
     955
     956
    896957/*------------------------------------------------------------------------------
    897958  3.0 - Actions
    898959------------------------------------------------------------------------------*/