Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
04/20/2009 10:56:00 AM (17 years ago)
Author:
apeatling
Message:

Fixes #680

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-friends/bp-friends-classes.php

    r1351 r1356  
    142142        global $wpdb, $bp;
    143143       
     144        // TODO: Optimize this function.
     145       
    144146        if ( !$user_id )
    145147            $user_id = $bp->loggedin_user->id;
    146148       
    147149        like_escape($filter);
    148         $usermeta_table = $wpdb->prefix . 'usermeta';
    149150       
    150151        if ( $limit && $page )
     
    156157        // Get all the user ids for the current user's friends.
    157158        $fids = implode( ',', $friend_ids );
     159       
     160        if ( empty($fids) )
     161            return false;
    158162
    159163        // filter the user_ids based on the search criteria.
    160164        if ( function_exists('xprofile_install') ) {
    161             $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%'" );
    162         } else {
    163             $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM $usermeta_table WHERE user_id IN ($fids) AND meta_key = 'nickname' AND meta_value LIKE '$filter%%'" );
    164         }
    165 
    166         $filtered_friends = $wpdb->get_results( $sql, ARRAY_A );   
    167 
    168         if ( !$filtered_friends )
    169             return false;
    170 
    171         // Get the total number of friendships
    172         $total_friends = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->friends->table_name} WHERE (friend_user_id IN ($filtered_fids) AND initiator_user_id = %d) OR (initiator_user_id IN ($filtered_fids) AND friend_user_id = %d)", $user_id, $user_id ) );
    173        
    174         return array( 'friends' => $filtered_friends, 'total' => $total_friends );
    175     }
    176        
     165            $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%' {$pag_sql}" );
     166            $total_sql = $wpdb->prepare( "SELECT DISTINCT count(user_id) FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%'" );
     167        } else {
     168            $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM " . CUSTOM_USER_META_TABLE . " WHERE user_id IN ($fids) AND meta_key = 'nickname' AND meta_value LIKE '$filter%%' {$pag_sql}" );
     169            $total_sql = $wpdb->prepare( "SELECT DISTINCT count(user_id) FROM " . CUSTOM_USER_META_TABLE . " WHERE user_id IN ($fids) AND meta_key = 'nickname' AND meta_value LIKE '$filter%%'" );
     170        }
     171
     172        $filtered_friend_ids = $wpdb->get_results($sql);   
     173        $total_friend_ids = $wpdb->get_var($sql);   
     174       
     175        if ( !$filtered_friend_ids )
     176            return false;
     177
     178        return array( 'friends' => $filtered_friend_ids, 'total' => (int)$total_friend_ids );
     179    }
     180           
    177181    function check_is_friend( $loggedin_userid, $possible_friend_userid ) {
    178182        global $wpdb, $bp;
Note: See TracChangeset for help on using the changeset viewer.