BP_REST_Notifications_Endpoint::prepare_item_for_response( BP_Notifications_Notification $notification, WP_REST_Request $request )
Prepares notification data for return as an object.
Description
Parameters
- $notification
-
(Required) Notification data.
- $request
-
(Required) Full details about the request.
Return
(WP_REST_Response)
Source
File: bp-notifications/classes/class-bp-rest-notifications-endpoint.php
public function prepare_item_for_response( $notification, $request ) { $data = array( 'id' => $notification->id, 'user_id' => $notification->user_id, 'item_id' => $notification->item_id, 'secondary_item_id' => $notification->secondary_item_id, 'component' => $notification->component_name, 'action' => $notification->component_action, 'date' => bp_rest_prepare_date_response( $notification->date_notified ), 'is_new' => $notification->is_new, 'description' => array( 'rendered' => '', ), 'link_url' => '', 'rest_actions' => '', ); $component = $notification->component_name; $object = $notification->component_name; $item_id = $notification->item_id; $object_id = $notification->item_id; switch ( $component ) { case 'groups': if ( ! empty( $notification->item_id ) ) { $object = 'group'; } break; case 'follow': case 'friends': if ( ! empty( $notification->item_id ) ) { $object = 'user'; } break; default: if ( ! empty( $notification->secondary_item_id ) ) { $object = 'user'; $object_id = $notification->secondary_item_id; $item_id = $notification->secondary_item_id; } else { $object = 'user'; } break; } // Avatars. $data['avatar_urls'] = array( 'full' => bp_core_fetch_avatar( array( 'item_id' => $item_id, 'html' => false, 'type' => 'full', 'object' => $object, ) ), 'thumb' => bp_core_fetch_avatar( array( 'item_id' => $item_id, 'html' => false, 'object' => $object, ) ), ); // Notification object. $data['object'] = $object; $data['object_id'] = $object_id; global $bp; if ( ! isset( $bp->notifications ) ) { $bp->notifications = new \stdClass(); } if ( ! isset( $bp->notifications->query_loop ) ) { $bp->notifications->query_loop = new \stdClass(); } $bp->notifications->query_loop->notification = $notification; $data['description']['rendered'] = bp_get_the_notification_description(); if ( ! empty( $data['description']['rendered'] ) ) { // Extract the first URL from Description. preg_match( '/\bhttps?:\/\/[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|\/))/', $data['description']['rendered'], $matches_url ); if ( isset( $matches_url[0] ) && wp_http_validate_url( $matches_url[0] ) ) { $data['link_url'] = $matches_url[0]; } } $data['link_url'] = $this->bp_rest_link_url_update( $data['link_url'], $notification ); $data['rest_actions'] = $this->bp_rest_get_notification_actions( $notification ); $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $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( $notification ) ); /** * Filter a notification value returned from the API. * * @param WP_REST_Response $response The response data. * @param WP_REST_Request $request Request used to generate the response. * @param BP_Notifications_Notification $notification Notification object. * * @since 0.1.0 */ return apply_filters( 'bp_rest_notifications_prepare_value', $response, $request, $notification ); }
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.