Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
12/23/2021 08:07:07 PM (3 years ago)
Author:
imath
Message:

BP Messages: introduce a functionality to exit a messages thread

Exiting a messages thread is removing the user from the list of the recipients of the thread. The thread can carry on between the other recipients.

Props Oelita, vapvarun

Fixes #7540

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-templates/bp-nouveau/includes/messages/ajax.php

    r12989 r13196  
    44 *
    55 * @since 3.0.0
    6  * @version 8.0.0
     6 * @version 10.0.0
    77 */
    88
     
    1212add_action( 'admin_init', function() {
    1313    $ajax_actions = array(
    14         array( 'messages_send_message'             => array( 'function' => 'bp_nouveau_ajax_messages_send_message', 'nopriv' => false ) ),
    15         array( 'messages_send_reply'               => array( 'function' => 'bp_nouveau_ajax_messages_send_reply', 'nopriv' => false ) ),
    16         array( 'messages_get_user_message_threads' => array( 'function' => 'bp_nouveau_ajax_get_user_message_threads', 'nopriv' => false ) ),
    17         array( 'messages_thread_read'              => array( 'function' => 'bp_nouveau_ajax_messages_thread_read', 'nopriv' => false ) ),
    18         array( 'messages_get_thread_messages'      => array( 'function' => 'bp_nouveau_ajax_get_thread_messages', 'nopriv' => false ) ),
    19         array( 'messages_delete'                   => array( 'function' => 'bp_nouveau_ajax_delete_thread_messages', 'nopriv' => false ) ),
    20         array( 'messages_unstar'                   => array( 'function' => 'bp_nouveau_ajax_star_thread_messages', 'nopriv' => false ) ),
    21         array( 'messages_star'                     => array( 'function' => 'bp_nouveau_ajax_star_thread_messages', 'nopriv' => false ) ),
    22         array( 'messages_unread'                   => array( 'function' => 'bp_nouveau_ajax_readunread_thread_messages', 'nopriv' => false ) ),
    23         array( 'messages_read'                     => array( 'function' => 'bp_nouveau_ajax_readunread_thread_messages', 'nopriv' => false ) ),
    24         array( 'messages_dismiss_sitewide_notice'  => array( 'function' => 'bp_nouveau_ajax_dismiss_sitewide_notice', 'nopriv' => false ) ),
     14        array(
     15            'messages_send_message' => array(
     16                'function' => 'bp_nouveau_ajax_messages_send_message',
     17                'nopriv'   => false,
     18            ),
     19        ),
     20        array(
     21            'messages_send_reply' => array(
     22                'function' => 'bp_nouveau_ajax_messages_send_reply',
     23                'nopriv'  => false,
     24            ),
     25        ),
     26        array(
     27            'messages_get_user_message_threads' => array(
     28                'function' => 'bp_nouveau_ajax_get_user_message_threads',
     29                'nopriv'   => false,
     30            ),
     31        ),
     32        array(
     33            'messages_thread_read' => array(
     34                'function' => 'bp_nouveau_ajax_messages_thread_read',
     35                'nopriv'   => false,
     36            ),
     37        ),
     38        array(
     39            'messages_get_thread_messages' => array(
     40                'function' => 'bp_nouveau_ajax_get_thread_messages',
     41                'nopriv'   => false,
     42            ),
     43        ),
     44        array(
     45            'messages_delete' => array(
     46                'function' => 'bp_nouveau_ajax_delete_thread_messages',
     47                'nopriv'   => false,
     48            ),
     49        ),
     50        array(
     51            'messages_exit' => array(
     52                'function' => 'bp_nouveau_ajax_exit_thread_messages',
     53                'nopriv'   => false,
     54            ),
     55        ),
     56        array(
     57            'messages_unstar' => array(
     58                'function' => 'bp_nouveau_ajax_star_thread_messages',
     59                'nopriv'   => false,
     60            ),
     61        ),
     62        array(
     63            'messages_star' => array(
     64                'function' => 'bp_nouveau_ajax_star_thread_messages',
     65                'nopriv'   => false,
     66            ),
     67        ),
     68        array(
     69            'messages_unread' => array(
     70                'function' => 'bp_nouveau_ajax_readunread_thread_messages',
     71                'nopriv'   => false,
     72            ),
     73        ),
     74        array(
     75            'messages_read' => array(
     76                'function' => 'bp_nouveau_ajax_readunread_thread_messages',
     77                'nopriv'   => false,
     78            ),
     79        ),
     80        array(
     81            'messages_dismiss_sitewide_notice'  => array(
     82                'function' => 'bp_nouveau_ajax_dismiss_sitewide_notice',
     83                'nopriv' => false,
     84            ),
     85        ),
    2586    );
    2687
     
    781842    }
    782843}
     844
     845/**
     846 * Ajax Handler of the exit action.
     847 *
     848 * @since 10.0.0
     849 */
     850function bp_nouveau_ajax_exit_thread_messages() {
     851    $response = array(
     852        'feedback' => __( 'There was a problem exiting the conversation. Please try again.', 'buddypress' ),
     853        'type'     => 'error',
     854    );
     855
     856    if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) {
     857        wp_send_json_error( $response );
     858    }
     859
     860    if ( empty( $_POST['id'] ) ) {
     861        wp_send_json_error( $response );
     862    }
     863
     864    $thread_ids = wp_parse_id_list( $_POST['id'] );
     865
     866    foreach ( $thread_ids as $thread_id ) {
     867        if ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) {
     868            wp_send_json_error( $response );
     869        }
     870
     871        bp_messages_exit_thread( $thread_id );
     872    }
     873
     874    wp_send_json_success( array(
     875        'feedback' => __( 'You have left the message thread.', 'buddypress' ),
     876        'type'     => 'success',
     877    ) );
     878}
Note: See TracChangeset for help on using the changeset viewer.