WordPress.org

Make WordPress Core

Ticket #16014: 16014.2.diff

File 16014.2.diff, 1.7 KB (added by SergeyBiryukov, 7 years ago)
  • wp-includes/user.php

     
    465465
    466466                $search = trim( $qv['search'] );
    467467                if ( $search ) {
    468                         $wild = false;
    469                         if ( false !== strpos($search, '*') ) {
     468                        if ( is_multisite() )
     469                                $wild = ( false !== strpos($search, '*') );
     470                        else
    470471                                $wild = true;
    471                                 $search = trim($search, '*');
    472                         }
     472                        $search = trim($search, '*');
    473473                        if ( false !== strpos( $search, '@') )
    474474                                $search_columns = array('user_email');
    475475                        elseif ( is_numeric($search) )
     
    564564         *
    565565         * @param string $string
    566566         * @param array $cols
    567          * @param bool $wild Whether to allow trailing wildcard searches. Default is false.
     567         * @param bool $wild Whether to allow wildcard searches. Default is false for multisite, true for
     568         *  single site. Single site allows leading and trailing wildcards, multisite only trailing.
    568569         * @return string
    569570         */
    570         function get_search_sql( $string, $cols, $wild = false ) {
     571        function get_search_sql( $string, $cols, $wild = null ) {
    571572                $string = esc_sql( $string );
    572573
    573574                $searches = array();
    574                 $wild_char = ( $wild ) ? '%' : '';
     575                if ( null === $wild )
     576                        $wild = ! is_multisite();
     577
     578                $trailing_wild = ( $wild ) ? '%' : '';
     579                $leading_wild = $wild && ! is_multisite() ? '%' : '';
    575580                foreach ( $cols as $col ) {
    576581                        if ( 'ID' == $col )
    577582                                $searches[] = "$col = '$string'";
    578583                        else
    579                                 $searches[] = "$col LIKE '" . like_escape($string) . "$wild_char'";
     584                                $searches[] = "$col LIKE '$leading_wild" . like_escape($string) . "$trailing_wild'";
    580585                }
    581586
    582587                return ' AND (' . implode(' OR ', $searches) . ')';