bp_nouveau_ajax_get_thread_messages()
Description Description
Source Source
File: bp-templates/bp-nouveau/includes/messages/ajax.php
function bp_nouveau_ajax_get_thread_messages() { global $thread_template; if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { wp_send_json_error( array( 'feedback' => __( 'Unauthorized request.', 'buddypress' ), 'type' => 'error' ) ); } $response = array( 'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ), 'type' => 'info' ); if ( empty( $_POST['id'] ) ) { wp_send_json_error( $response ); } $thread_id = (int) $_POST['id']; if ( ! messages_is_valid_thread( $thread_id ) || ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) ) { wp_send_json_error(); } $bp = buddypress(); $reset_action = $bp->current_action; // Override bp_current_action(). $bp->current_action = 'view'; // Simulate the loop. if ( ! bp_thread_has_messages( array( 'thread_id' => $thread_id ) ) ) { // Remove the bp_current_action() override. $bp->current_action = $reset_action; wp_send_json_error( $response ); } $thread = new stdClass; if ( empty( $_POST['js_thread'] ) ) { $thread->thread = array( 'id' => bp_get_the_thread_id(), 'subject' => strip_tags( bp_get_the_thread_subject() ), ); if ( is_array( $thread_template->thread->recipients ) ) { foreach ( $thread_template->thread->recipients as $recipient ) { $thread->thread['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 ), ); } } } $thread->messages = array(); $i = 0; while ( bp_thread_messages() ) : bp_thread_the_message(); $thread->messages[ $i ] = array( 'id' => bp_get_the_thread_message_id(), 'content' => do_shortcode( bp_get_the_thread_message_content() ), 'sender_id' => bp_get_the_thread_message_sender_id(), 'sender_name' => esc_html( bp_get_the_thread_message_sender_name() ), 'sender_link' => bp_get_the_thread_message_sender_link(), 'sender_avatar' => esc_url( bp_core_fetch_avatar( array( 'item_id' => bp_get_the_thread_message_sender_id(), 'object' => 'user', 'type' => 'thumb', 'width' => 32, 'height' => 32, 'html' => false, ) ) ), 'date' => bp_get_the_thread_message_date_sent() * 1000, 'display_date' => bp_get_the_thread_message_time_since(), ); if ( bp_is_active( 'messages', 'star' ) ) { $star_link = bp_get_the_message_star_action_link( array( 'message_id' => bp_get_the_thread_message_id(), 'url_only' => true, ) ); $thread->messages[ $i ]['star_link'] = $star_link; $thread->messages[ $i ]['is_starred'] = array_search( 'unstar', explode( '/', $star_link ) ); $thread->messages[ $i ]['star_nonce'] = wp_create_nonce( 'bp-messages-star-' . bp_get_the_thread_message_id() ); } $extra_content = bp_nouveau_messages_catch_hook_content( array( 'beforeMeta' => 'bp_before_message_meta', 'afterMeta' => 'bp_after_message_meta', 'beforeContent' => 'bp_before_message_content', 'afterContent' => 'bp_after_message_content', ) ); if ( array_filter( $extra_content ) ) { $thread->messages[ $i ] = array_merge( $thread->messages[ $i ], $extra_content ); } $i += 1; endwhile; $thread->messages = array_filter( $thread->messages ); // Remove the bp_current_action() override. $bp->current_action = $reset_action; wp_send_json_success( $thread ); }
Changelog Changelog
Version | Description |
---|---|
3.0.0 | Introduced. |