BP_REST_Groups_Endpoint::prepare_item_for_response( BP_Groups_Group $item, WP_REST_Request $request )
Prepares group data for return as an object.
Parameters Parameters
- $item
-
(BP_Groups_Group) (Required) Group object.
- $request
-
(WP_REST_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 ), 'types' => bp_groups_get_group_type( $item->id, false ), 'admins' => array(), 'mods' => array(), 'total_member_count' => null, 'last_activity' => null, 'last_activity_diff' => null, ); // Return avatars, if allowed. if ( true !== bp_disable_group_avatar_uploads() ) { $data['avatar_urls'] = array( 'full' => bp_core_fetch_avatar( array( 'html' => false, 'object' => 'group', 'item_id' => $item->id, 'type' => 'full', ) ), 'thumb' => bp_core_fetch_avatar( array( 'html' => false, 'object' => 'group', 'item_id' => $item->id, 'type' => 'thumb', ) ), ); } // Get group type(s). if ( false === $data['types'] ) { $data['types'] = array(); } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; // If this is the 'edit' context or 'populate_extras' has been requested. if ( 'edit' === $context || true === $request->get_param( 'populate_extras' ) ) { $data['total_member_count'] = (int) $item->total_member_count; $data['last_activity'] = bp_rest_prepare_date_response( $item->last_activity ); $data['last_activity_diff'] = bp_get_group_last_active( $item ); } // If this is the 'edit' context, get more data about the group. if ( 'edit' === $context ) { // 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 ); }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
5.0.0 | Introduced. |