BBP_Default::ajax_favorite()
AJAX handler to add or remove a topic from a user’s favorites
Description
Source
File: bp-forums/templates/default/bbpress-functions.php
public function ajax_favorite() { // Bail if favorites are not active if ( ! bbp_is_favorites_active() ) { bbp_ajax_response( false, __( 'Saving discussions is no longer active.', 'buddyboss' ), 300 ); } // Bail if user is not logged in if ( ! is_user_logged_in() ) { bbp_ajax_response( false, __( 'Please login to make this discussion a favorite.', 'buddyboss' ), 301 ); } // Get user and topic data $user_id = bbp_get_current_user_id(); $id = !empty( $_POST['id'] ) ? intval( $_POST['id'] ) : 0; // Bail if user cannot add favorites for this user if ( ! current_user_can( 'edit_user', $user_id ) ) { bbp_ajax_response( false, __( 'You do not have permission to do this.', 'buddyboss' ), 302 ); } // Get the topic $topic = bbp_get_topic( $id ); // Bail if topic cannot be found if ( empty( $topic ) ) { bbp_ajax_response( false, __( 'The discussion could not be found.', 'buddyboss' ), 303 ); } // Bail if user did not take this action if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'toggle-favorite_' . $topic->ID ) ) { bbp_ajax_response( false, __( 'Are you sure you meant to do that?', 'buddyboss' ), 304 ); } // Take action $status = bbp_is_user_favorite( $user_id, $topic->ID ) ? bbp_remove_user_favorite( $user_id, $topic->ID ) : bbp_add_user_favorite( $user_id, $topic->ID ); // Bail if action failed if ( empty( $status ) ) { bbp_ajax_response( false, __( 'The request was unsuccessful. Please try again.', 'buddyboss' ), 305 ); } // Put subscription attributes in convenient array $attrs = array( 'topic_id' => $topic->ID, 'user_id' => $user_id ); // Action succeeded bbp_ajax_response( true, bbp_get_user_favorites_link( $attrs, $user_id, false ), 200 ); }
Changelog
Version | Description |
---|---|
bbPress (r3732) | 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.