BBP_Topics_Admin::toggle_topic()
Toggle topic
Description
Handles the admin-side opening/closing, sticking/unsticking and spamming/unspamming of topics
Source
File: bp-forums/admin/topics.php
501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 | public function toggle_topic() { if ( $this ->bail() ) return ; // Only proceed if GET is a topic toggle action if ( bbp_is_get_request() && ! empty ( $_GET [ 'action' ] ) && in_array( $_GET [ 'action' ], array ( 'bbp_toggle_topic_close' , 'bbp_toggle_topic_stick' , 'bbp_toggle_topic_spam' ) ) && ! empty ( $_GET [ 'topic_id' ] ) ) { $action = $_GET [ 'action' ]; // What action is taking place? $topic_id = (int) $_GET [ 'topic_id' ]; // What's the topic id? $success = false; // Flag $post_data = array ( 'ID' => $topic_id ); // Prelim array $topic = bbp_get_topic( $topic_id ); // Bail if topic is missing if ( empty ( $topic ) ) wp_die( __( 'The discussion was not found!' , 'buddyboss' ) ); if ( !current_user_can( 'moderate' , $topic ->ID ) ) // What is the user doing here? wp_die( __( 'You do not have the permission to do that!' , 'buddyboss' ) ); switch ( $action ) { case 'bbp_toggle_topic_close' : check_admin_referer( 'close-topic_' . $topic_id ); $is_open = bbp_is_topic_open( $topic_id ); $message = true === $is_open ? 'closed' : 'opened' ; $success = true === $is_open ? bbp_close_topic( $topic_id ) : bbp_open_topic( $topic_id ); break ; case 'bbp_toggle_topic_stick' : check_admin_referer( 'stick-topic_' . $topic_id ); $is_sticky = bbp_is_topic_sticky( $topic_id ); $is_super = false === $is_sticky && ! empty ( $_GET [ 'super' ] ) && ( "1" === $_GET [ 'super' ] ) ? true : false; $message = true === $is_sticky ? 'unsticked' : 'sticked' ; $message = true === $is_super ? 'super_sticked' : $message ; $success = true === $is_sticky ? bbp_unstick_topic( $topic_id ) : bbp_stick_topic( $topic_id , $is_super ); break ; case 'bbp_toggle_topic_spam' : check_admin_referer( 'spam-topic_' . $topic_id ); $is_spam = bbp_is_topic_spam( $topic_id ); $message = true === $is_spam ? 'unspammed' : 'spammed' ; $success = true === $is_spam ? bbp_unspam_topic( $topic_id ) : bbp_spam_topic( $topic_id ); break ; } $message = array ( 'bbp_topic_toggle_notice' => $message , 'topic_id' => $topic ->ID ); if ( false === $success || is_wp_error( $success ) ) $message [ 'failed' ] = '1' ; // Do additional topic toggle actions (admin side) do_action( 'bbp_toggle_topic_admin' , $success , $post_data , $action , $message ); // Redirect back to the topic $redirect = add_query_arg( $message , remove_query_arg( array ( 'action' , 'topic_id' ) ) ); wp_safe_redirect( $redirect ); // For good measure exit (); } } |
Changelog
Version | Description |
---|---|
bbPress (r2727) | 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.