BP_REST_Members_Endpoint::rest_bp_ps_search( array $request )
Returns BuddyBoss Profile Search results.
Description
Parameters
- $request
-
(Required) Array of filter's data.
Return
(array)
Source
File: bp-members/classes/class-bp-rest-members-endpoint.php
public function rest_bp_ps_search( $request ) {
$results = array(
'users' => array( 0 ),
'validated' => true,
);
$fields = bp_ps_parse_request( $request );
$copied_arr = array();
foreach ( $fields as $f ) {
if ( ! isset( $f->filter ) ) {
continue;
}
if ( ! is_callable( $f->search ) ) {
continue;
}
$f = apply_filters( 'bp_ps_field_before_query', $f );
$found = call_user_func( $f->search, $f );
$found = apply_filters( 'bp_ps_field_search_results', $found, $f );
$copied_arr = $found;
if ( isset( $copied_arr ) && ! empty( $copied_arr ) ) {
foreach ( $copied_arr as $key => $user ) {
$field_visibility = xprofile_get_field_visibility_level( intval( $f->id ), intval( $user ) );
if ( 'adminsonly' === $field_visibility && ! current_user_can( 'administrator' ) ) {
$key = array_search( $user, $found, true );
if ( false !== $key ) {
unset( $found[ $key ] );
}
}
if ( 'friends' === $field_visibility && ! current_user_can( 'administrator' ) && false === friends_check_friendship( intval( $user ), get_current_user_id() ) ) {
$key = array_search( $user, $found, true );
if ( false !== $key ) {
unset( $found[ $key ] );
}
}
}
}
$match_all = apply_filters( 'bp_ps_match_all', true );
if ( $match_all ) {
$users = isset( $users ) ? array_intersect( $users, $found ) : $found;
if ( count( $users ) === 0 ) {
return $results;
}
} else {
$users = isset( $users ) ? array_merge( $users, $found ) : $found;
}
}
if ( isset( $users ) ) {
$results['users'] = $users;
} else {
$results['validated'] = false;
}
return $results;
}
Changelog
| Version | Description |
|---|---|
| 0.1.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.