Changeset 6397 for trunk/src/includes/admin/forums.php
- Timestamp:
- 04/12/2017 09:30:50 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/includes/admin/forums.php
r6272 r6397 396 396 public function toggle_forum() { 397 397 398 // Only proceed if GET is a forum toggle action 399 if ( bbp_is_get_request() && ! empty( $_GET['forum_id'] ) && ! empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'bbp_toggle_forum_close' ) ) ) { 400 $action = $_GET['action']; // What action is taking place? 401 $forum_id = (int) $_GET['forum_id']; // What's the forum id? 402 $success = false; // Flag 403 $post_data = array( 'ID' => $forum_id ); // Prelim array 404 $forum = bbp_get_forum( $forum_id ); 405 406 // Bail if forum is missing 407 if ( empty( $forum ) ) { 408 wp_die( __( 'The forum was not found.', 'bbpress' ) ); 409 } 410 411 // What is the user doing here? 412 if ( ! current_user_can( 'keep_gate', $forum->ID ) ) { 413 wp_die( __( 'You do not have permission to do that.', 'bbpress' ) ); 414 } 415 416 switch ( $action ) { 417 case 'bbp_toggle_forum_close' : 418 check_admin_referer( 'close-forum_' . $forum_id ); 419 420 $is_open = bbp_is_forum_open( $forum_id ); 421 $message = ( true === $is_open ) 422 ? 'closed' 423 : 'opened'; 424 $success = ( true === $is_open ) 425 ? bbp_close_forum( $forum_id ) 426 : bbp_open_forum( $forum_id ); 427 428 break; 429 } 430 431 $message = array( 'bbp_forum_toggle_notice' => $message, 'forum_id' => $forum->ID ); 432 433 if ( false === $success || is_wp_error( $success ) ) { 434 $message['failed'] = '1'; 435 } 436 437 // Do additional forum toggle actions (admin side) 438 do_action( 'bbp_toggle_forum_admin', $success, $post_data, $action, $message ); 439 440 // Redirect back to the forum 441 $redirect = add_query_arg( $message, remove_query_arg( array( 'action', 'forum_id' ) ) ); 442 bbp_redirect( $redirect ); 443 } 398 // Bail if not a forum toggle action 399 if ( ! bbp_is_get_request() || empty( $_GET['action'] ) || empty( $_GET['forum_id'] ) ) { 400 return; 401 } 402 403 // Bail if not an allowed action 404 $action = sanitize_key( $_GET['action'] ); 405 if ( empty( $action ) || ! in_array( $action, $this->get_allowed_action_toggles(), true ) ) { 406 return; 407 } 408 409 // Bail if forum is missing 410 $forum_id = bbp_get_forum_id( $_GET['forum_id'] ); 411 if ( ! bbp_get_forum( $forum_id ) ) { 412 wp_die( __( 'The forum was not found.', 'bbpress' ) ); 413 } 414 415 // What is the user doing here? 416 if ( ! current_user_can( 'keep_gate', $forum_id ) ) { 417 wp_die( __( 'You do not have permission to do that.', 'bbpress' ) ); 418 } 419 420 // Defaults 421 $post_data = array( 'ID' => $forum_id ); 422 $message = ''; 423 $success = false; 424 425 switch ( $action ) { 426 case 'bbp_toggle_forum_close' : 427 check_admin_referer( 'close-forum_' . $forum_id ); 428 429 $is_open = bbp_is_forum_open( $forum_id ); 430 $message = ( true === $is_open ) 431 ? 'closed' 432 : 'opened'; 433 $success = ( true === $is_open ) 434 ? bbp_close_forum( $forum_id ) 435 : bbp_open_forum( $forum_id ); 436 437 break; 438 } 439 440 // Setup the message 441 $retval = array( 442 'bbp_forum_toggle_notice' => $message, 443 'forum_id' => $forum_id 444 ); 445 446 // Prepare for failure 447 if ( false === $success || is_wp_error( $success ) ) { 448 $retval['failed'] = '1'; 449 } 450 451 // Filter all message args 452 $retval = apply_filters( 'bbp_toggle_forum_action_admin', $retval, $forum_id, $action ); 453 454 // Do additional forum toggle actions (admin side) 455 do_action( 'bbp_toggle_forum_admin', $success, $post_data, $action, $retval ); 456 457 // Redirect back to the forum 458 $redirect = add_query_arg( $retval, remove_query_arg( array( 'action', 'forum_id' ) ) ); 459 bbp_redirect( $redirect ); 444 460 } 445 461 … … 460 476 public function toggle_forum_notice() { 461 477 462 // Only proceed if GET is a forum toggle action 463 if ( bbp_is_get_request() && ! empty( $_GET['bbp_forum_toggle_notice'] ) && in_array( $_GET['bbp_forum_toggle_notice'], array( 'opened', 'closed' ) ) && ! empty( $_GET['forum_id'] ) ) { 464 $notice = $_GET['bbp_forum_toggle_notice']; // Which notice? 465 $forum_id = (int) $_GET['forum_id']; // What's the forum id? 466 $is_failure = ! empty( $_GET['failed'] ) ? true : false; // Was that a failure? 467 468 // Bail if no forum_id or notice 469 if ( empty( $notice ) || empty( $forum_id ) ) { 470 return; 471 } 472 473 // Bail if forum is missing 474 $forum = bbp_get_forum( $forum_id ); 475 if ( empty( $forum ) ) { 476 return; 477 } 478 479 $forum_title = bbp_get_forum_title( $forum->ID ); 480 481 switch ( $notice ) { 482 case 'opened' : 483 $message = ( $is_failure === true ) 484 ? sprintf( __( 'There was a problem opening the forum "%1$s".', 'bbpress' ), $forum_title ) 485 : sprintf( __( 'Forum "%1$s" successfully opened.', 'bbpress' ), $forum_title ); 486 break; 487 488 case 'closed' : 489 $message = ( $is_failure === true ) 490 ? sprintf( __( 'There was a problem closing the forum "%1$s".', 'bbpress' ), $forum_title ) 491 : sprintf( __( 'Forum "%1$s" successfully closed.', 'bbpress' ), $forum_title ); 492 break; 493 } 494 495 // Do additional forum toggle notice filters (admin side) 496 $message = apply_filters( 'bbp_toggle_forum_notice_admin', $message, $forum->ID, $notice, $is_failure ); 497 498 ?> 499 500 <div id="message" class="<?php echo $is_failure === true ? 'error' : 'updated'; ?> fade"> 501 <p style="line-height: 150%"><?php echo esc_html( $message ); ?></p> 502 </div> 503 504 <?php 505 } 478 // Bail if missing topic toggle action 479 if ( ! bbp_is_get_request() || empty( $_GET['forum_id'] ) || empty( $_GET['bbp_forum_toggle_notice'] ) ) { 480 return; 481 } 482 483 // Bail if not an allowed notice 484 $notice = sanitize_key( $_GET['bbp_forum_toggle_notice'] ); 485 if ( empty( $notice ) || ! in_array( $notice, $this->get_allowed_notice_toggles(), true ) ) { 486 return; 487 } 488 489 // Bail if no forum_id or notice 490 $forum_id = bbp_get_forum_id( $_GET['forum_id'] ); 491 if ( empty( $forum_id ) ) { 492 return; 493 } 494 495 // Bail if forum is missing 496 if ( ! bbp_get_forum( $forum_id ) ) { 497 return; 498 } 499 500 // Use the title in the responses 501 $forum_title = bbp_get_forum_title( $forum_id ); 502 $is_failure = ! empty( $_GET['failed'] ); 503 $message = ''; 504 505 switch ( $notice ) { 506 case 'opened' : 507 $message = ( $is_failure === true ) 508 ? sprintf( __( 'There was a problem opening the forum "%1$s".', 'bbpress' ), $forum_title ) 509 : sprintf( __( 'Forum "%1$s" successfully opened.', 'bbpress' ), $forum_title ); 510 break; 511 512 case 'closed' : 513 $message = ( $is_failure === true ) 514 ? sprintf( __( 'There was a problem closing the forum "%1$s".', 'bbpress' ), $forum_title ) 515 : sprintf( __( 'Forum "%1$s" successfully closed.', 'bbpress' ), $forum_title ); 516 break; 517 } 518 519 // Do additional forum toggle notice filters (admin side) 520 $message = apply_filters( 'bbp_toggle_forum_notice_admin', $message, $forum_id, $notice, $is_failure ); 521 $class = ( $is_failure === true ) 522 ? 'error' 523 : 'updated'; 524 525 ?> 526 527 <div id="message" class="<?php echo esc_html( $class ); ?> fade"> 528 <p style="line-height: 150%"><?php echo esc_html( $message ); ?></p> 529 </div> 530 531 <?php 532 } 533 534 /** 535 * Returns an array of notice toggles 536 * 537 * @since 2.6.0 bbPress (r6396) 538 * 539 * @return array 540 */ 541 private function get_allowed_notice_toggles() { 542 return apply_filters( 'bbp_admin_forums_allowed_notice_toggles', array( 543 'opened', 544 'closed' 545 ) ); 546 } 547 548 /** 549 * Returns an array of notice toggles 550 * 551 * @since 2.6.0 bbPress (r6396) 552 * 553 * @return array 554 */ 555 private function get_allowed_action_toggles() { 556 return apply_filters( 'bbp_admin_forums_allowed_action_toggles', array( 557 'bbp_toggle_forum_close' 558 ) ); 506 559 } 507 560 … … 625 678 626 679 // Show the 'close' and 'open' link on published, private, hidden and closed posts only 627 if ( in_array( $forum->post_status, array( bbp_get_public_status_id(), bbp_get_private_status_id(), bbp_get_hidden_status_id(), bbp_get_closed_status_id() ) ) ) {680 if ( in_array( $forum->post_status, array( bbp_get_public_status_id(), bbp_get_private_status_id(), bbp_get_hidden_status_id(), bbp_get_closed_status_id() ), true ) ) { 628 681 $close_uri = wp_nonce_url( add_query_arg( array( 'forum_id' => $forum->ID, 'action' => 'bbp_toggle_forum_close' ), remove_query_arg( array( 'bbp_forum_toggle_notice', 'forum_id', 'failed', 'super' ) ) ), 'close-forum_' . $forum->ID ); 629 682 if ( bbp_is_forum_open( $forum->ID ) ) {
Note: See TracChangeset
for help on using the changeset viewer.