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. |