BP_Messages_Thread::delete( int $thread_id, int $user_id )
Mark messages in a thread as deleted or delete all messages in a thread.
Description Description
Note: All messages in a thread are deleted once every recipient in a thread has marked the thread as deleted.
Parameters Parameters
- $thread_id
-
(Required) The message thread ID.
- $user_id
-
(Required) The ID of the user in the thread to mark messages as deleted for. Defaults to the current logged-in user.
Return Return
(bool)
Source Source
File: bp-messages/classes/class-bp-messages-thread.php
public static function delete( $thread_id = 0, $user_id = 0 ) { global $wpdb; $thread_id = (int) $thread_id; $user_id = (int) $user_id; if ( empty( $user_id ) ) { $user_id = bp_loggedin_user_id(); } /** * Fires before a message thread is marked as deleted. * * @since 2.2.0 * @since 2.7.0 The $user_id parameter was added. * * @param int $thread_id ID of the thread being deleted. * @param int $user_id ID of the user that the thread is being deleted for. */ do_action( 'bp_messages_thread_before_mark_delete', $thread_id, $user_id ); $bp = buddypress(); // Mark messages as deleted $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET is_deleted = 1 WHERE thread_id = %d AND user_id = %d", $thread_id, $user_id ) ); // Get the message ids in order to pass to the action. $message_ids = $wpdb->get_col( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_messages} WHERE thread_id = %d", $thread_id ) ); // Check to see if any more recipients remain for this message. $recipients = $wpdb->get_results( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d AND is_deleted = 0", $thread_id ) ); // No more recipients so delete all messages associated with the thread. if ( empty( $recipients ) ) { /** * Fires before an entire message thread is deleted. * * @since 2.2.0 * * @param int $thread_id ID of the thread being deleted. * @param array $message_ids IDs of messages being deleted. */ do_action( 'bp_messages_thread_before_delete', $thread_id, $message_ids ); // Delete all the messages. $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_messages} WHERE thread_id = %d", $thread_id ) ); // Do something for each message ID. foreach ( $message_ids as $message_id ) { // Delete message meta. bp_messages_delete_meta( $message_id ); /** * Fires after a message is deleted. This hook is poorly named. * * @since 1.0.0 * * @param int $message_id ID of the message. */ do_action( 'messages_thread_deleted_thread', $message_id ); } // Delete all the recipients. $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d", $thread_id ) ); } /** * Fires after a message thread is either marked as deleted or deleted. * * @since 2.2.0 * @since 2.7.0 The $user_id parameter was added. * * @param int $thread_id ID of the thread being deleted. * @param array $message_ids IDs of messages being deleted. * @param int $user_id ID of the user the threads were deleted for. */ do_action( 'bp_messages_thread_after_delete', $thread_id, $message_ids, $user_id ); return true; }
Changelog Changelog
Version | Description |
---|---|
2.7.0 | The $user_id parameter was added. Previously the current user was always assumed. |
1.0.0 | Introduced. |