WordPress.org

Make WordPress Core

Ticket #16014: 16014.4.diff

File 16014.4.diff, 2.8 KB (added by SergeyBiryukov, 4 years ago)
  • wp-admin/includes/class-wp-ms-users-list-table.php

     
    3131                        'fields' => 'all_with_meta' 
    3232                ); 
    3333 
     34                $args['search'] = ltrim($args['search'], '*'); 
     35 
    3436                if ( $role == 'super' ) { 
    3537                        $logins = implode( "', '", get_super_admins() ); 
    3638                        $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" ); 
  • wp-admin/includes/class-wp-users-list-table.php

     
    5151                        'fields' => 'all_with_meta' 
    5252                ); 
    5353 
     54                $args['search'] = '*' . $args['search'] . '*'; 
     55 
    5456                if ( $this->is_site_users ) 
    5557                        $args['blog_id'] = $this->site_id; 
    5658 
  • wp-includes/user.php

     
    465465 
    466466                $search = trim( $qv['search'] ); 
    467467                if ( $search ) { 
    468                         $wild = false; 
    469                         if ( false !== strpos($search, '*') ) { 
    470                                 $wild = true; 
     468                        $leading_wild = ( ltrim($search, '*') != $search ); 
     469                        $trailing_wild = ( rtrim($search, '*') != $search ); 
     470                        if ( $leading_wild && $trailing_wild ) 
     471                                $wild = 'both'; 
     472                        elseif ( $leading_wild ) 
     473                                $wild = 'leading'; 
     474                        elseif ( $trailing_wild ) 
     475                                $wild = 'trailing'; 
     476                        else 
     477                                $wild = false; 
     478                        if ( $wild ) 
    471479                                $search = trim($search, '*'); 
    472                         } 
     480 
    473481                        if ( false !== strpos( $search, '@') ) 
    474482                                $search_columns = array('user_email'); 
    475483                        elseif ( is_numeric($search) ) 
     
    564572         * 
    565573         * @param string $string 
    566574         * @param array $cols 
    567          * @param bool $wild Whether to allow trailing wildcard searches. Default is false. 
     575         * @param bool $wild Whether to allow wildcard searches. Default is false for Network Admin, true for 
     576         *  single site. Single site allows leading and trailing wildcards, Network Admin only trailing. 
    568577         * @return string 
    569578         */ 
    570579        function get_search_sql( $string, $cols, $wild = false ) { 
    571580                $string = esc_sql( $string ); 
    572581 
    573582                $searches = array(); 
    574                 $wild_char = ( $wild ) ? '%' : ''; 
     583                $leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : ''; 
     584                $trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : ''; 
    575585                foreach ( $cols as $col ) { 
    576586                        if ( 'ID' == $col ) 
    577587                                $searches[] = "$col = '$string'"; 
    578588                        else 
    579                                 $searches[] = "$col LIKE '" . like_escape($string) . "$wild_char'"; 
     589                                $searches[] = "$col LIKE '$leading_wild" . like_escape($string) . "$trailing_wild'"; 
    580590                } 
    581591 
    582592                return ' AND (' . implode(' OR ', $searches) . ')';