Ticket #6483: 6483.02.patch
File 6483.02.patch, 4.9 KB (added by , 10 years ago) |
---|
-
src/bp-messages/bp-messages-star.php
diff --git src/bp-messages/bp-messages-star.php src/bp-messages/bp-messages-star.php index 08e4143..59d662e 100644
function bp_messages_star_content() { 350 350 * @return array 351 351 */ 352 352 function bp_messages_filter_starred_message_threads( $r = array() ) { 353 $r[' user_id'] = 0;353 $r['box'] = 'starred'; 354 354 $r['meta_query'] = array( array( 355 355 'key' => 'starred_by_user', 356 356 'value' => bp_loggedin_user_id() -
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 f7e81f3..617c24c 100644
class BP_Messages_Thread { 460 460 $search_sql = $wpdb->prepare( "AND ( subject LIKE %s OR message LIKE %s )", $search_terms_like, $search_terms_like ); 461 461 } 462 462 463 // Default deleted SQL 464 $deleted_sql = 'r.is_deleted = 0'; 465 466 // Set up SQL statements depending on message box type and user ID 463 467 if ( ! empty( $r['user_id'] ) ) { 464 if ( 'sentbox' == $r['box'] ) { 465 $user_id_sql = 'AND ' . $wpdb->prepare( 'm.sender_id = %d', $r['user_id'] ); 466 $sender_sql = ' AND m.sender_id = r.user_id'; 467 } else { 468 $user_id_sql = 'AND ' . $wpdb->prepare( 'r.user_id = %d', $r['user_id'] ); 469 $sender_sql = ' AND r.sender_only = 0'; 468 switch ( $r['box'] ) { 469 case 'sentbox' : 470 $user_id_sql = 'AND ' . $wpdb->prepare( 'm.sender_id = %d', $r['user_id'] ); 471 $sender_sql = ' AND m.sender_id = r.user_id'; 472 break; 473 474 case 'inbox' : 475 $user_id_sql = 'AND ' . $wpdb->prepare( 'r.user_id = %d', $r['user_id'] ); 476 $sender_sql = ' AND r.sender_only = 0'; 477 break; 478 479 default : 480 // Omit user-deleted threads from all other custom message boxes 481 $deleted_sql = $wpdb->prepare( '( r.user_id = %d AND r.is_deleted = 0 )', $r['user_id'] ); 482 break; 470 483 } 471 484 } 472 485 … … class BP_Messages_Thread { 485 498 $sql = array(); 486 499 $sql['select'] = 'SELECT m.thread_id, MAX(m.date_sent) AS date_sent'; 487 500 $sql['from'] = "FROM {$bp->messages->table_name_recipients} r INNER JOIN {$bp->messages->table_name_messages} m ON m.thread_id = r.thread_id {$meta_query_sql['join']}"; 488 $sql['where'] = "WHERE r.is_deleted = 0{$user_id_sql} {$sender_sql} {$type_sql} {$search_sql} {$meta_query_sql['where']}";501 $sql['where'] = "WHERE {$deleted_sql} {$user_id_sql} {$sender_sql} {$type_sql} {$search_sql} {$meta_query_sql['where']}"; 489 502 $sql['misc'] = "GROUP BY m.thread_id ORDER BY date_sent DESC {$pag_sql}"; 490 503 491 504 // get thread IDs -
tests/phpunit/testcases/messages/star.php
diff --git tests/phpunit/testcases/messages/star.php tests/phpunit/testcases/messages/star.php index 476fecc..5b1bfba 100644
class BP_Tests_Messages_Star_ extends BP_UnitTestCase { 107 107 } 108 108 109 109 /** 110 * @group bp_messages_filter_starred_message_threads 111 */ 112 public function test_get_starred_threads_without_deleted_thread() { 113 $old_current_user = get_current_user_id(); 114 $u1 = $this->factory->user->create(); 115 $u2 = $this->factory->user->create(); 116 117 // create three threads 118 $t1 = $this->factory->message->create( array( 119 'sender_id' => $u1, 120 'recipients' => array( $u2 ), 121 'subject' => 'A', 122 ) ); 123 $t2 = $this->factory->message->create( array( 124 'sender_id' => $u1, 125 'recipients' => array( $u2 ), 126 'subject' => 'B', 127 ) ); 128 $t3 = $this->factory->message->create( array( 129 'sender_id' => $u1, 130 'recipients' => array( $u2 ), 131 'subject' => 'C', 132 ) ); 133 134 // grab the message ids as individual variables 135 list( $m1 ) = $this->get_message_ids( $t1 ); 136 list( $m2 ) = $this->get_message_ids( $t2 ); 137 list( $m3 ) = $this->get_message_ids( $t3 ); 138 139 // star all threads 140 bp_messages_star_set_action( array( 141 'user_id' => $u2, 142 'message_id' => $m1, 143 ) ); 144 bp_messages_star_set_action( array( 145 'user_id' => $u2, 146 'message_id' => $m2, 147 ) ); 148 bp_messages_star_set_action( array( 149 'user_id' => $u2, 150 'message_id' => $m3, 151 ) ); 152 153 // delete the second thread 154 $this->set_current_user( $u2 ); 155 messages_delete_thread( $t2 ); 156 157 // load the starred threads loop 158 global $messages_template; 159 add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); 160 bp_has_message_threads(); 161 remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); 162 163 // assert that second thread isn't in starred thread loop 164 $thread_ids = wp_list_pluck( $messages_template->threads, 'thread_id' ); 165 $this->assertFalse( in_array( $t2, $thread_ids ) ); 166 167 // reset 168 $this->set_current_user( $old_current_user ); 169 } 170 171 /** 110 172 * Helper method to grab the message IDs from a message thread. 111 173 * 112 174 * @param int $thread_id The message thread ID