Changeset 9744
- Timestamp:
- 04/12/2015 07:42:38 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-messages/bp-messages-notifications.php
r9351 r9744 298 298 * @since BuddyPress (2.0.0) 299 299 * 300 * @param int $message_id ID of the message. 301 */ 302 function bp_messages_message_delete_notifications( $message_id = 0 ) { 303 if ( bp_is_active( 'notifications' ) && ! empty( $message_id ) ) { 304 bp_notifications_delete_notifications_by_item_id( bp_loggedin_user_id(), (int) $message_id, buddypress()->messages->id, 'new_message' ); 305 } 306 } 307 add_action( 'messages_thread_deleted_thread', 'bp_messages_message_delete_notifications', 10, 1 ); 300 * @param int $message_id ID of the thread. 301 * @param array $message_ids IDs of the messages. 302 */ 303 function bp_messages_message_delete_notifications( $thread_id, $message_ids ) { 304 if ( ! bp_is_active( 'notifications' ) ) { 305 return; 306 } 307 308 // For each recipient, delete notifications corresponding to each message. 309 $thread = new BP_Messages_Thread( $thread_id ); 310 foreach ( $thread->get_recipients() as $recipient ) { 311 foreach ( $message_ids as $message_id ) { 312 bp_notifications_delete_notifications_by_item_id( $recipient->user_id, (int) $message_id, buddypress()->messages->id, 'new_message' ); 313 } 314 } 315 } 316 add_action( 'bp_messages_thread_after_delete', 'bp_messages_message_delete_notifications', 10, 2 ); -
trunk/tests/phpunit/testcases/messages/notifications.php
r9208 r9744 13 13 14 14 $this->filter_fired = ''; 15 }16 /**17 * @group bp_messages_message_delete_notifications18 */19 public function test_bp_messages_message_delete_notifications() {20 $current_user = get_current_user_id();21 $u = $this->factory->user->create();22 $this->set_current_user( $u );23 24 // Dummy thread ID25 $t = 12;26 27 // Admin28 $n = $this->factory->notification->create( array(29 'component_name' => 'messages',30 'user_id' => $u,31 'item_id' => $t,32 'component_action' => 'new_message',33 ) );34 35 $notifications = BP_Notifications_Notification::get( array(36 'user_id' => $u,37 ) );38 39 // Double check it's there40 $this->assertEquals( array( $n ), wp_list_pluck( $notifications, 'id' ) );41 42 // fire the hook43 do_action( 'messages_thread_deleted_thread', $t );44 45 $notifications = BP_Notifications_Notification::get( array(46 'user_id' => $u,47 ) );48 49 $this->assertEmpty( $notifications );50 51 $this->set_current_user( $current_user );52 15 } 53 16 … … 148 111 } 149 112 113 /** 114 * @ticket BP6329 115 */ 116 public function test_messages_notifications_should_be_deleted_when_corresponding_message_is_deleted() { 117 if ( ! bp_is_active( 'messages' ) ) { 118 $this->markTestSkipped( __METHOD__ . ' requires the Messages component.' ); 119 } 120 121 $u1 = $this->factory->user->create(); 122 $u2 = $this->factory->user->create(); 123 124 $t1 = messages_new_message( array( 125 'sender_id' => $u1, 126 'recipients' => array( $u2 ), 127 'subject' => 'A new message', 128 'content' => 'Hey there!', 129 ) ); 130 131 // Verify that a notification has been created for the message. 132 $n1 = BP_Notifications_Notification::get( array( 133 'component' => 'messages', 134 'user_id' => $u2, 135 ) ); 136 $this->assertNotEmpty( $n1 ); 137 138 $this->assertTrue( messages_delete_thread( $t1 ) ); 139 140 $n2 = BP_Notifications_Notification::get( array( 141 'component' => 'messages', 142 'user_id' => $u2, 143 ) ); 144 $this->assertSame( array(), $n2 ); 145 } 146 150 147 public function notification_filter_callback( $value ) { 151 148 $this->filter_fired = current_filter();
Note: See TracChangeset
for help on using the changeset viewer.