Skip to:
Content

BuddyPress.org

Ticket #5155: 5155.diff

File 5155.diff, 7.6 KB (added by imath, 11 years ago)
  • bp-themes/bp-default/_inc/ajax.php

     
    901901        $pag_page = 1;
    902902        $limit    = (int) $_GET['limit'] ? $_GET['limit'] : apply_filters( 'bp_autocomplete_max_results', 10 );
    903903
     904        $query_args = array(
     905                'search_terms' => $_GET['q'], 
     906                'per_page'     => $limit,
     907                'page'         => $pag_page
     908        );
     909
    904910        // Get the user ids based on the search terms
    905911        if ( ! empty( $autocomplete_all ) ) {
    906                 $users = BP_Core_User::search_users( $_GET['q'], $limit, $pag_page );
    907912
     913                $users = bp_core_get_users( $query_args );
     914
    908915                if ( ! empty( $users['users'] ) ) {
    909916                        // Build an array with the correct format
    910917                        $user_ids = array();
     
    919926
    920927        } else {
    921928                if ( bp_is_active( 'friends' ) ) {
    922                         $users = friends_search_friends( $_GET['q'], bp_loggedin_user_id(), $limit, 1 );
    923929
     930                        $query_args['user_id'] = bp_loggedin_user_id();
     931                        $users = bp_core_get_users( $query_args );
     932
     933                        if ( ! empty( $users['users'] ) ) {
     934                                // Build an array with the correct format
     935                                $friends = array();
     936                                foreach( $users['users'] as $user ) {
     937                                        if ( $user->id != bp_loggedin_user_id() ) {
     938                                                $friends['friends'][] = $user->id;
     939                                        }
     940                                }
     941                        }
     942                       
     943                        $friends['total'] = $users['total'];
     944
    924945                        // Keeping the bp_friends_autocomplete_list filter for backward compatibility
    925                         $users = apply_filters( 'bp_friends_autocomplete_list', $users, $_GET['q'], $limit );
     946                        $friends = apply_filters( 'bp_friends_autocomplete_list', $friends, $_GET['q'], $limit );
    926947
    927                         if ( ! empty( $users['friends'] ) ) {
    928                                 $user_ids = apply_filters( 'bp_friends_autocomplete_ids', $users['friends'], $_GET['q'], $limit );
     948                        if ( ! empty( $friends['friends'] ) ) {
     949                                $user_ids = apply_filters( 'bp_friends_autocomplete_ids', $friends['friends'], $_GET['q'], $limit );
    929950                        }
    930951                }
    931952        }
  • bp-core/bp-core-classes.php

     
    355355                // 'search_terms' searches the xprofile fields
    356356                // To avoid global joins, do a separate query
    357357                // @todo remove need for bp_is_active() check
    358                 if ( false !== $search_terms && bp_is_active( 'xprofile' ) ) {
     358                if ( false !== $search_terms ) {
    359359                        $search_terms_clean = mysql_real_escape_string( mysql_real_escape_string( $search_terms ) );
    360360                        $search_terms_clean = like_escape( $search_terms_clean );
    361                         $found_user_ids_query = "SELECT user_id FROM {$bp->profile->table_name_data} WHERE value LIKE '%" . $search_terms_clean . "%'";
     361
     362                        if( bp_is_active( 'xprofile' ) )
     363                                $found_user_ids_query = "SELECT DISTINCT(user_id) FROM {$bp->profile->table_name_data} xprofile LEFT JOIN {$wpdb->users} wpusers ON( xprofile.user_id = wpusers.ID ) WHERE xprofile.value LIKE '%" . $search_terms_clean . "%' wpusers.user_login LIKE '%" . $search_terms_clean . "%' OR wpusers.user_nicename LIKE '%" . $search_terms_clean . "%'";
     364                        else
     365                                $found_user_ids_query = "SELECT DISTINCT(ID) as user_id FROM {$wpdb->users} WHERE user_login LIKE '%" . $search_terms_clean . "%' OR user_nicename LIKE '%" . $search_terms_clean . "%'";
     366
    362367                        $found_user_ids = $wpdb->get_col( $found_user_ids_query );
    363368
    364369                        if ( ! empty( $found_user_ids ) ) {
     
    11051110                $search_terms = esc_sql( like_escape( $search_terms ) );
    11061111                $status_sql   = bp_core_get_status_sql( 'u.' );
    11071112
    1108                 $total_users_sql = apply_filters( 'bp_core_search_users_count_sql', "SELECT COUNT(DISTINCT u.ID) as id FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id WHERE {$status_sql} AND pd.value LIKE '%%{$search_terms}%%' ORDER BY pd.value ASC", $search_terms );
    1109                 $paged_users_sql = apply_filters( 'bp_core_search_users_sql',       "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id WHERE {$status_sql} AND pd.value LIKE '%%{$search_terms}%%' ORDER BY pd.value ASC{$pag_sql}", $search_terms, $pag_sql );
    1110 
     1113                if( bp_is_active( 'xprofile' ) ) {
     1114                        $total_users_sql = apply_filters( 'bp_core_search_users_count_sql', "SELECT COUNT(DISTINCT u.ID) as id FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id WHERE {$status_sql} AND pd.value LIKE '%%{$search_terms}%%' ORDER BY pd.value ASC", $search_terms );
     1115                        $paged_users_sql = apply_filters( 'bp_core_search_users_sql',       "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id WHERE {$status_sql} AND pd.value LIKE '%%{$search_terms}%%' ORDER BY pd.value ASC{$pag_sql}", $search_terms, $pag_sql );
     1116                } else {
     1117                        $total_users_sql = apply_filters( 'bp_core_search_users_count_sql', "SELECT COUNT(DISTINCT u.ID) as id FROM {$wpdb->users} u WHERE {$status_sql} AND ( u.user_login LIKE '%%{$search_terms}%%' OR u.user_nicename LIKE '%%{$search_terms}%%' ) ORDER BY u.user_nicename ASC", $search_terms );
     1118                        $paged_users_sql = apply_filters( 'bp_core_search_users_sql',       "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM {$wpdb->users} u WHERE {$status_sql} AND ( u.user_login LIKE '%%{$search_terms}%%' OR u.user_nicename LIKE '%%{$search_terms}%%' ) ORDER BY u.user_nicename ASC{$pag_sql}", $search_terms, $pag_sql );
     1119                }
     1120               
    11111121                $total_users = $wpdb->get_var( $total_users_sql );
    11121122                $paged_users = $wpdb->get_results( $paged_users_sql );
    11131123
  • bp-templates/bp-legacy/buddypress-functions.php

     
    12501250        $pag_page = 1;
    12511251        $limit    = (int) $_GET['limit'] ? $_GET['limit'] : apply_filters( 'bp_autocomplete_max_results', 10 );
    12521252
     1253        $query_args = array(
     1254                'search_terms' => $_GET['q'], 
     1255                'per_page'     => $limit,
     1256                'page'         => $pag_page
     1257        );
     1258
    12531259        // Get the user ids based on the search terms
    12541260        if ( ! empty( $autocomplete_all ) ) {
    1255                 $users = BP_Core_User::search_users( $_GET['q'], $limit, $pag_page );
    12561261
     1262                $users = bp_core_get_users( $query_args );
     1263
    12571264                if ( ! empty( $users['users'] ) ) {
    12581265                        // Build an array with the correct format
    12591266                        $user_ids = array();
     
    12681275
    12691276        } else {
    12701277                if ( bp_is_active( 'friends' ) ) {
    1271                         $users = friends_search_friends( $_GET['q'], bp_loggedin_user_id(), $limit, 1 );
    12721278
     1279                        $query_args['user_id'] = bp_loggedin_user_id();
     1280                        $users = bp_core_get_users( $query_args );
     1281
     1282                        if ( ! empty( $users['users'] ) ) {
     1283                                // Build an array with the correct format
     1284                                $friends = array();
     1285                                foreach( $users['users'] as $user ) {
     1286                                        if ( $user->id != bp_loggedin_user_id() ) {
     1287                                                $friends['friends'][] = $user->id;
     1288                                        }
     1289                                }
     1290                        }
     1291                       
     1292                        $friends['total'] = $users['total'];
     1293
    12731294                        // Keeping the bp_friends_autocomplete_list filter for backward compatibility
    1274                         $users = apply_filters( 'bp_friends_autocomplete_list', $users, $_GET['q'], $limit );
     1295                        $friends = apply_filters( 'bp_friends_autocomplete_list', $friends, $_GET['q'], $limit );
    12751296
    1276                         if ( ! empty( $users['friends'] ) ) {
    1277                                 $user_ids = apply_filters( 'bp_friends_autocomplete_ids', $users['friends'], $_GET['q'], $limit );
     1297                        if ( ! empty( $friends['friends'] ) ) {
     1298                                $user_ids = apply_filters( 'bp_friends_autocomplete_ids', $friends['friends'], $_GET['q'], $limit );
    12781299                        }
    12791300                }
    12801301        }