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

705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
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

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.