BP_Friends_Friendship:: search_friends (字符串美元的过滤器,intuser_id美元,int |零美元的限制=零,int |零美元的页面=零)
通过搜索字符串搜索用户的朋友。
描述
参数
- 美元的过滤器
-
(字符串)(必需)搜索字符串,匹配xprofile字段(如果可用),或usermeta 'nickname'字段。
- user_id美元
-
(int)(必需)正在搜索朋友的用户ID。
- 美元的限制
-
(int|零)(可选)返回的朋友的最大数量。
默认值:空
- 美元的页面
-
(int|零)(可选)返回的结果页。默认值:null(没有分页-返回所有结果)。
默认值:空
返回
(数组| bool)成功时,一个数组:{@type array $friends查询返回的好友id。@type int $count匹配搜索的朋友总数(不考虑分页)。}。失败时返回false。
源
文件:bp-friends /类/ class-bp-friends-friendship.php
Public static function search_friends($filter, $user_id, $limit = null, $page = null) {global $wpdb;/* * TODO:优化这个函数。*/ if (empty($user_id)) $user_id = bp_loggedin_user_id();//只搜索// name开头的匹配字符串(@todo -找出为什么这个限制)。$search_terms_like = bp_esc_like($filter)。“%”;$ pag_sql =”;$pag_sql = $wpdb->prepare(" limit %d, %d", intval(($page - 1) * $limit), intval($limit));if (!$friend_ids = BP_Friends_Friendship::get_friend_user_ids($user_id))返回false;//获取当前用户朋友的所有用户id。 $fids = implode( ',', wp_parse_id_list( $friend_ids ) ); if ( empty( $fids ) ) return false; $bp = buddypress(); // Filter the user_ids based on the search criteria. if ( bp_is_active( 'xprofile' ) ) { $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM {$bp->profile->table_name_data} WHERE user_id IN ({$fids}) AND value LIKE %s {$pag_sql}", $search_terms_like ); $total_sql = $wpdb->prepare( "SELECT COUNT(DISTINCT user_id) FROM {$bp->profile->table_name_data} WHERE user_id IN ({$fids}) AND value LIKE %s", $search_terms_like ); } else { $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM {$wpdb->usermeta} WHERE user_id IN ({$fids}) AND meta_key = 'nickname' AND meta_value LIKE %s {$pag_sql}", $search_terms_like ); $total_sql = $wpdb->prepare( "SELECT COUNT(DISTINCT user_id) FROM {$wpdb->usermeta} WHERE user_id IN ({$fids}) AND meta_key = 'nickname' AND meta_value LIKE %s", $search_terms_like ); } $filtered_friend_ids = $wpdb->get_col( $sql ); $total_friend_ids = $wpdb->get_var( $total_sql ); if ( empty( $filtered_friend_ids ) ) return false; return array( 'friends' => array_map( 'intval', $filtered_friend_ids ), 'total' => (int) $total_friend_ids ); }
更新日志
版本 | 描述 |
---|---|
BuddyPress 1.0.0 | 介绍了。 |