Changeset 5290
- Timestamp:
- 04/09/2017 05:20:54 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-moderators.php
r5123 r5290 30 30 add_filter( 'bbp_topic_admin_links', array( $this, 'admin_links' ), 10, 2 ); 31 31 add_filter( 'bbp_reply_admin_links', array( $this, 'admin_links' ), 10, 2 ); 32 33 // Add valid topic and reply actions. 34 add_filter( 'bbp_get_toggle_topic_actions', array( $this, 'get_topic_actions' ) ); 35 add_filter( 'bbp_get_toggle_reply_actions', array( $this, 'get_reply_actions' ) ); 36 37 // Handle topic and reply actions. 38 add_filter( 'bbp_toggle_topic', array( $this, 'handle_topic_actions' ), 10, 3 ); 39 add_filter( 'bbp_toggle_reply', array( $this, 'handle_reply_actions' ), 10, 3 ); 40 41 // Convert toggle links to explicit actions. 42 add_filter( 'bbp_get_topic_spam_link', array( $this, 'convert_toggles_to_actions' ), 10, 3 ); 43 add_filter( 'bbp_get_topic_approve_link', array( $this, 'convert_toggles_to_actions' ), 10, 3 ); 44 add_filter( 'bbp_get_reply_spam_link', array( $this, 'convert_toggles_to_actions' ), 10, 3 ); 45 add_filter( 'bbp_get_reply_approve_link', array( $this, 'convert_toggles_to_actions' ), 10, 3 ); 32 46 } 33 47 … … 347 361 ); 348 362 } 363 364 /** 365 * Add Spam, Unspam, Unapprove, Approve to the list of valid topic actions. 366 * 367 * @param array $actions List of topic actions. 368 * @return array Filtered list of actions. 369 */ 370 public function get_topic_actions( $actions ) { 371 $actions = array_merge( $actions, array( 372 'wporg_bbp_spam_topic', 373 'wporg_bbp_unspam_topic', 374 'wporg_bbp_unapprove_topic', 375 'wporg_bbp_approve_topic', 376 ) ); 377 378 return $actions; 379 } 380 381 /** 382 * Add Spam, Unspam, Unapprove, Approve to the list of valid reply actions. 383 * 384 * @param array $actions List of reply actions. 385 * @return array Filtered list of actions. 386 */ 387 public function get_reply_actions( $actions ) { 388 $actions = array_merge( $actions, array( 389 'wporg_bbp_spam_reply', 390 'wporg_bbp_unspam_reply', 391 'wporg_bbp_unapprove_reply', 392 'wporg_bbp_approve_reply', 393 ) ); 394 395 return $actions; 396 } 397 398 /** 399 * Handle Spam, Unspam, Unapprove, Approve topic actions. 400 * 401 * By default, bbPress treats them as toggles, which may cause conflicts if 402 * the same action is performed twice by different moderators. 403 * 404 * @param array $retval { 405 * @type int $status Result of the action. 406 * @type string $message Message displayed in case of an error. 407 * @type string $redirect_to URL to redirect to. 408 * @type bool $view_all Whether to append 'view=all' to the URL. 409 * } 410 * @param array $r Parsed arguments. 411 * @param array $args Raw arguments. 412 * @return array 413 */ 414 public function handle_topic_actions( $retval, $r, $args ) { 415 $nonce_suffix = bbp_get_topic_post_type() . '_' . (int) $r['id']; 416 417 switch ( $r['action'] ) { 418 case 'wporg_bbp_spam_topic': 419 check_ajax_referer( "spam-{$nonce_suffix}" ); 420 421 if ( ! bbp_is_topic_spam( $r['id'] ) ) { 422 $retval['status'] = bbp_spam_topic( $r['id'] ); 423 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem marking the topic as spam.', 'wporg-forums' ); 424 } 425 $retval['view_all'] = true; 426 427 break; 428 429 case 'wporg_bbp_unspam_topic': 430 check_ajax_referer( "spam-{$nonce_suffix}" ); 431 432 if ( bbp_is_topic_spam( $r['id'] ) ) { 433 $retval['status'] = bbp_unspam_topic( $r['id'] ); 434 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem unmarking the topic as spam.', 'wporg-forums' ); 435 } 436 $retval['view_all'] = false; 437 438 break; 439 440 case 'wporg_bbp_unapprove_topic': 441 check_ajax_referer( "approve-{$nonce_suffix}" ); 442 443 if ( ! bbp_is_topic_pending( $r['id'] ) ) { 444 $retval['status'] = bbp_unapprove_topic( $r['id'] ); 445 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem unapproving the topic.', 'wporg-forums' ); 446 } 447 $retval['view_all'] = true; 448 449 break; 450 451 case 'wporg_bbp_approve_topic': 452 check_ajax_referer( "approve-{$nonce_suffix}" ); 453 454 if ( bbp_is_topic_pending( $r['id'] ) ) { 455 $retval['status'] = bbp_approve_topic( $r['id'] ); 456 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem approving the topic.', 'wporg-forums' ); 457 } 458 $retval['view_all'] = false; 459 460 break; 461 } 462 463 // Add 'view=all' if needed 464 if ( ! empty( $retval['view_all'] ) ) { 465 $retval['redirect_to'] = bbp_add_view_all( $retval['redirect_to'], true ); 466 } 467 468 return $retval; 469 } 470 471 /** 472 * Handle Spam, Unspam, Unapprove, Approve reply actions. 473 * 474 * By default, bbPress treats them as toggles, which may cause conflicts if 475 * the same action is performed twice by different moderators. 476 * 477 * @param array $retval { 478 * @type int $status Result of the action. 479 * @type string $message Message displayed in case of an error. 480 * @type string $redirect_to URL to redirect to. 481 * @type bool $view_all Whether to append 'view=all' to the URL. 482 * } 483 * @param array $r Parsed arguments. 484 * @param array $args Raw arguments. 485 * @return array 486 */ 487 public function handle_reply_actions( $retval, $r, $args ) { 488 $nonce_suffix = bbp_get_reply_post_type() . '_' . (int) $r['id']; 489 490 switch ( $r['action'] ) { 491 case 'wporg_bbp_spam_reply': 492 check_ajax_referer( "spam-{$nonce_suffix}" ); 493 494 if ( ! bbp_is_reply_spam( $r['id'] ) ) { 495 $retval['status'] = bbp_spam_reply( $r['id'] ); 496 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem marking the reply as spam.', 'wporg-forums' ); 497 } 498 $retval['view_all'] = true; 499 500 break; 501 502 case 'wporg_bbp_unspam_reply': 503 check_ajax_referer( "spam-{$nonce_suffix}" ); 504 505 if ( bbp_is_reply_spam( $r['id'] ) ) { 506 $retval['status'] = bbp_unspam_reply( $r['id'] ); 507 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem unmarking the reply as spam.', 'wporg-forums' ); 508 } 509 $retval['view_all'] = false; 510 511 break; 512 513 case 'wporg_bbp_unapprove_reply': 514 check_ajax_referer( "approve-{$nonce_suffix}" ); 515 516 if ( ! bbp_is_reply_pending( $r['id'] ) ) { 517 $retval['status'] = bbp_unapprove_reply( $r['id'] ); 518 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem unapproving the reply.', 'wporg-forums' ); 519 } 520 $retval['view_all'] = true; 521 522 break; 523 524 case 'wporg_bbp_approve_reply': 525 check_ajax_referer( "approve-{$nonce_suffix}" ); 526 527 if ( bbp_is_reply_pending( $r['id'] ) ) { 528 $retval['status'] = bbp_approve_reply( $r['id'] ); 529 $retval['message'] = __( '<strong>ERROR</strong>: There was a problem approving the reply.', 'wporg-forums' ); 530 } 531 $retval['view_all'] = false; 532 533 break; 534 } 535 536 // Add 'view=all' if needed 537 if ( ! empty( $retval['view_all'] ) ) { 538 $retval['redirect_to'] = bbp_add_view_all( $retval['redirect_to'], true ); 539 } 540 541 return $retval; 542 } 543 544 /** 545 * Convert Spam/Unspam, Unapprove/Approve toggle links to explicit actions. 546 * 547 * @param string $link Link HTML. 548 * @param array $r Parsed arguments. 549 * @param array $args Raw arguments. 550 * @return string Filtered link. 551 */ 552 public function convert_toggles_to_actions( $link, $r, $args ) { 553 if ( false !== strpos( $link, 'bbp_toggle_topic_spam' ) ) { 554 $action = ( bbp_is_topic_spam( $r['id'] ) ) ? 'wporg_bbp_unspam_topic' : 'wporg_bbp_spam_topic'; 555 $link = str_replace( 'bbp_toggle_topic_spam', $action, $link ); 556 557 } elseif ( false !== strpos( $link, 'bbp_toggle_topic_approve' ) ) { 558 $action = ( bbp_is_topic_pending( $r['id'] ) ) ? 'wporg_bbp_approve_topic' : 'wporg_bbp_unapprove_topic'; 559 $link = str_replace( 'bbp_toggle_topic_approve', $action, $link ); 560 561 } elseif ( false !== strpos( $link, 'bbp_toggle_reply_spam' ) ) { 562 $action = ( bbp_is_reply_spam( $r['id'] ) ) ? 'wporg_bbp_unspam_reply' : 'wporg_bbp_spam_reply'; 563 $link = str_replace( 'bbp_toggle_reply_spam', $action, $link ); 564 565 } elseif ( false !== strpos( $link, 'bbp_toggle_reply_approve' ) ) { 566 $action = ( bbp_is_reply_pending( $r['id'] ) ) ? 'wporg_bbp_approve_reply' : 'wporg_bbp_unapprove_reply'; 567 $link = str_replace( 'bbp_toggle_reply_approve', $action, $link ); 568 569 } 570 571 return $link; 572 } 349 573 }
Note: See TracChangeset
for help on using the changeset viewer.