Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
12/23/2021 08:07:07 PM (5 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.