BP_REST_Members_Details_Endpoint::get_item( WP_REST_Request $request )
Retrieve member detail.
Description
Parameters
- $request
-
(Required) Full details about the request.
Return
(WP_REST_Response) | WP_Error
Source
File: bp-members/classes/class-bp-rest-members-details-endpoint.php
public function get_item( $request ) {
$retval = array();
global $bp;
$current_user_id = $request->get_param( 'id' );
$this->user_id = $current_user_id;
if ( empty( $current_user_id ) ) {
$current_user_id = bp_loggedin_user_id();
}
if ( empty( $current_user_id ) ) {
return new WP_Error(
'bp_rest_component_required',
__( 'Sorry, Invalid member ID.', 'buddyboss' ),
array(
'status' => '404',
)
);
}
$user = bp_rest_get_user( $current_user_id );
if ( ! $user instanceof WP_User ) {
return new WP_Error(
'bp_rest_member_invalid_id',
__( 'Invalid member ID.', 'buddyboss' ),
array(
'status' => 404,
)
);
}
add_filter( 'bp_displayed_user_id', array( $this, 'bp_rest_get_displayed_user' ), 999 );
bp_setup_nav();
remove_filter( 'bp_displayed_user_id', array( $this, 'bp_rest_get_displayed_user' ), 999 );
$profile_tabs = array();
$default_tab = 'profile';
$navs = buddypress()->members->nav;
// if it's nouveau then let it order the tabs.
if ( function_exists( 'bp_nouveau_set_nav_item_order' ) ) {
bp_nouveau_set_nav_item_order( $navs, bp_nouveau_get_appearance_settings( 'user_nav_order' ) );
}
if ( function_exists( 'bp_nouveau_get_appearance_settings' ) ) {
$tab = bp_nouveau_get_appearance_settings( 'user_default_tab' );
$default_tab = bp_is_active( $tab ) ? $tab : $default_tab;
}
$id_map = array(
'activity' => 'activities',
'profile' => 'xprofile',
);
if ( ! empty( $navs->get_primary() ) ) {
foreach ( $navs->get_primary() as $nav ) {
$name = $nav['name'];
$id = $nav['slug'];
// remove the notification numbers.
$name = preg_replace( '/^(.*)(<(.*)<\/(.*)>)/', '$1', $name );
$name = trim( $name );
if ( isset( $id_map[ $id ] ) ) {
$id = $id_map[ $id ];
}
$tab = array(
'id' => $id,
'title' => $name,
'default' => false,
'count' => ( $this->bp_rest_nav_has_count( $nav ) ? $this->bp_rest_get_nav_count( $nav ) : '' ),
'show_for_displayed_user' => $nav['show_for_displayed_user'],
'children' => array(),
);
if ( $default_tab === $nav['slug'] ) {
$tab['default'] = true;
}
$nav_sub = $navs->get_secondary(
array(
'parent_slug' => $id,
'user_has_access' => true,
)
);
if ( ! empty( $nav_sub ) ) {
foreach ( $nav_sub as $s_nav ) {
$sub_name = preg_replace( '/^(.*)(<(.*)<\/(.*)>)/', '$1', $s_nav['name'] );
$sub_name = trim( $sub_name );
$sub_nav = array(
'id' => $s_nav['slug'],
'title' => $sub_name,
'count' => ( $this->bp_rest_nav_has_count( $s_nav ) ? $this->bp_rest_get_nav_count( $s_nav ) : '' ),
'position' => $s_nav['position'],
'user_has_access' => $s_nav['user_has_access'],
);
$tab['children'][] = $sub_nav;
}
}
$profile_tabs[] = apply_filters( 'bp_rest_profile_tab', $tab, $nav );
}
}
$retval['tabs'] = array_values( $profile_tabs );
$response = rest_ensure_response( $retval );
/**
* Fires after a list of members details is fetched via the REST API.
*
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
do_action( 'bp_rest_members_detail_get_items', $response, $request );
return $response;
}
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.