ID, Friends\Messages::TAXONOMY ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) { $term = reset( $terms ); $user = Friends\User::get_user_by_id( absint( $term->slug ) ); if ( $user ) { return $user; } } return Friends\User::get_post_author( $message ); }; $top_level_messages = get_posts( array( 'post_type' => Friends\Messages::CPT, 'post_parent' => 0, 'post_status' => array( 'friends_read', 'friends_unread' ), 'posts_per_page' => -1, ) ); $conversation_rows = array(); foreach ( $top_level_messages as $top_level_message ) { $thread_messages = get_posts( array( 'post_parent' => $top_level_message->ID, 'post_type' => Friends\Messages::CPT, 'post_status' => array( 'friends_read', 'friends_unread' ), 'order' => 'ASC', 'orderby' => 'date', 'posts_per_page' => -1, ) ); array_unshift( $thread_messages, $top_level_message ); $latest_message = $top_level_message; $latest_message_time = get_post_modified_time( 'U', true, $top_level_message ); $unread_count = 0; foreach ( $thread_messages as $thread_message ) { if ( 'friends_unread' === get_post_status( $thread_message ) ) { ++$unread_count; } $message_time = get_post_modified_time( 'U', true, $thread_message ); if ( $message_time > $latest_message_time ) { $latest_message = $thread_message; $latest_message_time = $message_time; } } $friend_user = $get_message_friend_user( $top_level_message ); if ( ! $friend_user || is_wp_error( $friend_user ) || get_current_user_id() === intval( $friend_user->ID ) ) { foreach ( $thread_messages as $thread_message ) { $thread_author = Friends\User::get_post_author( $thread_message ); if ( $thread_author && ! is_wp_error( $thread_author ) && get_current_user_id() !== intval( $thread_author->ID ) ) { $friend_user = $thread_author; break; } } } $message_preview = get_the_title( $latest_message ); if ( ! $message_preview ) { $message_preview = wp_strip_all_tags( get_the_excerpt( $latest_message ) ); } $latest_delivery = null; if ( intval( $latest_message->post_author ) === get_current_user_id() && class_exists( 'Friends\Feed_Parser_ActivityPub' ) ) { $latest_delivery = Friends\Feed_Parser_ActivityPub::get_direct_message_delivery_status( $latest_message ); } $conversation_rows[] = array( 'id' => $top_level_message->ID, 'friend_user' => $friend_user, 'messages' => $thread_messages, 'latest' => $latest_message, 'latest_delivery' => $latest_delivery, 'latest_time' => $latest_message_time, 'preview' => $message_preview, 'unread_count' => $unread_count, 'root_message' => $top_level_message, ); } usort( $conversation_rows, function ( $a, $b ) { return $b['latest_time'] - $a['latest_time']; } ); $selected_conversation_id = isset( $_GET['conversation'] ) ? absint( $_GET['conversation'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $selected_conversation = null; foreach ( $conversation_rows as $conversation_row ) { if ( ! $selected_conversation || $conversation_row['id'] === $selected_conversation_id ) { $selected_conversation = $conversation_row; } } Friends\Friends::template_loader()->get_template_part( 'frontend/header', null, $args ); ?>

get_avatar_url() ) : ?> 'avatar' ) ); ?>

display_name : __( 'Unknown sender', 'friends' ) ); ?>

ID ); $author_name = $message_author && ! is_wp_error( $message_author ) ? $message_author->display_name : __( 'Unknown sender', 'friends' ); $post_time = get_post_modified_time( 'U', true, $message ); $author_key = $message_author && ! is_wp_error( $message_author ) ? 'user-' . $message_author->ID : 'unknown'; $is_consecutive = $author_key === $previous_message_author_key; $delivery = null; if ( $is_own_message && class_exists( 'Friends\Feed_Parser_ActivityPub' ) ) { $delivery = Friends\Feed_Parser_ActivityPub::get_direct_message_delivery_status( $message ); } ?>
get_avatar_url() ) : ?> 'avatar' ) ); ?>
false, 'friend_user' => $selected_friend_user, 'redirect_to' => $selected_url, 'reply_to' => $selected_conversation['id'], 'subject' => get_the_title( $selected_conversation['root_message'] ), ); $feed_url = get_post_meta( $selected_conversation['root_message']->ID, 'friends_feed_url', true ); if ( $feed_url ) { $form_args['accounts'] = array( $feed_url => $feed_url ); $accounts = apply_filters( 'friends_message_form_accounts', array(), $selected_friend_user ); if ( isset( $accounts[ $feed_url ] ) ) { $form_args['accounts'][ $feed_url ] = $accounts[ $feed_url ]; } } else { $form_args['accounts'] = apply_filters( 'friends_message_form_accounts', array(), $selected_friend_user ); } if ( $selected_friend_user && ! is_wp_error( $selected_friend_user ) && ! empty( $form_args['accounts'] ) ) { Friends\Friends::template_loader()->get_template_part( 'frontend/messages/message-form', null, array_merge( $args, $form_args ) ); } ?>
get_template_part( 'frontend/footer', null, $args );