BP_REST_Groups_Endpoint::prepare_item_for_response( BP_Groups_Group $item, WP_REST_Request $request )
Prepares group data for return as an object.
Description Description
Parameters Parameters
- $item
-
(Required) Group object.
- $request
-
(Required) Full details about the request.
Return Return
(WP_REST_Response)
Source Source
File: bp-groups/classes/class-bp-rest-groups-endpoint.php
public function prepare_item_for_response( $item, $request ) {
$data = array(
'id' => $item->id,
'creator_id' => bp_get_group_creator_id( $item ),
'parent_id' => $item->parent_id,
'date_created' => bp_rest_prepare_date_response( $item->date_created ),
'description' => array(
'raw' => $item->description,
'rendered' => bp_get_group_description( $item ),
),
'enable_forum' => bp_group_is_forum_enabled( $item ),
'link' => bp_get_group_permalink( $item ),
'name' => bp_get_group_name( $item ),
'slug' => bp_get_group_slug( $item ),
'status' => bp_get_group_status( $item ),
'admins' => array(),
'mods' => array(),
'total_member_count' => null,
'last_activity' => null,
);
// Get item schema.
$schema = $this->get_item_schema();
// Avatars.
if ( ! empty( $schema['properties']['avatar_urls'] ) ) {
$data['avatar_urls'] = array(
'thumb' => bp_core_fetch_avatar(
array(
'html' => false,
'object' => 'group',
'item_id' => $item->id,
'type' => 'thumb',
)
),
'full' => bp_core_fetch_avatar(
array(
'html' => false,
'object' => 'group',
'item_id' => $item->id,
'type' => 'full',
)
),
);
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
// If this is the 'edit' context, fill in more details--similar to "populate_extras".
if ( 'edit' === $context ) {
$data['total_member_count'] = groups_get_groupmeta( $item->id, 'total_member_count' );
$data['last_activity'] = bp_rest_prepare_date_response( groups_get_groupmeta( $item->id, 'last_activity' ) );
// Add admins and moderators to their respective arrays.
$admin_mods = groups_get_group_members(
array(
'group_id' => $item->id,
'group_role' => array(
'admin',
'mod',
),
)
);
foreach ( (array) $admin_mods['members'] as $user ) {
// Make sure to unset private data.
$private_keys = array_intersect(
array_keys( get_object_vars( $user ) ),
array(
'user_pass',
'user_email',
'user_activation_key',
)
);
foreach ( $private_keys as $private_key ) {
unset( $user->{$private_key} );
}
if ( ! empty( $user->is_admin ) ) {
$data['admins'][] = $user;
} else {
$data['mods'][] = $user;
}
}
}
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
$response = rest_ensure_response( $data );
$response->add_links( $this->prepare_links( $item ) );
/**
* Filter a group value returned from the API.
*
* @since 5.0.0
*
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request Request used to generate the response.
* @param BP_Groups_Group $item Group object.
*/
return apply_filters( 'bp_rest_groups_prepare_value', $response, $request, $item );
}
Changelog Changelog
| Version | Description |
|---|---|
| 5.0.0 | Introduced. |