bbp_favorites_handler( string $action = '' )
Handles the front end adding and removing of favorite topics
Description
Parameters
- $action
-
(Optional) The requested action to compare this function to
Default value: ''
Source
File: bp-forums/users/functions.php
411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 | function bbp_favorites_handler( $action = '' ) { if ( !bbp_is_favorites_active() ) return false; // Bail if no topic ID is passed if ( empty ( $_GET [ 'topic_id' ] ) ) return ; // Setup possible get actions $possible_actions = array ( 'bbp_favorite_add' , 'bbp_favorite_remove' , ); // Bail if actions aren't meant for this function if ( !in_array( $action , $possible_actions ) ) return ; // What action is taking place? $topic_id = intval ( $_GET [ 'topic_id' ] ); $user_id = bbp_get_user_id( 0, true, true ); // Check for empty topic if ( empty ( $topic_id ) ) { bbp_add_error( 'bbp_favorite_topic_id' , __( '<strong>ERROR</strong>: No topic was found! Which topic are you marking/unmarking as favorite?' , 'buddyboss' ) ); // Check nonce } elseif ( ! bbp_verify_nonce_request( 'toggle-favorite_' . $topic_id ) ) { bbp_add_error( 'bbp_favorite_nonce' , __( '<strong>ERROR</strong>: Are you sure you wanted to do that?' , 'buddyboss' ) ); // Check current user's ability to edit the user } elseif ( !current_user_can( 'edit_user' , $user_id ) ) { bbp_add_error( 'bbp_favorite_permissions' , __( '<strong>ERROR</strong>: You don\'t have the permission to edit favorites of that user!' , 'buddyboss' ) ); } // Bail if errors if ( bbp_has_errors() ) return ; /** No errors *************************************************************/ $is_favorite = bbp_is_user_favorite( $user_id , $topic_id ); $success = false; if ( true === $is_favorite && 'bbp_favorite_remove' === $action ) $success = bbp_remove_user_favorite( $user_id , $topic_id ); elseif ( false === $is_favorite && 'bbp_favorite_add' === $action ) $success = bbp_add_user_favorite( $user_id , $topic_id ); // Do additional favorites actions do_action( 'bbp_favorites_handler' , $success , $user_id , $topic_id , $action ); // Success! if ( true === $success ) { // Redirect back from whence we came if ( bbp_is_favorites() ) { $redirect = bbp_get_favorites_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( $topic_id ); } elseif ( is_single() || is_page() ) { $redirect = get_permalink(); } else { $redirect = get_permalink( $topic_id ); } wp_safe_redirect( $redirect ); // For good measure exit (); // Fail! Handle errors } elseif ( true === $is_favorite && 'bbp_favorite_remove' === $action ) { bbp_add_error( 'bbp_favorite_remove' , __( '<strong>ERROR</strong>: There was a problem removing that discussion from favorites!' , 'buddyboss' ) ); } elseif ( false === $is_favorite && 'bbp_favorite_add' === $action ) { bbp_add_error( 'bbp_favorite_add' , __( '<strong>ERROR</strong>: There was a problem favoriting that discussion!' , 'buddyboss' ) ); } } |
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.