BP_REST_Messages_Endpoint::prepare_message_for_response( BP_Messages_Message $message, WP_REST_Request $request )
Prepares message data for the REST response.
Description
Parameters
- $message
-
(Required) The Message object.
- $request
-
(Required) Full details about the request.
Return
(array) The Message data for the REST response.
Source
File: bp-messages/classes/class-bp-rest-messages-endpoint.php
public function prepare_message_for_response( $message, $request ) {
global $wpdb;
$group_name = '';
$group_id = bp_messages_get_meta( $message->id, 'group_id', true );
$group_message_users = bp_messages_get_meta( $message->id, 'group_message_users', true );
$group_message_type = bp_messages_get_meta( $message->id, 'group_message_type', true );
$group_message_thread_type = bp_messages_get_meta( $message->id, 'group_message_thread_type', true );
$group_message_fresh = bp_messages_get_meta( $message->id, 'group_message_fresh', true );
$message_from = bp_messages_get_meta( $message->id, 'message_from', true );
$message_left = bp_messages_get_meta( $message->id, 'group_message_group_left', true );
$message_joined = bp_messages_get_meta( $message->id, 'group_message_group_joined', true );
$message_banned = bp_messages_get_meta( $message->id, 'group_message_group_ban', true );
$message_unbanned = bp_messages_get_meta( $message->id, 'group_message_group_un_ban', true );
$message_deleted = bp_messages_get_meta( $message->id, 'bp_messages_deleted', true );
if ( ! empty( $group_id ) ) {
// Get Group Name.
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 = '';
}
}
if ( ! empty( $group_id ) && ! empty( $message_from ) && 'group' === $message_from ) {
if ( empty( $group_name ) ) {
$group_name = '"' . __( 'Deleted Group', 'buddyboss' ) . '"';
if ( $group_message_users && $group_message_type && 'all' === $group_message_users && 'open' === $group_message_type ) {
$group_text = sprintf(
/* translators: %s: Group name */
__( 'Sent from group %s to all group members.', 'buddyboss' ),
$group_name
);
} elseif ( $group_message_users && $group_message_type && 'individual' === $group_message_users && 'open' === $group_message_type ) {
$group_text = sprintf(
/* translators: %s: Group name */
__( 'Sent from group %s to the people in this conversation.', 'buddyboss' ),
$group_name
);
} elseif ( $group_message_users && $group_message_type && 'all' === $group_message_users && 'private' === $group_message_type ) {
$group_text = sprintf(
/* translators: %s: Group name */
__( 'Sent from group %s individually to all group members.', 'buddyboss' ),
$group_name
);
} elseif ( $group_message_users && $group_message_type && 'individual' === $group_message_users && 'private' === $group_message_type ) {
$group_text = sprintf(
/* translators: %s: Group name */
__( 'Sent from group %s to individual members.', 'buddyboss' ),
$group_name
);
}
} else {
if ( $group_message_users && $group_message_type && 'all' === $group_message_users && 'open' === $group_message_type ) {
$group_text = sprintf(
/* translators: 1: Group link. 2: Group name. */
__( 'Sent from group <a href="%1$s">%2$s</a> to all group members.', 'buddyboss' ),
$group_link,
$group_name
);
} elseif ( $group_message_users && $group_message_type && 'individual' === $group_message_users && 'open' === $group_message_type ) {
$group_text = sprintf(
/* translators: 1: Group link. 2: Group name. */
__( 'Sent from group <a href="%1$s">%2$s</a> to the people in this conversation.', 'buddyboss' ),
$group_link,
$group_name
);
} elseif ( $group_message_users && $group_message_type && 'all' === $group_message_users && 'private' === $group_message_type ) {
$group_text = sprintf(
/* translators: 1: Group link. 2: Group name. */
__( 'Sent from group <a href="%1$s">%2$s</a> individually to all group members.', 'buddyboss' ),
$group_link,
$group_name
);
} elseif ( $group_message_users && $group_message_type && 'individual' === $group_message_users && 'private' === $group_message_type ) {
$group_text = sprintf(
/* translators: 1: Group link. 2: Group name. */
__( 'Sent from group <a href="%1$s">%2$s</a> to individual members.', 'buddyboss' ),
$group_link,
$group_name
);
}
}
}
if ( $message_left && 'yes' === $message_left ) {
$message->message = sprintf(
/* translators: %s: Group name */
__( 'Left "%s"', 'buddyboss' ),
ucwords( $group_name )
);
} elseif ( $message_deleted && 'yes' === $message_deleted ) {
$message->message = __( 'This message was deleted.', 'buddyboss' );
} elseif ( $message_unbanned && 'yes' === $message_unbanned ) {
$message->message = sprintf(
/* translators: %s: Group name */
__( 'Removed Ban "%s"', 'buddyboss' ),
ucwords( $group_name )
);
} elseif ( $message_banned && 'yes' === $message_banned ) {
$message->message = sprintf(
/* translators: %s: Group name */
__( 'Ban "%s"', 'buddyboss' ),
ucwords( $group_name )
);
} elseif ( $message_joined && 'yes' === $message_joined ) {
$message->message = sprintf(
/* translators: %s: Group name */
__( 'Joined "%s"', 'buddyboss' ),
ucwords( $group_name )
);
} elseif ( 'This message was deleted.' === wp_strip_all_tags( $message->message ) ) {
$message->message = wp_strip_all_tags( $message->message );
} else {
$message->message = $message->message;
}
$data = array(
'id' => (int) $message->id,
'thread_id' => (int) $message->thread_id,
'sender_id' => (int) $message->sender_id,
'subject' => array(
'raw' => $message->subject,
'rendered' => apply_filters( 'bp_get_message_thread_subject', wp_staticize_emoji( $message->subject ) ),
),
'message' => array(
'raw' => wp_strip_all_tags( $message->message ),
'rendered' => apply_filters( 'bp_get_the_thread_message_content', wp_staticize_emoji( $message->message ) ),
),
'date_sent' => bp_rest_prepare_date_response( $message->date_sent ),
'display_date' => bp_core_time_since( $message->date_sent ),
'group_name' => ( isset( $group_name ) ? $group_name : '' ),
'group_text' => ( isset( $group_text ) ? $group_text : '' ),
'group_link' => ( isset( $group_link ) ? $group_link : '' ),
'group_message_users' => $group_message_users,
'group_message_type' => $group_message_type,
'group_message_thread_type' => $group_message_thread_type,
'group_message_fresh' => $group_message_fresh,
'message_from' => $message_from,
);
if ( bp_is_active( 'messages', 'star' ) ) {
$user_id = bp_loggedin_user_id();
if ( isset( $request['user_id'] ) && $request['user_id'] ) {
$user_id = (int) $request['user_id'];
}
$data['is_starred'] = bp_messages_is_message_starred( $data['id'], $user_id );
}
// Add REST Fields (BP Messages meta) data.
$data = $this->add_additional_fields_to_object( $data, $request );
/**
* Filter a message value returned from the API.
*
* @param array $data The message value for the REST response.
* @param BP_Messages_Message $message The Message object.
* @param WP_REST_Request $request Request used to generate the response.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_message_prepare_value', $data, $message, $request );
}
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.