bp_nouveau_ajax_delete_thread()
AJAX delete entire thread.
Description
Source
File: bp-templates/bp-nouveau/includes/messages/ajax.php
function bp_nouveau_ajax_delete_thread() {
global $wpdb, $bp;
$response = array(
'feedback' => __( 'There was a problem deleting your messages. Please try again.', 'buddyboss' ),
'type' => 'error',
);
if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) {
wp_send_json_error( $response );
}
if ( empty( $_POST['id'] ) ) {
wp_send_json_error( $response );
}
$thread_ids = wp_parse_id_list( $_POST['id'] );
foreach ( $thread_ids as $thread_id ) {
if ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) {
wp_send_json_error( $response );
}
// Removed the thread id from the group meta.
if ( bp_is_active( 'groups' ) && function_exists( 'bp_disable_group_messages' ) && true === bp_disable_group_messages() ) {
// Get the group id from the first message
$first_message = BP_Messages_Thread::get_first_message( (int) $thread_id );
$message_group_id = (int) bp_messages_get_meta( $first_message->id, 'group_id', true ); // group id
if ( $message_group_id > 0 ) {
$group_thread = (int) groups_get_groupmeta( $message_group_id, 'group_message_thread' );
if ( $group_thread > 0 && $group_thread === (int) $thread_id ) {
groups_update_groupmeta( $message_group_id, 'group_message_thread', '' );
}
}
}
// 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 ) ); // WPCS: db call ok. // WPCS: cache ok.
if ( bp_is_active( 'notifications' ) ) {
// Delete Message Notifications.
bp_messages_message_delete_notifications( $thread_id, $message_ids );
}
// Delete thread messages.
$query = $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_messages} WHERE thread_id = %d", $thread_id );
$wpdb->query( $query ); // db call ok; no-cache ok;
// Delete messages meta.
$query = $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_meta} WHERE message_id IN(%s)", implode( ',', $message_ids ) );
$wpdb->query( $query ); // db call ok; no-cache ok;
// Delete thread.
$query = $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d", $thread_id );
$wpdb->query( $query ); // db call ok; no-cache ok;
}
wp_send_json_success(
array(
'type' => 'success',
'messages' => 'Thread successfully deleted.',
)
);
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 3.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.