Make WordPress Core

Ticket #19810: 19810.16.patch

File 19810.16.patch, 8.2 KB (added by Japh, 12 years ago)

Adjustment to the first pass at implementing site autocomplete. It will now user the search term in the query, and inserts the domain for searching.

  • wp-admin/users.php

     
    338338                wp_redirect( add_query_arg( 'paged', $total_pages ) );
    339339                exit;
    340340        }
     341
     342        if ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) )
     343                wp_enqueue_script( 'user-search' );
     344
    341345        include('./admin-header.php');
    342346
    343347        $messages = array();
  • 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', 'autocomplete-user' );
     37$core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache', 'autocomplete-user', 'autocomplete-site' );
    3838
    3939$core_actions_post = array(
    4040        'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
  • wp-admin/includes/ajax-actions.php

     
    150150}
    151151
    152152function wp_ajax_autocomplete_user() {
    153         if ( !is_multisite() || !current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) || !is_super_admin() && apply_filters( 'autocomplete_users_for_site_admins', false ) )
     153        if ( !is_multisite() || !current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) || !is_super_admin() )
    154154                wp_die( -1 );
    155155       
    156156        $return = array();
    157157
     158        // Check the type of request
     159        if ( isset( $_REQUEST['autocomplete_type'] ) )
     160                $type = $_REQUEST['autocomplete_type'];
     161        else
     162                $type = 'add';
     163
    158164        // Exclude current users of this blog
    159165        if ( isset( $_REQUEST['site_id'] ) )
    160166                $id = absint( $_REQUEST['site_id'] );
    161167        else
    162168                $id = get_current_blog_id();
    163169
    164         $this_blog_users = get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) );
     170        $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
     171        $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
    165172
    166173        $users = get_users( array(
    167174                'blog_id' => false,
    168175                'search'  => '*' . $_REQUEST['term'] . '*',
    169                 'exclude' => $this_blog_users,
     176                'include' => $include_blog_users,
     177                'exclude' => $exclude_blog_users,
    170178                'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ),
    171         ) );   
     179        ) );
    172180
    173181        foreach ( $users as $user ) {
    174182                $return[] = array(
     
    181189        wp_die( json_encode( $return ) );
    182190}
    183191
     192function wp_ajax_autocomplete_site() {
     193        if ( !is_multisite() || !current_user_can( 'promote_users' ) || wp_is_large_network( 'sites' ) || !is_super_admin() )
     194                wp_die( -1 );
     195
     196        $return = array();
     197
     198        global $wpdb;
     199        $sites = $wpdb->get_results( $wpdb->prepare( "SELECT blog_id, domain FROM $wpdb->blogs WHERE domain LIKE %s AND public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' ORDER BY registered DESC", '%' . $_REQUEST['term'] . '%' ), ARRAY_A );
     200
     201        if ( !empty( $sites ) ) {
     202
     203                foreach ( (array) $sites as $details ) {
     204                        $blogname = $wpdb->get_var( $wpdb->prepare( "SELECT option_value FROM " . $wpdb->get_blog_prefix( $details['blog_id'] ) . "options WHERE option_name = 'blogname'" ) );
     205                        $return[] = array(
     206                                /* translators: 1: blogname */
     207                                'label' => sprintf( __( '%1$s' ), $blogname ),
     208                                'value' => $details['domain']
     209                        );
     210                }
     211        } else {
     212                wp_die( -1 );
     213        }
     214
     215        wp_die( json_encode( $return ) );
     216}
     217
    184218/*
    185219 * Ajax helper.
    186220 */
     
    16751709
    16761710        update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
    16771711        wp_die( 1 );
    1678 }
    1679  No newline at end of file
     1712}
  • wp-admin/includes/dashboard.php

     
    438438                $actions['create-site'] = '<a href="' . network_admin_url('site-new.php') . '">' . __( 'Create a New Site' ) . '</a>';
    439439        if ( current_user_can('create_users') )
    440440                $actions['create-user'] = '<a href="' . network_admin_url('user-new.php') . '">' . __( 'Create a New User' ) . '</a>';
    441 
     441        if ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) )
     442                wp_enqueue_script( 'user-search' );
     443               
    442444        $c_users = get_user_count();
    443445        $c_blogs = get_blog_count();
    444446
     
    463465
    464466        <form name="searchform" action="<?php echo network_admin_url('users.php'); ?>" method="get">
    465467                <p>
    466                         <input type="text" name="s" value="" size="17" />
     468                        <input type="text" name="s" value="" size="17" id="user-search-input" />
    467469                        <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?>
    468470                </p>
    469471        </form>
    470472
    471473        <form name="searchform" action="<?php echo network_admin_url('sites.php'); ?>" method="get">
    472474                <p>
    473                         <input type="text" name="s" value="" size="17" />
     475                        <input type="text" name="s" value="" size="17" id="site-search-input" />
    474476                        <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?>
    475477                </p>
    476478        </form>
  • wp-admin/js/user-search.dev.js

     
    22        var id = typeof( current_site_id ) != 'undefined' ? '&site_id=' + current_site_id : '';
    33
    44        $( '#adduser-email, #newuser' ).autocomplete({
    5                 source:   ajaxurl + '?action=autocomplete-user' + id,
     5                source:   ajaxurl + '?action=autocomplete-user&autocomplete_type=add' + id,
    66                delay:    500,
    77                minLength: 2
    88        });
    9 });
    10  No newline at end of file
     9
     10        $( '#user-search-input' ).autocomplete({
     11                source:   ajaxurl + '?action=autocomplete-user&autocomplete_type=search' + id,
     12                delay:    500,
     13                minLength: 2
     14        });
     15
     16        $( '#site-search-input' ).autocomplete({
     17                source:   ajaxurl + '?action=autocomplete-site' + id,
     18                delay:    500,
     19                minLength: 2
     20        });
     21});
  • wp-admin/index.php

     
    8888        '<p>' . __( '<a href="http://codex.wordpress.org/Dashboard_Screen" target="_blank">Documentation on Dashboard</a>' ) . '</p>' .
    8989        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
    9090);
    91 
     91       
    9292include (ABSPATH . 'wp-admin/admin-header.php');
    9393
    9494$today = current_time('mysql', 1);
  • wp-admin/network/users.php

     
    247247        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
    248248);
    249249
     250if ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) )
     251        wp_enqueue_script( 'user-search' );
     252
    250253require_once( '../admin-header.php' );
    251254
    252255if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
  • wp-admin/network/site-users.php

     
    171171$parent_file = 'sites.php';
    172172$submenu_file = 'sites.php';
    173173
    174 if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) && !wp_is_large_network( 'users' ) )
     174if ( current_user_can( 'promote_users' ) && !wp_is_large_network( 'users' ) )
    175175        wp_enqueue_script( 'user-search' );
    176176
    177177require('../admin-header.php'); ?>
  • wp-admin/network/sites.php

     
    284284
    285285$wp_list_table->prepare_items();
    286286
     287if ( current_user_can( 'manage_sites' ) && !wp_is_large_network( 'sites' ) )
     288        wp_enqueue_script( 'user-search' );
     289
    287290require_once( '../admin-header.php' );
    288291?>
    289292