Skip to:
Content

BuddyPress.org

Ticket #8508: 8508-1.diff

File 8508-1.diff, 22.8 KB (added by espellcaste, 2 months ago)
  • src/bp-messages/bp-messages-notifications.php

    diff --git src/bp-messages/bp-messages-notifications.php src/bp-messages/bp-messages-notifications.php
    index e2855d746..176a950d6 100644
    function bp_messages_message_delete_notifications( $thread_id, $message_ids ) { 
    284284        $thread = new BP_Messages_Thread( $thread_id );
    285285        foreach ( $thread->get_recipients() as $recipient ) {
    286286                foreach ( $message_ids as $message_id ) {
    287                         bp_notifications_delete_notifications_by_item_id( $recipient->user_id, (int) $message_id, buddypress()->messages->id, 'new_message' );
     287                        if ( ! empty( $recipient->user_id ) ) {
     288                                bp_notifications_delete_notifications_by_item_id(
     289                                        $recipient->user_id,
     290                                        (int) $message_id,
     291                                        buddypress()->messages->id,
     292                                        'new_message'
     293                                );
     294                        }
    288295                }
    289296        }
    290297}
  • 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 bc5f93a5e..715349a29 100644
    class BP_Messages_Thread { 
    109109         * Constructor.
    110110         *
    111111         * @since 1.0.0
     112         * @since 10.0.0 Updated the `$args` with new paremeters.
    112113         *
    113          * @see BP_Messages_Thread::populate() for full description of parameters.
    114          *
    115          * @param bool   $thread_id ID for the message thread.
    116          * @param string $order     Order to display the messages in.
    117          * @param array  $args      Array of arguments for thread querying.
     114         * @param int    $thread_id          The message thread ID.
     115         * @param string $order              The order to sort the messages. Either 'ASC' or 'DESC'.
     116         *                                   Defaults to 'ASC'.
     117         * @param array  $args               {
     118         *     Array of arguments.
     119         *     @type int         $user_id             ID of the user to get the unread count.
     120         *     @type bool        $update_meta_cache   Whether to pre-fetch metadata for
     121         *                                            queried message items. Default: true.
     122         *     @type int|null    $page                Page of messages being requested. Default to null, meaning all.
     123         *     @type int|null    $per_page            Messages to return per page. Default to null, meaning all.
     124         *     @type string      $order               The order to sort the messages. Either 'ASC' or 'DESC'.
     125         *                                            Defaults to 'ASC'.
     126         *     @type int|null    $recipients_page     Page of recipients being requested. Default to null, meaning all.
     127         *     @type int|null    $recipients_per_page Recipients to return per page. Defaults to null, meaning all.
     128         * }
    118129         */
    119         public function __construct( $thread_id = false, $order = 'ASC', $args = array() ) {
    120                 if ( $thread_id ) {
     130        public function __construct( $thread_id = 0, $order = 'ASC', $args = array() ) {
     131                if ( ! empty( $thread_id ) ) {
    121132                        $this->populate( $thread_id, $order, $args );
    122133                }
    123134        }
    class BP_Messages_Thread { 
    125136        /**
    126137         * Populate method.
    127138         *
    128          * Used in constructor.
     139         * Used in the constructor.
    129140         *
    130141         * @since 1.0.0
     142         * @since 10.0.0 Updated the `$args` with new paremeters.
    131143         *
    132          * @param int    $thread_id The message thread ID.
    133          * @param string $order     The order to sort the messages. Either 'ASC' or 'DESC'.
    134          * @param array  $args {
     144         * @param int    $thread_id                   The message thread ID.
     145         * @param string $order                       The order to sort the messages. Either 'ASC' or 'DESC'.
     146         *                                            Defaults to 'ASC'.
     147         * @param array  $args                        {
    135148         *     Array of arguments.
    136          *     @type bool $update_meta_cache Whether to pre-fetch metadata for
    137          *                                   queried message items. Default: true.
     149         *     @type int         $user_id             ID of the user to get the unread count.
     150         *     @type bool        $update_meta_cache   Whether to pre-fetch metadata for
     151         *                                            queried message items. Default: true.
     152         *     @type int|null    $page                Page of messages being requested. Default to null, meaning all.
     153         *     @type int|null    $per_page            Messages to return per page. Default to null, meaning all.
     154         *     @type string      $order               The order to sort the messages. Either 'ASC' or 'DESC'.
     155         *                                            Defaults to 'ASC'.
     156         *     @type int|null    $recipients_page     Page of recipients being requested. Default to null, meaning all.
     157         *     @type int|null    $recipients_per_page Recipients to return per page. Defaults to null, meaning all.
    138158         * }
    139159         * @return bool False on failure.
    140160         */
    141161        public function populate( $thread_id = 0, $order = 'ASC', $args = array() ) {
    142162
    143                 if ( 'ASC' !== $order && 'DESC' !== $order ) {
     163                if ( ! in_array( strtoupper( $order ), array( 'ASC', 'DESC' ), true ) ) {
    144164                        $order = 'ASC';
    145165                }
    146166
    class BP_Messages_Thread { 
    150170                        bp_loggedin_user_id();
    151171
    152172                // Merge $args with our defaults.
    153                 $r = wp_parse_args( $args, array(
    154                         'user_id'           => $user_id,
    155                         'update_meta_cache' => true
    156                 ) );
     173                $r = wp_parse_args(
     174                        $args,
     175                        array(
     176                                'user_id'             => $user_id,
     177                                'update_meta_cache'   => true,
     178                                'page'                => null,
     179                                'per_page'            => null,
     180                                'order'               => $order,
     181                                'recipients_page'     => null,
     182                                'recipients_per_page' => null,
     183                        )
     184                );
    157185
    158186                $this->messages_order = $order;
    159187                $this->thread_id      = (int) $thread_id;
    160188
    161189                // Get messages for thread.
    162                 $this->messages = self::get_messages( $this->thread_id );
     190                $this->messages = self::get_messages( $this->thread_id, $r );
    163191
    164                 if ( empty( $this->messages ) || is_wp_error( $this->messages ) ) {
     192                if ( empty( $this->messages ) ) {
    165193                        return false;
    166194                }
    167195
    168                 // Flip if order is DESC.
    169                 if ( 'DESC' === $order ) {
    170                         $this->messages = array_reverse( $this->messages );
    171                 }
    172 
    173196                $last_message_index         = count( $this->messages ) - 1;
    174197                $this->last_message_id      = $this->messages[ $last_message_index ]->id;
    175198                $this->last_message_date    = $this->messages[ $last_message_index ]->date_sent;
    class BP_Messages_Thread { 
    182205                }
    183206
    184207                // Fetch the recipients.
    185                 $this->recipients = $this->get_recipients();
     208                $this->recipients = $this->get_recipients( $thread_id, $r );
    186209
    187                 // Get the unread count for the logged in user.
     210                // Get the unread count for the user.
    188211                if ( isset( $this->recipients[ $r['user_id'] ] ) ) {
    189212                        $this->unread_count = $this->recipients[ $r['user_id'] ]->unread_count;
    190213                }
    class BP_Messages_Thread { 
    198221                 * Fires after a BP_Messages_Thread object has been populated.
    199222                 *
    200223                 * @since 2.2.0
     224                 * @since 10.0.0 Added `$r` as a parameter.
    201225                 *
    202226                 * @param BP_Messages_Thread $this Message thread object.
     227                 * @param array              $r    Array of paremeters.
    203228                 */
    204                 do_action( 'bp_messages_thread_post_populate', $this );
     229                do_action( 'bp_messages_thread_post_populate', $this, $r );
    205230        }
    206231
    207232        /**
    class BP_Messages_Thread { 
    230255         * Returns recipients for a message thread.
    231256         *
    232257         * @since 1.0.0
    233          * @since 2.3.0 Added $thread_id as a parameter.
     258         * @since 2.3.0  Added `$thread_id` as a parameter.
     259         * @since 10.0.0 Added `$args` as a parameter.
    234260         *
    235261         * @global BuddyPress $bp The one true BuddyPress instance.
    236262         * @global wpdb $wpdb WordPress database object.
    237263         *
    238          * @param int $thread_id The thread ID.
     264         * @param int   $thread_id Message thread ID.
     265         * @param array $args      {
     266         *     Array of arguments. See BP_Messages_Thread::populate() for full description.
     267         * }.
    239268         * @return array
    240269         */
    241         public function get_recipients( $thread_id = 0 ) {
     270        public function get_recipients( $thread_id = 0, $args = array() ) {
    242271                global $wpdb;
    243272
    244273                if ( empty( $thread_id ) ) {
    class BP_Messages_Thread { 
    247276
    248277                $thread_id = (int) $thread_id;
    249278
     279                if ( empty( $thread_id ) ) {
     280                        return array();
     281                }
     282
     283                $bp = buddypress();
     284                $r  = wp_parse_args(
     285                        $args,
     286                        array(
     287                                'recipients_page'     => null,
     288                                'recipients_per_page' => null,
     289                        )
     290                );
     291
    250292                $recipients = wp_cache_get( 'thread_recipients_' . $thread_id, 'bp_messages' );
    251                 if ( false === $recipients ) {
    252                         $bp = buddypress();
    253293
    254                         $recipients = array();
    255                         $sql        = $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d", $thread_id );
    256                         $results    = $wpdb->get_results( $sql );
     294                // If `recipients_per_page` is empty, this is a legacy request and it should be fetched from the cache, if available.
     295                if ( empty( $recipients ) || ! empty( $r['recipients_per_page'] ) ) {
     296                        $sql = '';
     297                        if ( ! is_null( $r['recipients_page'] ) && ! empty( $r['recipients_per_page'] ) ) {
     298                                $sql = $wpdb->prepare( "LIMIT %d, %d", ( $r['recipients_page'] - 1 ) * $r['recipients_per_page'], $r['recipients_per_page'] );
     299                        }
     300
     301                        $results = $wpdb->get_results(
     302                                $wpdb->prepare(
     303                                        "SELECT * FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d {$sql}",
     304                                        $thread_id
     305                                )
     306                        );
    257307
     308                        $recipients = array();
    258309                        foreach ( (array) $results as $recipient ) {
    259310                                $recipients[ $recipient->user_id ] = $recipient;
    260311                        }
    261312
    262                         wp_cache_set( 'thread_recipients_' . $thread_id, $recipients, 'bp_messages' );
    263                 }
     313                        // Cast all items from the messages DB table as integers.
     314                        foreach ( (array) $recipients as $key => $data ) {
     315                                $recipients[ $key ] = (object) array_map( 'intval', (array) $data );
     316                        }
    264317
    265                 // Cast all items from the messages DB table as integers.
    266                 foreach ( (array) $recipients as $key => $data ) {
    267                         $recipients[ $key ] = (object) array_map( 'intval', (array) $data );
     318                        // Cache request if it is not a paginated request.
     319                        if ( empty( $r['recipients_per_page'] ) ) {
     320                                wp_cache_set( 'thread_recipients_' . $thread_id, $recipients, 'bp_messages' );
     321                        }
    268322                }
    269323
    270324                /**
    271325                 * Filters the recipients of a message thread.
    272326                 *
    273327                 * @since 2.2.0
     328                 * @since 10.0.0 Added `$r` as a parameter.
    274329                 *
    275330                 * @param array $recipients Array of recipient objects.
    276                  * @param int   $thread_id  ID of the current thread.
     331                 * @param int   $thread_id  ID of the thread.
     332                 * @param array $r          An array of parameters.
    277333                 */
    278                 return apply_filters( 'bp_messages_thread_get_recipients', $recipients, $thread_id );
     334                return apply_filters( 'bp_messages_thread_get_recipients', (array) $recipients, (int) $thread_id, (array) $r );
    279335        }
    280336
    281337        /** Static Functions ******************************************************/
    282338
    283339        /**
    284          * Get all messages associated with a thread.
     340         * Get messages associated with a thread.
    285341         *
    286342         * @since 2.3.0
     343         * @since 10.0.0 Added `$args` as a parameter.
    287344         *
    288345         * @global BuddyPress $bp The one true BuddyPress instance.
    289346         * @global wpdb $wpdb WordPress database object.
    290347         *
    291          * @param int $thread_id The message thread ID.
    292          *
    293          * @return array List of messages associated with a thread.
     348         * @param int   $thread_id The message thread ID.
     349         * @param array $args      {
     350         *     Array of arguments. See BP_Messages_Thread::populate() for full description.
     351         * }.
     352         * @return array
    294353         */
    295         public static function get_messages( $thread_id = 0 ) {
     354        public static function get_messages( $thread_id = 0, $args = array() ) {
     355                global $wpdb;
     356
    296357                $thread_id = (int) $thread_id;
    297                 $messages  = wp_cache_get( $thread_id, 'bp_messages_threads' );
     358                if ( empty( $thread_id ) ) {
     359                        return array();
     360                }
    298361
    299                 if ( false === $messages ) {
    300                         global $wpdb;
     362                $bp = buddypress();
     363                $r  = wp_parse_args(
     364                        $args,
     365                        array(
     366                                'page'     => null,
     367                                'per_page' => null,
     368                                'order'    => 'ASC',
     369                        )
     370                );
    301371
    302                         $bp = buddypress();
     372                $messages = wp_cache_get( $thread_id, 'bp_messages_threads' );
    303373
    304                         // Always sort by ASC by default.
    305                         $messages = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_messages} WHERE thread_id = %d ORDER BY date_sent ASC", $thread_id ) );
     374                // If `per_page` is empty, this is a legacy request and it should be fetched from the cache, if available.
     375                if ( empty( $messages ) || ! empty( $r['per_page'] ) ) {
    306376
    307                         wp_cache_set( $thread_id, (array) $messages, 'bp_messages_threads' );
    308                 }
     377                        // Fallback.
     378                        if ( ! in_array( strtoupper( $r['order'] ), array( 'ASC', 'DESC' ), true ) ) {
     379                                $r['order'] = 'ASC';
     380                        }
     381
     382                        $sql = '';
     383                        if ( ! empty( $r['page'] ) && ! empty( $r['per_page'] ) ) {
     384                                $sql = $wpdb->prepare( "LIMIT %d, %d", ( $r['page'] - 1 ) * $r['per_page'], $r['per_page'] );
     385                        }
     386
     387                        $messages = $wpdb->get_results(
     388                                $wpdb->prepare(
     389                                        "SELECT * FROM {$bp->messages->table_name_messages} WHERE thread_id = %d ORDER BY date_sent ASC {$sql}",
     390                                        $thread_id
     391                                )
     392                        );
     393
     394                        // Integer casting.
     395                        foreach ( $messages as $key => $data ) {
     396                                $messages[ $key ]->id        = (int) $messages[ $key ]->id;
     397                                $messages[ $key ]->thread_id = (int) $messages[ $key ]->thread_id;
     398                                $messages[ $key ]->sender_id = (int) $messages[ $key ]->sender_id;
     399                        }
    309400
    310                 // Integer casting.
    311                 foreach ( $messages as $key => $data ) {
    312                         $messages[ $key ]->id        = (int) $messages[ $key ]->id;
    313                         $messages[ $key ]->thread_id = (int) $messages[ $key ]->thread_id;
    314                         $messages[ $key ]->sender_id = (int) $messages[ $key ]->sender_id;
     401                        if ( empty( $messages ) ) {
     402                                return array();
     403                        }
     404
     405                        // Flip if order is DESC.
     406                        if ( 'DESC' === strtoupper( $r['order'] ) ) {
     407                                $messages = array_reverse( $messages );
     408                        }
     409
     410                        // Cache request if it is not a paginated request.
     411                        if ( empty( $r['per_page'] ) ) {
     412                                wp_cache_set( $thread_id, (array) $messages, 'bp_messages_threads' );
     413                        }
    315414                }
    316415
    317                 return $messages;
     416                /**
     417                 * Filters the messages associated with a thread.
     418                 *
     419                 * @since 10.0.0
     420                 *
     421                 * @param array $messages   Array of message objects.
     422                 * @param int   $thread_id  ID of the thread.
     423                 * @param array $r          An array of parameters.
     424                 */
     425                return apply_filters( 'bp_messages_thread_get_messages', (array) $messages, (int) $thread_id, (array) $r );
    318426        }
    319427
    320428        /**
  • tests/phpunit/testcases/messages/class.bp-messages-thread.php

    diff --git tests/phpunit/testcases/messages/class.bp-messages-thread.php tests/phpunit/testcases/messages/class.bp-messages-thread.php
    index f9de1d1cd..1d8ef291f 100644
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    99        /**
    1010         * @group cache
    1111         */
    12         public function test_construct_cache() {
     12        public function construct_cache() {
    1313                $u1 = self::factory()->user->create();
    1414                $u2 = self::factory()->user->create();
    1515
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    3030                );
    3131        }
    3232
     33        public function test_get_messages_with_invalid_thread_id() {
     34                $this->assertTrue( empty( BP_Messages_Thread::get_messages( 0 ) ) );
     35        }
     36
     37        public function test_get_messages_using_arguments() {
     38                $u1 = self::factory()->user->create();
     39                $u2 = self::factory()->user->create();
     40                $m1 = self::factory()->message->create_and_get( array(
     41                        'sender_id' => $u1,
     42                        'recipients' => array( $u2 ),
     43                        'subject' => 'Foo',
     44                ) );
     45
     46                self::factory()->message->create_many(
     47                        98,
     48                        array(
     49                                'thread_id' => $m1->thread_id,
     50                                'sender_id' => $u2,
     51                                'recipients' => array( $u1 ),
     52                                'subject' => 'Bar',
     53                        )
     54                );
     55
     56                // Last message
     57                self::factory()->message->create(
     58                        array(
     59                                'thread_id' => $m1->thread_id,
     60                                'sender_id' => $u1,
     61                                'recipients' => array( $u2 ),
     62                                'subject' => 'Last Message',
     63                        )
     64                );
     65
     66                // Default results.
     67                $messages = BP_Messages_Thread::get_messages( $m1->thread_id );
     68                $this->assertTrue( 100 === count( $messages ) );
     69
     70                // Get first 10 messages.
     71                $messages = BP_Messages_Thread::get_messages( $m1->thread_id, array( 'page' => 1, 'per_page' => 10 ) );
     72                $this->assertTrue( 10 === count( $messages ) );
     73
     74                // Get first 10 messages differently.
     75                $thread = new BP_Messages_Thread( $m1->thread_id, 'ASC', array( 'page' => 1, 'per_page' => 10 ) );
     76                $this->assertTrue( 10 === count( $thread->messages ) );
     77
     78                // Get all messages.
     79                $messages = BP_Messages_Thread::get_messages( $m1->thread_id, array( 'page' => null, 'per_page' => null ) );
     80                $this->assertTrue( 100 === count( $messages ) );
     81
     82                // Get all mesages differently.
     83                $thread = new BP_Messages_Thread( $m1->thread_id, 'ASC', array( 'page' => null, 'per_page' => null ) );
     84                $this->assertTrue( 100 === count( $thread->messages ) );
     85
     86                // Get last message.
     87                $messages = BP_Messages_Thread::get_messages( $m1->thread_id, array( 'page' => 100, 'per_page' => 1 ) );
     88                $this->assertTrue( 1 === count( $messages ) );
     89                $this->assertEquals( $u1, $messages[0]->sender_id );
     90                $this->assertEquals( 'Last Message', $messages[0]->subject );
     91        }
     92
    3393        /**
    3494         * @group order
    3595         */
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    43103                        'recipients' => array( $u2 ),
    44104                        'subject' => 'Foo',
    45105                ) );
    46                 $m1 = $message_1->id;
    47106
    48107                // create reply
    49108                $message_2 = self::factory()->message->create_and_get( array(
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    52111                        'recipients' => array( $u2 ),
    53112                        'content' => 'Bar'
    54113                ) );
    55                 $m2 = $message_2->id;
    56114
    57                 // now get thread by DESC
     115                // Default sort from constructor.
     116                $thread = new BP_Messages_Thread( $message_1->thread_id );
     117                $this->assertEquals(
     118                        array( $message_1->id, $message_2->id ),
     119                        wp_list_pluck( $thread->messages, 'id' )
     120                );
     121
     122                wp_cache_delete( $message_1->thread_id, 'bp_messages_threads' );
     123
     124                // Default via the helper method.
     125                $messages = BP_Messages_Thread::get_messages( $message_1->thread_id );
     126                $this->assertEquals(
     127                        array( $message_1->id, $message_2->id ),
     128                        wp_list_pluck( $messages, 'id' )
     129                );
     130
     131                wp_cache_delete( $message_1->thread_id, 'bp_messages_threads' );
     132
     133                // Now get thread by DESC via the constructor.
    58134                $thread = new BP_Messages_Thread( $message_1->thread_id, 'DESC' );
     135                $this->assertEquals(
     136                        array( $message_2->id, $message_1->id ),
     137                        wp_list_pluck( $thread->messages, 'id' )
     138                );
    59139
    60                 // assert!
     140                wp_cache_delete( $message_1->thread_id, 'bp_messages_threads' );
     141
     142                // Testing sort with lowercase.
     143                $thread = new BP_Messages_Thread( $message_1->thread_id, 'desc' );
    61144                $this->assertEquals(
    62                         array( $m2, $m1 ),
     145                        array( $message_2->id, $message_1->id ),
    63146                        wp_list_pluck( $thread->messages, 'id' )
    64147                );
     148
     149                wp_cache_delete( $message_1->thread_id, 'bp_messages_threads' );
     150
     151                // Now sorting via the helper method.
     152                $messages = BP_Messages_Thread::get_messages( $message_1->thread_id, array( 'order' => 'desc' ) );
     153                $this->assertEquals(
     154                        array( $message_2->id, $message_1->id ),
     155                        wp_list_pluck( $messages, 'id' )
     156                );
    65157        }
    66158
    67159        /**
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    71163                $u1 = self::factory()->user->create();
    72164                $u2 = self::factory()->user->create();
    73165
    74                 $message_1 = self::factory()->message->create_and_get( array(
     166                self::factory()->message->create_and_get( array(
    75167                        'sender_id' => $u1,
    76168                        'recipients' => array( $u2 ),
    77169                        'subject' => 'Foo',
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    101193                $u1 = self::factory()->user->create();
    102194                $u2 = self::factory()->user->create();
    103195
    104                 $message_1 = self::factory()->message->create_and_get( array(
     196                self::factory()->message->create_and_get( array(
    105197                        'sender_id' => $u1,
    106198                        'recipients' => array( $u2 ),
    107199                        'subject' => 'Foo',
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    133225                $u1 = self::factory()->user->create();
    134226                $u2 = self::factory()->user->create();
    135227
    136                 $message_1 = self::factory()->message->create_and_get( array(
     228                self::factory()->message->create_and_get( array(
    137229                        'sender_id' => $u1,
    138230                        'recipients' => array( $u2 ),
    139231                        'subject' => 'Foo',
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    153245                $this->assertSame( $expected, $found );
    154246        }
    155247
     248        /**
     249         * @group get_recipients
     250         */
     251        public function test_get_recipients_paginated() {
     252                $u1       = self::factory()->user->create();
     253                $user_ids = self::factory()->user->create_many( 9 );
     254                $m        = self::factory()->message->create_and_get( array(
     255                        'sender_id'  => $u1,
     256                        'recipients' => $user_ids,
     257                        'subject'    => 'Foo',
     258                ) );
     259
     260                $thread_1 = new BP_Messages_Thread( $m->thread_id );
     261                $this->assertTrue( 10 === count( $thread_1->get_recipients() ) );
     262
     263                $thread_2 = new BP_Messages_Thread( $m->thread_id, 'ASC', array( 'recipients_page' => 1, 'recipients_per_page' => 5 ) );
     264                $this->assertTrue( 5 === count( $thread_2->recipients ) );
     265
     266                $thread_3 = new BP_Messages_Thread( $m->thread_id );
     267                $this->assertTrue( 8 === count( $thread_3->get_recipients( $m->thread_id, array( 'recipients_page' => 1, 'recipients_per_page' => 8 ) ) ) );
     268        }
     269
    156270        /**
    157271         * @group get_recipients
    158272         * @group cache
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    196310                ) );
    197311
    198312                $thread = new BP_Messages_Thread( $message->thread_id );
    199                 $recipients = $thread->get_recipients();
     313                $thread->get_recipients();
    200314
    201315                // Verify that the cache is populated.
    202316                $num_queries = $wpdb->num_queries;
    203                 $recipients_cached = $thread->get_recipients();
     317                $thread->get_recipients();
    204318                $this->assertEquals( $num_queries, $wpdb->num_queries );
    205319
    206320                messages_new_message( array(
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    213327
    214328                // Cache should be empty.
    215329                $num_queries = $wpdb->num_queries;
    216                 $recipients_uncached = $thread->get_recipients();
     330                $thread->get_recipients();
    217331                $this->assertEquals( $num_queries + 1, $wpdb->num_queries );
    218332        }
    219333
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    236350                $t1 = $message->thread_id;
    237351
    238352                $thread = new BP_Messages_Thread( $t1 );
    239                 $recipients = $thread->get_recipients();
     353                $thread->get_recipients();
    240354
    241355                // Verify that the cache is populated.
    242356                $num_queries = $wpdb->num_queries;
    243                 $recipients_cached = $thread->get_recipients();
     357                $thread->get_recipients();
    244358                $this->assertEquals( $num_queries, $wpdb->num_queries );
    245359
    246360                messages_delete_thread( $t1 );
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    268382                $t1 = $message->thread_id;
    269383
    270384                $thread = new BP_Messages_Thread( $t1 );
    271                 $recipients = $thread->get_recipients();
     385                $thread->get_recipients();
    272386
    273387                // Verify that the cache is populated.
    274388                $num_queries = $wpdb->num_queries;
    275                 $recipients_cached = $thread->get_recipients();
     389                $thread->get_recipients();
    276390                $this->assertEquals( $num_queries, $wpdb->num_queries );
    277391
    278392                messages_delete_thread( array( $t1 ) );
    class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 
    396510                $t1 = $message->thread_id;
    397511
    398512                $thread = new BP_Messages_Thread( $t1 );
    399                 $recipients = $thread->get_recipients();
     513                $thread->get_recipients();
    400514
    401515                // Verify that the cache is populated.
    402516                $num_queries = $wpdb->num_queries;
    403                 $recipients_cached = $thread->get_recipients();
     517                $thread->get_recipients();
    404518                $this->assertEquals( $num_queries, $wpdb->num_queries );
    405519
    406520                // Mark thread as unread