Skip to:
Content

Ticket #7096: 7096.02.diff

File 7096.02.diff, 20.1 KB (added by dcavins, 10 months ago)

More complete code review.

  • src/bp-messages/bp-messages-actions.php

    diff --git src/bp-messages/bp-messages-actions.php src/bp-messages/bp-messages-actions.php
    index e145f85..eb77706 100644
    function messages_action_conversation() { 
    247247                bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/view/' . $thread_id . '/' ); 
    248248        } 
    249249 
    250         // Mark message read. 
    251         messages_mark_thread_read( $thread_id ); 
     250        /* 
     251         * Mark message read, but only run on the logged-in user's profile. 
     252         * If an admin visits a thread, it shouldn't change the read status. 
     253         */ 
     254        if ( bp_is_my_profile() ) { 
     255                messages_mark_thread_read( $thread_id ); 
     256        } 
    252257 
    253258        /** 
    254259         * Fires after processing a view request for a single message thread. 
    function bp_messages_action_mark_read() { 
    319324        } 
    320325 
    321326        // Check access to the message and mark as read. 
    322         if ( messages_check_thread_access( $id ) ) { 
     327        if ( messages_check_thread_access( $id ) || bp_current_user_can( 'bp_moderate' ) ) { 
    323328                messages_mark_thread_read( $id ); 
    324329                bp_core_add_message( __( 'Message marked as read.', 'buddypress' ) ); 
    325330        } else { 
    function bp_messages_action_mark_unread() { 
    360365        } 
    361366 
    362367        // Check access to the message and mark unread. 
    363         if ( messages_check_thread_access( $id ) ) { 
     368        if ( messages_check_thread_access( $id ) || bp_current_user_can( 'bp_moderate' ) ) { 
    364369                messages_mark_thread_unread( $id ); 
    365370                bp_core_add_message( __( 'Message marked unread.', 'buddypress' ) ); 
    366371        } else { 
    function bp_messages_action_bulk_manage() { 
    404409 
    405410        // Make sure the user has access to all notifications before managing them. 
    406411        foreach ( $messages as $message ) { 
    407                 if ( ! messages_check_thread_access( $message ) ) { 
     412                if ( ! messages_check_thread_access( $message ) && ! bp_current_user_can( 'bp_moderate' ) ) { 
    408413                        bp_core_add_message( __( 'There was a problem managing your messages.', 'buddypress' ), 'error' ); 
    409414                        bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' ); 
    410415                } 
  • src/bp-messages/bp-messages-cache.php

    diff --git src/bp-messages/bp-messages-cache.php src/bp-messages/bp-messages-cache.php
    index 434c3a8..6883c96 100644
    add_action( 'messages_message_after_save', 'bp_messages_clear_cache_on_message_s 
    7474 * 
    7575 * @param int|array $thread_ids If single thread, the thread ID. 
    7676 *                              Otherwise, an array of thread IDs. 
     77 * @param int       $user_id    ID of the user that the threads were deleted for. 
    7778 */ 
    78 function bp_messages_clear_cache_on_message_delete( $thread_ids ) { 
     79function bp_messages_clear_cache_on_message_delete( $thread_ids, $user_id ) { 
    7980        // Delete thread and thread recipient cache. 
    8081        foreach( (array) $thread_ids as $thread_id ) { 
    8182                wp_cache_delete( $thread_id, 'bp_messages_threads' ); 
    function bp_messages_clear_cache_on_message_delete( $thread_ids ) { 
    8384        } 
    8485 
    8586        // Delete unread count for logged-in user. 
    86         wp_cache_delete( bp_loggedin_user_id(), 'bp_messages_unread_count' ); 
     87        wp_cache_delete( $user_id, 'bp_messages_unread_count' ); 
    8788} 
    88 add_action( 'messages_delete_thread', 'bp_messages_clear_cache_on_message_delete' ); 
     89add_action( 'messages_delete_thread', 'bp_messages_clear_cache_on_message_delete', 10, 2 ); 
    8990 
    9091/** 
    9192 * Invalidate cache for notices. 
  • src/bp-messages/bp-messages-functions.php

    diff --git src/bp-messages/bp-messages-functions.php src/bp-messages/bp-messages-functions.php
    index 16e70b8..f78ddcf 100644
    function messages_send_notice( $subject, $message ) { 
    254254function messages_delete_thread( $thread_ids, $user_id = 0 ) { 
    255255 
    256256        if ( empty( $user_id ) ) { 
    257                 $user_id = bp_loggedin_user_id(); 
     257                $user_id = 
     258                        bp_displayed_user_id() ? 
     259                        bp_displayed_user_id() : 
     260                        bp_loggedin_user_id(); 
    258261        } 
    259262 
    260263        /** 
    function messages_remove_callback_values() { 
    380383 * @return int 
    381384 */ 
    382385function messages_get_unread_count( $user_id = 0 ) { 
    383         if ( empty( $user_id ) ) { 
    384                 $user_id = bp_loggedin_user_id(); 
    385         } 
    386  
    387386        return BP_Messages_Thread::get_inbox_count( $user_id ); 
    388387} 
    389388 
  • src/bp-messages/bp-messages-notifications.php

    diff --git src/bp-messages/bp-messages-notifications.php src/bp-messages/bp-messages-notifications.php
    index 4a6b025..f6d2284 100644
    add_action( 'messages_message_sent', 'bp_messages_message_sent_add_notification' 
    171171function bp_messages_screen_conversation_mark_notifications() { 
    172172        global $thread_template; 
    173173 
     174        /* 
     175         * Only run on the logged-in user's profile. 
     176         * If an admin visits a thread, it shouldn't change the read status. 
     177         */ 
     178        if ( ! bp_is_my_profile() ) { 
     179                return; 
     180        } 
     181 
    174182        // Get unread PM notifications for the user. 
    175183        $new_pm_notifications = BP_Notifications_Notification::get( array( 
    176184                'user_id'           => bp_loggedin_user_id(), 
  • src/bp-messages/bp-messages-star.php

    diff --git src/bp-messages/bp-messages-star.php src/bp-messages/bp-messages-star.php
    index 2b4e667..54e06c8 100644
    function bp_get_messages_starred_slug() { 
    4141 */ 
    4242function bp_messages_is_message_starred( $mid = 0, $user_id = 0 ) { 
    4343        if ( empty( $user_id ) ) { 
    44                 $user_id = bp_loggedin_user_id(); 
     44                $user_id = bp_displayed_user_id(); 
    4545        } 
    4646 
    4747        if ( empty( $mid ) ) { 
    function bp_messages_star_set_action( $args = array() ) { 
    254254                'action'     => 'star', 
    255255                'thread_id'  => 0, 
    256256                'message_id' => 0, 
    257                 'user_id'    => bp_loggedin_user_id(), 
     257                'user_id'    => bp_displayed_user_id(), 
    258258                'bulk'       => false 
    259259        ) ); 
    260260 
    function bp_messages_star_action_handler() { 
    397397        ) ); 
    398398 
    399399        // Redirect back to previous screen. 
    400         $redirect = wp_get_referer() ? wp_get_referer() : bp_loggedin_user_domain() . bp_get_messages_slug(); 
     400        $redirect = wp_get_referer() ? wp_get_referer() : bp_displayed_user_domain() . bp_get_messages_slug(); 
    401401        bp_core_redirect( $redirect ); 
    402402        die(); 
    403403} 
  • src/bp-messages/bp-messages-template.php

    diff --git src/bp-messages/bp-messages-template.php src/bp-messages/bp-messages-template.php
    index c89d691..aa7de6e 100644
    function bp_has_message_threads( $args = array() ) { 
    5858 
    5959        // User ID 
    6060        // @todo displayed user for moderators that get this far? 
    61         $user_id = bp_loggedin_user_id(); 
     61        $user_id = bp_displayed_user_id(); 
    6262 
    6363        // Search Terms. 
    6464        $search_terms = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; 
    function bp_message_thread_view_link( $thread_id = 0 ) { 
    304304                 * @param string $value     Permalink of a particular thread. 
    305305                 * @param int    $thread_id ID of the thread. 
    306306                 */ 
    307                 return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/view/' . $thread_id ), $thread_id ); 
     307                return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/view/' . $thread_id ), $thread_id ); 
    308308        } 
    309309 
    310310/** 
    function bp_message_thread_delete_link() { 
    329329                 * @param string $value URL for deleting the current thread. 
    330330                 * @param string $value Text indicating action being executed. 
    331331                 */ 
    332                 return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/delete/' . $messages_template->thread->thread_id ), 'messages_delete_thread' ) ); 
     332                return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/delete/' . $messages_template->thread->thread_id ), 'messages_delete_thread' ) ); 
    333333        } 
    334334 
    335335/** 
    function bp_the_message_thread_mark_unread_url() { 
    361361                ); 
    362362 
    363363                // Base unread URL. 
    364                 $url = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/unread' ); 
     364                $url = trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/unread' ); 
    365365 
    366366                // Add the args to the URL. 
    367367                $url = add_query_arg( $args, $url ); 
    function bp_the_message_thread_mark_read_url() { 
    408408                ); 
    409409 
    410410                // Base read URL. 
    411                 $url = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/read' ); 
     411                $url = trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/read' ); 
    412412 
    413413                // Add the args to the URL. 
    414414                $url = add_query_arg( $args, $url ); 
    function bp_message_thread_avatar( $args = '' ) { 
    696696 
    697697/** 
    698698 * Output the unread messages count for the current inbox. 
     699 * 
     700 * @since 2.6.x Added $user_id argument. 
     701 * 
     702 * @param int $user_id The user ID. 
     703 * 
     704 * @return int $unread_count Total inbox unread count for user. 
    699705 */ 
    700 function bp_total_unread_messages_count() { 
    701         echo bp_get_total_unread_messages_count(); 
     706function bp_total_unread_messages_count( $user_id = 0 ) { 
     707        echo bp_get_total_unread_messages_count( $user_id ); 
    702708} 
    703709        /** 
    704710         * Get the unread messages count for the current inbox. 
    705711         * 
    706          * @return int 
     712         * @since 2.6.x Added $user_id argument. 
     713         * 
     714         * @param int $user_id The user ID. 
     715         * 
     716         * @return int $unread_count Total inbox unread count for user. 
    707717         */ 
    708         function bp_get_total_unread_messages_count() { 
     718        function bp_get_total_unread_messages_count( $user_id = 0 ) { 
    709719 
    710720                /** 
    711721                 * Filters the unread messages count for the current inbox. 
    function bp_total_unread_messages_count() { 
    714724                 * 
    715725                 * @param int $value Unread messages count for the current inbox. 
    716726                 */ 
    717                 return apply_filters( 'bp_get_total_unread_messages_count', BP_Messages_Thread::get_inbox_count() ); 
     727                return apply_filters( 'bp_get_total_unread_messages_count', BP_Messages_Thread::get_inbox_count( $user_id ) ); 
    718728        } 
    719729 
    720730/** 
    function bp_messages_form_action() { 
    824834                 * 
    825835                 * @param string $value The form action. 
    826836                 */ 
    827                 return apply_filters( 'bp_get_messages_form_action', trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' . bp_action_variable( 0 ) ) ); 
     837                return apply_filters( 'bp_get_messages_form_action', trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' . bp_action_variable( 0 ) ) ); 
    828838        } 
    829839 
    830840/** 
    function bp_message_notice_delete_link() { 
    11531163                 * @param string $value URL for deleting the current notice. 
    11541164                 * @param string $value Text indicating action being executed. 
    11551165                 */ 
    1156                 return apply_filters( 'bp_get_message_notice_delete_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_messages_slug() . '/notices/delete/' . $messages_template->thread->id, 'messages_delete_thread' ) ); 
     1166                return apply_filters( 'bp_get_message_notice_delete_link', wp_nonce_url( bp_displayed_user_domain() . bp_get_messages_slug() . '/notices/delete/' . $messages_template->thread->id, 'messages_delete_thread' ) ); 
    11571167        } 
    11581168 
    11591169/** 
    function bp_message_activate_deactivate_link() { 
    11711181                global $messages_template; 
    11721182 
    11731183                if ( 1 === (int) $messages_template->thread->is_active ) { 
    1174                         $link = wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/notices/deactivate/' . $messages_template->thread->id ), 'messages_deactivate_notice' ); 
     1184                        $link = wp_nonce_url( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/notices/deactivate/' . $messages_template->thread->id ), 'messages_deactivate_notice' ); 
    11751185                } else { 
    1176                         $link = wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/notices/activate/' . $messages_template->thread->id ), 'messages_activate_notice' ); 
     1186                        $link = wp_nonce_url( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/notices/activate/' . $messages_template->thread->id ), 'messages_activate_notice' ); 
    11771187                } 
    11781188 
    11791189                /** 
    function bp_the_thread_recipients_list() { 
    16341644                                } 
    16351645 
    16361646                                $recipient_links[] = $recipient_link; 
     1647                        } else { 
     1648                                $recipient_links[] = __( 'you', 'buddypress' ); 
    16371649                        } 
    16381650                } 
    16391651 
     1652                // Convert to natural language. 
     1653                $size   = count( $recipient_links ); 
     1654                $string = ''; 
     1655 
     1656                $recipient_links[ $size - 1 ] = _x( 'and ', 'Joining word in a list of message recipients', 'buddypress' ) .  $recipient_links[ $size - 1 ]; 
     1657 
     1658                if ( $size >= 3 ) { 
     1659                        $recipient_links = implode( ', ', $recipient_links ); 
     1660                } else { 
     1661                        $recipient_links = implode( ' ', $recipient_links ); 
     1662                } 
     1663 
    16401664                /** 
    16411665                 * Filters the HTML links to the profiles of recipients in the current thread. 
    16421666                 * 
    function bp_the_thread_recipients_list() { 
    16441668                 * 
    16451669                 * @param string $value Comma-separated list of recipient HTML links for current thread. 
    16461670                 */ 
    1647                 return apply_filters( 'bp_get_the_thread_recipients_list', implode( ', ', $recipient_links ) ); 
     1671                return apply_filters( 'bp_get_the_thread_recipients_list', $recipient_links ); 
    16481672        } 
    16491673 
    16501674/** 
    function bp_the_thread_delete_link() { 
    19191943                 * @param string $value URL for deleting the current thread. 
    19201944                 * @param string $value Text indicating action being executed. 
    19211945                 */ 
    1922                 return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_messages_slug() . '/inbox/delete/' . bp_get_the_thread_id(), 'messages_delete_thread' ) ); 
     1946                return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( bp_displayed_user_domain() . bp_get_messages_slug() . '/inbox/delete/' . bp_get_the_thread_id(), 'messages_delete_thread' ) ); 
    19231947        } 
    19241948 
    19251949/** 
  • src/bp-messages/classes/class-bp-messages-component.php

    diff --git src/bp-messages/classes/class-bp-messages-component.php src/bp-messages/classes/class-bp-messages-component.php
    index baf5207..7049563 100644
    class BP_Messages_Component extends BP_Component { 
    145145 
    146146                // Only grab count if we're on a user page and current user has access. 
    147147                if ( bp_is_user() && bp_user_has_access() ) { 
    148                         $count    = bp_get_total_unread_messages_count(); 
     148                        $count    = bp_get_total_unread_messages_count( bp_displayed_user_id() ); 
    149149                        $class    = ( 0 === $count ) ? 'no-count' : 'count'; 
    150150                        $nav_name = sprintf( 
    151151                                /* translators: %s: Unread message count for the current user */ 
    class BP_Messages_Component extends BP_Component { 
    204204                        'user_has_access' => $access 
    205205                ); 
    206206 
    207                 $sub_nav[] = array( 
    208                         'name'            => __( 'Compose', 'buddypress' ), 
    209                         'slug'            => 'compose', 
    210                         'parent_url'      => $messages_link, 
    211                         'parent_slug'     => $slug, 
    212                         'screen_function' => 'messages_screen_compose', 
    213                         'position'        => 30, 
    214                         'user_has_access' => $access 
    215                 ); 
     207                // Show certain screens only if the current user is the displayed user. 
     208                if ( bp_is_my_profile() ) { 
    216209 
    217                 if ( bp_current_user_can( 'bp_moderate' ) ) { 
     210                        // Show "Compose" on the logged-in user's profile only. 
    218211                        $sub_nav[] = array( 
    219                                 'name'            => __( 'Notices', 'buddypress' ), 
    220                                 'slug'            => 'notices', 
     212                                'name'            => __( 'Compose', 'buddypress' ), 
     213                                'slug'            => 'compose', 
    221214                                'parent_url'      => $messages_link, 
    222215                                'parent_slug'     => $slug, 
    223                                 'screen_function' => 'messages_screen_notices', 
    224                                 'position'        => 90, 
    225                                 'user_has_access' => true 
     216                                'screen_function' => 'messages_screen_compose', 
     217                                'position'        => 30, 
     218                                'user_has_access' => $access 
    226219                        ); 
     220 
     221                        /* 
     222                         * Show "Notices" on the logged-in user's profile only 
     223                         * and then only if the user can create notices. 
     224                         */ 
     225                        if ( bp_current_user_can( 'bp_moderate' ) ) { 
     226                                $sub_nav[] = array( 
     227                                        'name'            => __( 'Notices', 'buddypress' ), 
     228                                        'slug'            => 'notices', 
     229                                        'parent_url'      => $messages_link, 
     230                                        'parent_slug'     => $slug, 
     231                                        'screen_function' => 'messages_screen_notices', 
     232                                        'position'        => 90, 
     233                                        'user_has_access' => true 
     234                                ); 
     235                        } 
    227236                } 
    228237 
    229238                parent::setup_nav( $main_nav, $sub_nav ); 
    class BP_Messages_Component extends BP_Component { 
    243252                        $messages_link = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() ); 
    244253 
    245254                        // Unread message count. 
    246                         $count = messages_get_unread_count(); 
     255                        $count = messages_get_unread_count( bp_loggedin_user_id() ); 
    247256                        if ( !empty( $count ) ) { 
    248257                                $title = sprintf( 
    249258                                        /* translators: %s: Unread message count for the current user */ 
  • src/bp-messages/classes/class-bp-messages-thread.php

    diff --git src/bp-messages/classes/class-bp-messages-thread.php src/bp-messages/classes/class-bp-messages-thread.php
    index 7b5356d..c868d55 100644
    class BP_Messages_Thread { 
    144144                        $order = 'ASC'; 
    145145                } 
    146146 
     147                $user_id = 
     148                        bp_displayed_user_id() ? 
     149                        bp_displayed_user_id() : 
     150                        bp_loggedin_user_id(); 
     151 
    147152                // Merge $args with our defaults. 
    148153                $r = wp_parse_args( $args, array( 
    149                         'user_id'           => bp_loggedin_user_id(), 
     154                        'user_id'           => $user_id, 
    150155                        'update_meta_cache' => true 
    151156                ) ); 
    152157 
    class BP_Messages_Thread { 
    613618        public static function mark_as_read( $thread_id = 0 ) { 
    614619                global $wpdb; 
    615620 
     621                $user_id = 
     622                        bp_displayed_user_id() ? 
     623                        bp_displayed_user_id() : 
     624                        bp_loggedin_user_id(); 
     625 
    616626                $bp     = buddypress(); 
    617                 $retval = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = 0 WHERE user_id = %d AND thread_id = %d", bp_loggedin_user_id(), $thread_id ) ); 
     627                $retval = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = 0 WHERE user_id = %d AND thread_id = %d", $user_id, $thread_id ) ); 
    618628 
    619629                wp_cache_delete( 'thread_recipients_' . $thread_id, 'bp_messages' ); 
    620                 wp_cache_delete( bp_loggedin_user_id(), 'bp_messages_unread_count' ); 
     630                wp_cache_delete( $user_id, 'bp_messages_unread_count' ); 
    621631 
    622632                /** 
    623633                 * Fires when messages thread was marked as read. 
    class BP_Messages_Thread { 
    643653        public static function mark_as_unread( $thread_id = 0 ) { 
    644654                global $wpdb; 
    645655 
     656                $user_id = 
     657                        bp_displayed_user_id() ? 
     658                        bp_displayed_user_id() : 
     659                        bp_loggedin_user_id(); 
     660 
    646661                $bp     = buddypress(); 
    647                 $retval = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = 1 WHERE user_id = %d AND thread_id = %d", bp_loggedin_user_id(), $thread_id ) ); 
     662                $retval = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = 1 WHERE user_id = %d AND thread_id = %d", $user_id, $thread_id ) ); 
    648663 
    649664                wp_cache_delete( 'thread_recipients_' . $thread_id, 'bp_messages' ); 
    650                 wp_cache_delete( bp_loggedin_user_id(), 'bp_messages_unread_count' ); 
     665                wp_cache_delete( $user_id, 'bp_messages_unread_count' ); 
    651666 
    652667                /** 
    653668                 * Fires when messages thread was marked as unread. 
  • src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php

    diff --git src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php src/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php
    index 4b37ead..148d5f3 100644
    do_action( 'bp_before_member_messages_loop' ); ?> 
    5050         */ 
    5151        do_action( 'bp_before_member_messages_threads' ); ?> 
    5252 
    53         <form action="<?php echo bp_loggedin_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ?>/bulk-manage/" method="post" id="messages-bulk-management"> 
     53        <form action="<?php echo bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ?>/bulk-manage/" method="post" id="messages-bulk-management"> 
    5454 
    5555                <table id="message-threads" class="messages-notices"> 
    5656 
  • src/bp-templates/bp-legacy/buddypress/members/single/messages/single.php

    diff --git src/bp-templates/bp-legacy/buddypress/members/single/messages/single.php src/bp-templates/bp-legacy/buddypress/members/single/messages/single.php
    index 1b31bbe..deae005 100644
     
    3535 
    3636                                <?php else : ?> 
    3737 
    38                                         <?php printf( __( 'Conversation between %s and you.', 'buddypress' ), bp_get_thread_recipients_list() ); ?> 
     38                                        <?php printf( __( 'Conversation between %s.', 'buddypress' ), bp_get_thread_recipients_list() ); ?> 
    3939 
    4040                                <?php endif; ?> 
    4141