bbp_subscriptions_handler( string $action = '' )
Handles the front end toggling of user subscriptions
Description Description
Parameters Parameters
- $action
-
(Optional) The requested action to compare this function to
Default value: ''
Source Source
File: includes/users/engagements.php
function bbp_subscriptions_handler( $action = '' ) { // Default $success = false; // Bail if subscriptions not active if ( ! bbp_is_subscriptions_active() ) { return $success; } // Bail if no object ID is passed if ( empty( $_GET['object_id'] ) ) { return $success; } // Setup possible get actions $possible_actions = array( 'bbp_subscribe', 'bbp_unsubscribe' ); // Bail if actions aren't meant for this function if ( ! in_array( $action, $possible_actions, true ) ) { return $success; } // Get required data $user_id = bbp_get_current_user_id(); $object_id = absint( $_GET['object_id'] ); $object_type = ! empty( $_GET['object_type'] ) ? sanitize_key( $_GET['object_type'] ) : 'post'; // Check for empty topic if ( empty( $object_id ) ) { bbp_add_error( 'bbp_subscription_object_id', __( '<strong>ERROR</strong>: Not found. What are you subscribing/unsubscribing to?', 'bbpress' ) ); // Check nonce } elseif ( ! bbp_verify_nonce_request( 'toggle-subscription_' . $object_id ) ) { bbp_add_error( 'bbp_subscription_object_id', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); // Check current user's ability to edit the user } elseif ( ! current_user_can( 'edit_user', $user_id ) ) { bbp_add_error( 'bbp_subscription_permission', __( '<strong>ERROR</strong>: You do not have permission to edit subscriptions of that user.', 'bbpress' ) ); } // Bail if we have errors if ( bbp_has_errors() ) { return $success; } /** No errors *************************************************************/ if ( 'bbp_unsubscribe' === $action ) { $success = bbp_remove_user_subscription( $user_id, $object_id, $object_type ); } elseif ( 'bbp_subscribe' === $action ) { $success = bbp_add_user_subscription( $user_id, $object_id, $object_type ); } // Do additional subscriptions actions do_action( 'bbp_subscriptions_handler', $success, $user_id, $object_id, $action, $object_type ); // Success! if ( true === $success ) { // Redirect back from whence we came if ( ! empty( $_REQUEST['redirect_to'] ) ) { $redirect = $_REQUEST['redirect_to']; // Validated later } elseif ( bbp_is_subscriptions() ) { $redirect = bbp_get_subscriptions_permalink( $user_id ); } elseif ( bbp_is_single_user() ) { $redirect = bbp_get_user_profile_url(); } elseif ( is_singular( bbp_get_topic_post_type() ) ) { $redirect = bbp_get_topic_permalink( $object_id ); } elseif ( is_singular( bbp_get_forum_post_type() ) ) { $redirect = bbp_get_forum_permalink( $object_id ); } elseif ( is_single() || is_page() ) { $redirect = get_permalink(); } else { $redirect = get_permalink( $object_id ); } bbp_redirect( $redirect ); // Fail! Handle errors } elseif ( 'bbp_unsubscribe' === $action ) { bbp_add_error( 'bbp_unsubscribe', __( '<strong>ERROR</strong>: There was a problem unsubscribing.', 'bbpress' ) ); } elseif ( 'bbp_subscribe' === $action ) { bbp_add_error( 'bbp_subscribe', __( '<strong>ERROR</strong>: There was a problem subscribing.', 'bbpress' ) ); } return (bool) $success; }
Changelog Changelog
Version | Description |
---|---|
2.6.l | bbPress (r6543) |
2.0.0 | Introduced. |