Ticket #8508: 8508-1.diff
| File 8508-1.diff, 22.8 KB (added by , 4 years 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 ) { 284 284 $thread = new BP_Messages_Thread( $thread_id ); 285 285 foreach ( $thread->get_recipients() as $recipient ) { 286 286 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 } 288 295 } 289 296 } 290 297 } -
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 { 109 109 * Constructor. 110 110 * 111 111 * @since 1.0.0 112 * @since 10.0.0 Updated the `$args` with new paremeters. 112 113 * 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 * } 118 129 */ 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 ) ) { 121 132 $this->populate( $thread_id, $order, $args ); 122 133 } 123 134 } … … class BP_Messages_Thread { 125 136 /** 126 137 * Populate method. 127 138 * 128 * Used in constructor.139 * Used in the constructor. 129 140 * 130 141 * @since 1.0.0 142 * @since 10.0.0 Updated the `$args` with new paremeters. 131 143 * 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 { 135 148 * 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. 138 158 * } 139 159 * @return bool False on failure. 140 160 */ 141 161 public function populate( $thread_id = 0, $order = 'ASC', $args = array() ) { 142 162 143 if ( 'ASC' !== $order && 'DESC' !== $order) {163 if ( ! in_array( strtoupper( $order ), array( 'ASC', 'DESC' ), true ) ) { 144 164 $order = 'ASC'; 145 165 } 146 166 … … class BP_Messages_Thread { 150 170 bp_loggedin_user_id(); 151 171 152 172 // 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 ); 157 185 158 186 $this->messages_order = $order; 159 187 $this->thread_id = (int) $thread_id; 160 188 161 189 // Get messages for thread. 162 $this->messages = self::get_messages( $this->thread_id );190 $this->messages = self::get_messages( $this->thread_id, $r ); 163 191 164 if ( empty( $this->messages ) || is_wp_error( $this->messages )) {192 if ( empty( $this->messages ) ) { 165 193 return false; 166 194 } 167 195 168 // Flip if order is DESC.169 if ( 'DESC' === $order ) {170 $this->messages = array_reverse( $this->messages );171 }172 173 196 $last_message_index = count( $this->messages ) - 1; 174 197 $this->last_message_id = $this->messages[ $last_message_index ]->id; 175 198 $this->last_message_date = $this->messages[ $last_message_index ]->date_sent; … … class BP_Messages_Thread { 182 205 } 183 206 184 207 // Fetch the recipients. 185 $this->recipients = $this->get_recipients( );208 $this->recipients = $this->get_recipients( $thread_id, $r ); 186 209 187 // Get the unread count for the logged inuser.210 // Get the unread count for the user. 188 211 if ( isset( $this->recipients[ $r['user_id'] ] ) ) { 189 212 $this->unread_count = $this->recipients[ $r['user_id'] ]->unread_count; 190 213 } … … class BP_Messages_Thread { 198 221 * Fires after a BP_Messages_Thread object has been populated. 199 222 * 200 223 * @since 2.2.0 224 * @since 10.0.0 Added `$r` as a parameter. 201 225 * 202 226 * @param BP_Messages_Thread $this Message thread object. 227 * @param array $r Array of paremeters. 203 228 */ 204 do_action( 'bp_messages_thread_post_populate', $this );229 do_action( 'bp_messages_thread_post_populate', $this, $r ); 205 230 } 206 231 207 232 /** … … class BP_Messages_Thread { 230 255 * Returns recipients for a message thread. 231 256 * 232 257 * @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. 234 260 * 235 261 * @global BuddyPress $bp The one true BuddyPress instance. 236 262 * @global wpdb $wpdb WordPress database object. 237 263 * 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 * }. 239 268 * @return array 240 269 */ 241 public function get_recipients( $thread_id = 0 ) {270 public function get_recipients( $thread_id = 0, $args = array() ) { 242 271 global $wpdb; 243 272 244 273 if ( empty( $thread_id ) ) { … … class BP_Messages_Thread { 247 276 248 277 $thread_id = (int) $thread_id; 249 278 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 250 292 $recipients = wp_cache_get( 'thread_recipients_' . $thread_id, 'bp_messages' ); 251 if ( false === $recipients ) {252 $bp = buddypress();253 293 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 ); 257 307 308 $recipients = array(); 258 309 foreach ( (array) $results as $recipient ) { 259 310 $recipients[ $recipient->user_id ] = $recipient; 260 311 } 261 312 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 } 264 317 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 } 268 322 } 269 323 270 324 /** 271 325 * Filters the recipients of a message thread. 272 326 * 273 327 * @since 2.2.0 328 * @since 10.0.0 Added `$r` as a parameter. 274 329 * 275 330 * @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. 277 333 */ 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 ); 279 335 } 280 336 281 337 /** Static Functions ******************************************************/ 282 338 283 339 /** 284 * Get allmessages associated with a thread.340 * Get messages associated with a thread. 285 341 * 286 342 * @since 2.3.0 343 * @since 10.0.0 Added `$args` as a parameter. 287 344 * 288 345 * @global BuddyPress $bp The one true BuddyPress instance. 289 346 * @global wpdb $wpdb WordPress database object. 290 347 * 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 294 353 */ 295 public static function get_messages( $thread_id = 0 ) { 354 public static function get_messages( $thread_id = 0, $args = array() ) { 355 global $wpdb; 356 296 357 $thread_id = (int) $thread_id; 297 $messages = wp_cache_get( $thread_id, 'bp_messages_threads' ); 358 if ( empty( $thread_id ) ) { 359 return array(); 360 } 298 361 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 ); 301 371 302 $bp = buddypress();372 $messages = wp_cache_get( $thread_id, 'bp_messages_threads' ); 303 373 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'] ) ) { 306 376 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 } 309 400 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 } 315 414 } 316 415 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 ); 318 426 } 319 427 320 428 /** -
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 { 9 9 /** 10 10 * @group cache 11 11 */ 12 public function test_construct_cache() {12 public function construct_cache() { 13 13 $u1 = self::factory()->user->create(); 14 14 $u2 = self::factory()->user->create(); 15 15 … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 30 30 ); 31 31 } 32 32 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 33 93 /** 34 94 * @group order 35 95 */ … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 43 103 'recipients' => array( $u2 ), 44 104 'subject' => 'Foo', 45 105 ) ); 46 $m1 = $message_1->id;47 106 48 107 // create reply 49 108 $message_2 = self::factory()->message->create_and_get( array( … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 52 111 'recipients' => array( $u2 ), 53 112 'content' => 'Bar' 54 113 ) ); 55 $m2 = $message_2->id;56 114 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. 58 134 $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 ); 59 139 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' ); 61 144 $this->assertEquals( 62 array( $m 2, $m1),145 array( $message_2->id, $message_1->id ), 63 146 wp_list_pluck( $thread->messages, 'id' ) 64 147 ); 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 ); 65 157 } 66 158 67 159 /** … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 71 163 $u1 = self::factory()->user->create(); 72 164 $u2 = self::factory()->user->create(); 73 165 74 $message_1 =self::factory()->message->create_and_get( array(166 self::factory()->message->create_and_get( array( 75 167 'sender_id' => $u1, 76 168 'recipients' => array( $u2 ), 77 169 'subject' => 'Foo', … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 101 193 $u1 = self::factory()->user->create(); 102 194 $u2 = self::factory()->user->create(); 103 195 104 $message_1 =self::factory()->message->create_and_get( array(196 self::factory()->message->create_and_get( array( 105 197 'sender_id' => $u1, 106 198 'recipients' => array( $u2 ), 107 199 'subject' => 'Foo', … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 133 225 $u1 = self::factory()->user->create(); 134 226 $u2 = self::factory()->user->create(); 135 227 136 $message_1 =self::factory()->message->create_and_get( array(228 self::factory()->message->create_and_get( array( 137 229 'sender_id' => $u1, 138 230 'recipients' => array( $u2 ), 139 231 'subject' => 'Foo', … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 153 245 $this->assertSame( $expected, $found ); 154 246 } 155 247 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 156 270 /** 157 271 * @group get_recipients 158 272 * @group cache … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 196 310 ) ); 197 311 198 312 $thread = new BP_Messages_Thread( $message->thread_id ); 199 $ recipients = $thread->get_recipients();313 $thread->get_recipients(); 200 314 201 315 // Verify that the cache is populated. 202 316 $num_queries = $wpdb->num_queries; 203 $ recipients_cached = $thread->get_recipients();317 $thread->get_recipients(); 204 318 $this->assertEquals( $num_queries, $wpdb->num_queries ); 205 319 206 320 messages_new_message( array( … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 213 327 214 328 // Cache should be empty. 215 329 $num_queries = $wpdb->num_queries; 216 $ recipients_uncached = $thread->get_recipients();330 $thread->get_recipients(); 217 331 $this->assertEquals( $num_queries + 1, $wpdb->num_queries ); 218 332 } 219 333 … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 236 350 $t1 = $message->thread_id; 237 351 238 352 $thread = new BP_Messages_Thread( $t1 ); 239 $ recipients = $thread->get_recipients();353 $thread->get_recipients(); 240 354 241 355 // Verify that the cache is populated. 242 356 $num_queries = $wpdb->num_queries; 243 $ recipients_cached = $thread->get_recipients();357 $thread->get_recipients(); 244 358 $this->assertEquals( $num_queries, $wpdb->num_queries ); 245 359 246 360 messages_delete_thread( $t1 ); … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 268 382 $t1 = $message->thread_id; 269 383 270 384 $thread = new BP_Messages_Thread( $t1 ); 271 $ recipients = $thread->get_recipients();385 $thread->get_recipients(); 272 386 273 387 // Verify that the cache is populated. 274 388 $num_queries = $wpdb->num_queries; 275 $ recipients_cached = $thread->get_recipients();389 $thread->get_recipients(); 276 390 $this->assertEquals( $num_queries, $wpdb->num_queries ); 277 391 278 392 messages_delete_thread( array( $t1 ) ); … … class BP_Tests_BP_Messages_Thread extends BP_UnitTestCase { 396 510 $t1 = $message->thread_id; 397 511 398 512 $thread = new BP_Messages_Thread( $t1 ); 399 $ recipients = $thread->get_recipients();513 $thread->get_recipients(); 400 514 401 515 // Verify that the cache is populated. 402 516 $num_queries = $wpdb->num_queries; 403 $ recipients_cached = $thread->get_recipients();517 $thread->get_recipients(); 404 518 $this->assertEquals( $num_queries, $wpdb->num_queries ); 405 519 406 520 // Mark thread as unread