BP_REST_Messages_Endpoint::prepare_item_for_response( BP_Messages_Thread $thread, WP_REST_Request $request )
Prepares thread data for return as an object.
Description
Parameters
- $thread
-
(Required) Thread object.
- $request
-
(Required) Full details about the request.
Return
(WP_REST_Response)
Source
File: bp-messages/classes/class-bp-rest-messages-endpoint.php
public function prepare_item_for_response( $thread, $request ) { global $wpdb; $content = ''; if ( '' === $content ) { if ( ! empty( $thread->messages ) ) { foreach ( $thread->messages as $thread_message ) { $content = trim( wp_strip_all_tags( do_shortcode( $thread_message->message ) ) ); if ( '' !== $content ) { $thread->last_message_content = $thread_message->message; $thread->last_message_subject = $thread_message->subject; break; } } } } $last_message = reset( $thread->messages ); if ( ! empty( $last_message ) ) { $thread->last_message_id = $last_message->id; } $excerpt = ''; if ( isset( $thread->last_message_content ) ) { $excerpt = wp_strip_all_tags( bp_create_excerpt( $thread->last_message_content, 75 ) ); } $group_id = bp_messages_get_meta( $thread->last_message_id, 'group_id', true ); $first_message = ( method_exists( 'BP_Messages_Thread', 'get_first_message' ) ? BP_Messages_Thread::get_first_message( $thread->thread_id ) : '' ); if ( ! empty( $group_id ) && ! empty( $first_message ) ) { $group_id = (int) bp_messages_get_meta( $first_message->id, 'group_id', true ); } if ( (int) $group_id > 0 && ! empty( $first_message ) ) { $group_message_thread_id = bp_messages_get_meta( $first_message->id, 'group_message_thread_id', true ); // group. $group_id = (int) bp_messages_get_meta( $first_message->id, 'group_id', true ); $message_users = bp_messages_get_meta( $first_message->id, 'group_message_users', true ); // all - individual. $message_type = bp_messages_get_meta( $first_message->id, 'group_message_type', true ); // open - private. $message_from = bp_messages_get_meta( $first_message->id, 'message_from', true ); // group. if ( bp_is_active( 'groups' ) ) { $group_name = bp_get_group_name( groups_get_group( $group_id ) ); $group_link = bp_get_group_permalink( groups_get_group( $group_id ) ); } else { $prefix = apply_filters( 'bp_core_get_table_prefix', $wpdb->base_prefix ); $groups_table = $prefix . 'bp_groups'; // phpcs:ignore $group_name = $wpdb->get_var( "SELECT `name` FROM `{$groups_table}` WHERE `id` = '{$group_id}';" ); // db call ok; no-cache ok; $group_link = ''; } $group_name = ( empty( $group_name ) ) ? __( 'Deleted Group', 'buddyboss' ) : $group_name; } if ( isset( $message_from ) && 'group' === $message_from && isset( $group_message_thread_id ) && $thread->thread_id === (int) $group_message_thread_id && isset( $message_users ) && isset( $message_type ) && 'all' === $message_users && 'open' === $message_type ) { $is_group_thread = 1; } if ( isset( $is_group_thread ) && $is_group_thread ) { $avatar = array( 'thumb' => bp_core_fetch_avatar( array( 'html' => false, 'object' => 'group', 'item_id' => $group_id, 'type' => 'thumb', ) ), 'full' => bp_core_fetch_avatar( array( 'html' => false, 'object' => 'group', 'item_id' => $group_id, 'type' => 'full', ) ), ); } else { $recepients = $thread->recipients; $curren_user_id = ( isset( $request['user_id'] ) && ! empty( $request['user_id'] ) ? $request['user_id'] : bp_current_user_id() ); if ( ! empty( $recepients ) && array_key_exists( $curren_user_id, $recepients ) ) { unset( $recepients[ $curren_user_id ] ); } if ( ! empty( $recepients ) && count( $recepients ) > 1 ) { $avatar = array( 'full' => bp_core_fetch_avatar( array( 'item_id' => $thread->last_sender_id, 'html' => false, 'type' => 'full', 'object' => 'user', ) ), 'thumb' => bp_core_fetch_avatar( array( 'item_id' => $thread->last_sender_id, 'html' => false, 'object' => 'user', ) ), ); } else { $avatar_user = ! empty( $recepients ) && ! empty( reset( $recepients ) ) ? reset( $recepients )->user_id : $curren_user_id; $avatar = array( 'full' => bp_core_fetch_avatar( array( 'item_id' => $avatar_user, 'html' => false, 'type' => 'full', 'object' => 'user', ) ), 'thumb' => bp_core_fetch_avatar( array( 'item_id' => $avatar_user, 'html' => false, 'object' => 'user', ) ), ); } } $data = array( 'id' => $thread->thread_id, 'message_id' => $thread->last_message_id, 'last_sender_id' => $thread->last_sender_id, 'subject' => array( 'raw' => $thread->last_message_subject, 'rendered' => apply_filters( 'bp_get_message_thread_subject', wp_staticize_emoji( $thread->last_message_subject ) ), ), 'excerpt' => array( 'raw' => $excerpt, 'rendered' => apply_filters( 'bp_get_message_thread_excerpt', $excerpt ), ), 'message' => array( 'raw' => $thread->last_message_content, 'rendered' => apply_filters( 'bp_get_message_thread_content', wp_staticize_emoji( $thread->last_message_content ) ), ), 'date' => bp_rest_prepare_date_response( $thread->last_message_date ), 'start_date' => bp_rest_prepare_date_response( ( isset( $thread->first_message_date ) ? $thread->first_message_date : $thread->last_message_date ) ), 'unread_count' => ! empty( $thread->unread_count ) ? $thread->unread_count : 0, 'sender_ids' => $thread->sender_ids, 'current_user' => ( isset( $request['user_id'] ) && ! empty( $request['user_id'] ) ? $request['user_id'] : bp_loggedin_user_id() ), 'avatar' => $avatar, 'is_group' => ( ! empty( $group_id ) ? $group_id : false ), 'is_group_thread' => ( isset( $is_group_thread ) ? $is_group_thread : false ), 'group_name' => ( isset( $group_name ) ? $group_name : '' ), 'group_link' => ( isset( $group_link ) ? $group_link : '' ), 'group_message_users' => ( isset( $message_users ) ? $message_users : '' ), 'group_message_type' => ( isset( $message_type ) ? $message_type : '' ), 'group_message_from' => ( isset( $message_from ) ? $message_from : '' ), 'recipients_count' => ( ( isset( $thread->recipients ) && count( $thread->recipients ) > 1 ) ? count( $thread->recipients ) - ( isset( $request['user_id'] ) && ! empty( $request['user_id'] ) ? 1 : 0 ) : 0 ), 'recipients' => array(), 'messages' => array(), ); if ( $thread->messages ) { // update order of the message to latest one at the end. $thread_messages = array_reverse( $thread->messages ); $thread->messages = $thread_messages; // Loop through messages to prepare them for the response. foreach ( $thread->messages as $message ) { $data['messages'][] = $this->prepare_message_for_response( $message, $request ); } } if ( $thread->recipients ) { // Loop through recipients to prepare them for the response. foreach ( $thread->recipients as $recipient ) { $data['recipients'][ $recipient->user_id ] = $this->prepare_recipient_for_response( $recipient, $request ); } } $data['avatar'] = $this->bp_rest_messages_get_avatars( $thread->thread_id ); // Pluck starred message ids. $data['starred_message_ids'] = array_keys( array_filter( wp_list_pluck( $data['messages'], 'is_starred', 'id' ) ) ); $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( $thread ) ); /** * Filter a thread value returned from the API. * * @param WP_REST_Response $response Response generated by the request. * @param WP_REST_Request $request Request used to generate the response. * @param BP_Messages_Thread $thread The thread object. * * @since 0.1.0 */ return apply_filters( 'bp_rest_messages_prepare_value', $response, $request, $thread ); }
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.