bp_nouveau_ajax_get_user_message_threads()
Description Description
Source Source
File: bp-templates/bp-nouveau/includes/messages/ajax.php
function bp_nouveau_ajax_get_user_message_threads() {
global $messages_template;
if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) {
wp_send_json_error( array(
'feedback' => __( 'Unauthorized request.', 'buddypress' ),
'type' => 'error'
) );
}
$bp = buddypress();
$reset_action = $bp->current_action;
// Override bp_current_action().
if ( isset( $_POST['box'] ) ) {
$bp->current_action = $_POST['box'];
}
// Add the message thread filter.
if ( 'starred' === $bp->current_action ) {
add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
}
// Simulate the loop.
if ( ! bp_has_message_threads( bp_ajax_querystring( 'messages' ) ) ) {
// Remove the bp_current_action() override.
$bp->current_action = $reset_action;
wp_send_json_error( array(
'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ),
'type' => 'info'
) );
}
// remove the message thread filter.
if ( 'starred' === $bp->current_action ) {
remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
}
$threads = new stdClass;
$threads->meta = array(
'total_page' => ceil( (int) $messages_template->total_thread_count / (int) $messages_template->pag_num ),
'page' => $messages_template->pag_page,
);
$threads->threads = array();
$i = 0;
while ( bp_message_threads() ) : bp_message_thread();
$last_message_id = (int) $messages_template->thread->last_message_id;
$threads->threads[ $i ] = array(
'id' => bp_get_message_thread_id(),
'message_id' => (int) $last_message_id,
'subject' => strip_tags( bp_get_message_thread_subject() ),
'excerpt' => strip_tags( bp_get_message_thread_excerpt() ),
'content' => do_shortcode( bp_get_message_thread_content() ),
'unread' => bp_message_thread_has_unread(),
'sender_name' => bp_core_get_user_displayname( $messages_template->thread->last_sender_id ),
'sender_link' => bp_core_get_userlink( $messages_template->thread->last_sender_id, false, true ),
'sender_avatar' => esc_url( bp_core_fetch_avatar( array(
'item_id' => $messages_template->thread->last_sender_id,
'object' => 'user',
'type' => 'thumb',
'width' => 32,
'height' => 32,
'html' => false,
) ) ),
'count' => bp_get_message_thread_total_count(),
'date' => strtotime( bp_get_message_thread_last_post_date_raw() ) * 1000,
'display_date' => bp_nouveau_get_message_date( bp_get_message_thread_last_post_date_raw() ),
);
if ( is_array( $messages_template->thread->recipients ) ) {
foreach ( $messages_template->thread->recipients as $recipient ) {
$threads->threads[ $i ]['recipients'][] = array(
'avatar' => esc_url( bp_core_fetch_avatar( array(
'item_id' => $recipient->user_id,
'object' => 'user',
'type' => 'thumb',
'width' => 28,
'height' => 28,
'html' => false,
) ) ),
'user_link' => bp_core_get_userlink( $recipient->user_id, false, true ),
'user_name' => bp_core_get_username( $recipient->user_id ),
);
}
}
if ( bp_is_active( 'messages', 'star' ) ) {
$star_link = bp_get_the_message_star_action_link( array(
'thread_id' => bp_get_message_thread_id(),
'url_only' => true,
) );
$threads->threads[ $i ]['star_link'] = $star_link;
$star_link_data = explode( '/', $star_link );
$threads->threads[ $i ]['is_starred'] = array_search( 'unstar', $star_link_data );
// Defaults to last
$sm_id = $last_message_id;
if ( $threads->threads[ $i ]['is_starred'] ) {
$sm_id = (int) $star_link_data[ $threads->threads[ $i ]['is_starred'] + 1 ];
}
$threads->threads[ $i ]['star_nonce'] = wp_create_nonce( 'bp-messages-star-' . $sm_id );
$threads->threads[ $i ]['starred_id'] = $sm_id;
}
$thread_extra_content = bp_nouveau_messages_catch_hook_content( array(
'inboxListItem' => 'bp_messages_inbox_list_item',
'threadOptions' => 'bp_messages_thread_options',
) );
if ( array_filter( $thread_extra_content ) ) {
$threads->threads[ $i ] = array_merge( $threads->threads[ $i ], $thread_extra_content );
}
$i += 1;
endwhile;
$threads->threads = array_filter( $threads->threads );
$extra_content = bp_nouveau_messages_catch_hook_content( array(
'beforeLoop' => 'bp_before_member_messages_loop',
'afterLoop' => 'bp_after_member_messages_loop',
) );
if ( array_filter( $extra_content ) ) {
$threads->extraContent = $extra_content;
}
// Remove the bp_current_action() override.
$bp->current_action = $reset_action;
// Return the successfull reply.
wp_send_json_success( $threads );
}
Changelog Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |