bbp_toggle_topic_handler( string $action = '' )
Handles the front end opening/closing, spamming/unspamming, sticking/unsticking and trashing/untrashing/deleting of topics
Description Description
Parameters Parameters
- $action
-
(Optional) The requested action to compare this function to
Default value: ''
Source Source
File: includes/topics/functions.php
function bbp_toggle_topic_handler( $action = '' ) {
// Bail if required GET actions aren't passed
if ( empty( $_GET['topic_id'] ) ) {
return;
}
// What's the topic id?
$topic_id = bbp_get_topic_id( (int) $_GET['topic_id'] );
// Get possible topic-handler toggles
$toggles = bbp_get_topic_toggles( $topic_id );
// Bail if actions aren't meant for this function
if ( ! in_array( $action, $toggles, true ) ) {
return;
}
// Make sure topic exists
$topic = bbp_get_topic( $topic_id );
if ( empty( $topic ) ) {
bbp_add_error( 'bbp_toggle_topic_missing', __( '<strong>ERROR</strong>: This topic could not be found or no longer exists.', 'bbpress' ) );
return;
}
// What is the user doing here?
if ( ! current_user_can( 'edit_topic', $topic_id ) || ( 'bbp_toggle_topic_trash' === $action && ! current_user_can( 'delete_topic', $topic_id ) ) ) {
bbp_add_error( 'bbp_toggle_topic_permission', __( '<strong>ERROR</strong>: You do not have permission to do that.', 'bbpress' ) );
return;
}
// Sub-action?
$sub_action = ! empty( $_GET['sub_action'] )
? sanitize_key( $_GET['sub_action'] )
: false;
// Preliminary array
$post_data = array( 'ID' => $topic_id );
// Do the topic toggling
$retval = bbp_toggle_topic( array(
'id' => $topic_id,
'action' => $action,
'sub_action' => $sub_action,
'data' => $post_data
) );
// Do additional topic toggle actions
do_action( 'bbp_toggle_topic_handler', $retval['status'], $post_data, $action );
// No errors
if ( ( false !== $retval['status'] ) && ! is_wp_error( $retval['status'] ) ) {
bbp_redirect( $retval['redirect_to'] );
// Handle errors
} else {
bbp_add_error( 'bbp_toggle_topic', $retval['message'] );
}
}
Changelog Changelog
| Version | Description |
|---|---|
| 2.0.0 | Introduced. |