bbp_toggle_reply_handler( string $action = '' )
Handles the front end spamming/unspamming and trashing/untrashing/deleting of replies
Description
Parameters
- $action
-
(Optional) The requested action to compare this function to
Default value: ''
Source
File: bp-forums/replies/functions.php
function bbp_toggle_reply_handler( $action = '' ) { // Bail if required GET actions aren't passed if ( empty( $_GET['reply_id'] ) ) return; // Setup possible get actions $possible_actions = array( 'bbp_toggle_reply_spam', 'bbp_toggle_reply_trash' ); // Bail if actions aren't meant for this function if ( !in_array( $action, $possible_actions ) ) return; $failure = ''; // Empty failure string $view_all = false; // Assume not viewing all $reply_id = (int) $_GET['reply_id']; // What's the reply id? $success = false; // Flag $post_data = array( 'ID' => $reply_id ); // Prelim array // Make sure reply exists $reply = bbp_get_reply( $reply_id ); if ( empty( $reply ) ) return; // What is the user doing here? if ( !current_user_can( 'edit_reply', $reply->ID ) || ( 'bbp_toggle_reply_trash' === $action && !current_user_can( 'delete_reply', $reply->ID ) ) ) { bbp_add_error( 'bbp_toggle_reply_permission', __( '<strong>ERROR:</strong> You do not have the permission to do that!', 'buddyboss' ) ); return; } // What action are we trying to perform? switch ( $action ) { // Toggle spam case 'bbp_toggle_reply_spam' : check_ajax_referer( 'spam-reply_' . $reply_id ); $is_spam = bbp_is_reply_spam( $reply_id ); $success = $is_spam ? bbp_unspam_reply( $reply_id ) : bbp_spam_reply( $reply_id ); $failure = $is_spam ? __( '<strong>ERROR</strong>: There was a problem unmarking the reply as spam!', 'buddyboss' ) : __( '<strong>ERROR</strong>: There was a problem marking the reply as spam!', 'buddyboss' ); $view_all = !$is_spam; break; // Toggle trash case 'bbp_toggle_reply_trash' : $sub_action = in_array( $_GET['sub_action'], array( 'trash', 'untrash', 'delete' ) ) ? $_GET['sub_action'] : false; if ( empty( $sub_action ) ) break; switch ( $sub_action ) { case 'trash': check_ajax_referer( 'trash-' . bbp_get_reply_post_type() . '_' . $reply_id ); $view_all = true; $success = wp_trash_post( $reply_id ); $failure = __( '<strong>ERROR</strong>: There was a problem trashing the reply!', 'buddyboss' ); break; case 'untrash': check_ajax_referer( 'untrash-' . bbp_get_reply_post_type() . '_' . $reply_id ); $success = wp_untrash_post( $reply_id ); $failure = __( '<strong>ERROR</strong>: There was a problem untrashing the reply!', 'buddyboss' ); break; case 'delete': check_ajax_referer( 'delete-' . bbp_get_reply_post_type() . '_' . $reply_id ); $success = wp_delete_post( $reply_id ); $failure = __( '<strong>ERROR</strong>: There was a problem deleting the reply!', 'buddyboss' ); break; } break; } // Do additional reply toggle actions do_action( 'bbp_toggle_reply_handler', $success, $post_data, $action ); // No errors if ( ( false !== $success ) && !is_wp_error( $success ) ) { /** Redirect **********************************************************/ // Redirect to $redirect_to = bbp_get_redirect_to(); // Get the reply URL $reply_url = bbp_get_reply_url( $reply_id, $redirect_to ); // Add view all if needed if ( !empty( $view_all ) ) $reply_url = bbp_add_view_all( $reply_url, true ); // Redirect back to reply wp_safe_redirect( $reply_url ); // For good measure exit(); // Handle errors } else { bbp_add_error( 'bbp_toggle_reply', $failure ); } }
Changelog
Version | Description |
---|---|
bbPress (r2740) | 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.