Changeset 4222 for trunk/bbp-includes/bbp-core-caps.php
- Timestamp:
- 09/17/2012 12:03:03 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bbp-includes/bbp-core-caps.php
r4206 r4222 115 115 'moderate', 116 116 'throttle', 117 'view_trash', 118 'bozo' 117 'view_trash' 119 118 ) ); 120 119 } … … 277 276 $retval = __( 'View items in forum trash', 'bbpress' ); 278 277 break; 279 case 'bozo' :280 $retval = __( 'User is a forum bozo', 'bbpress' );281 break;282 278 283 279 // Forum caps … … 426 422 /** General ***********************************************************/ 427 423 428 case 'bozo' : 429 430 // Inactive users are not bozos 424 /** 425 * The 'participate' capability is similar to WordPress's 'read' cap, 426 * in that it is the minimum required cap to perform any other bbPress 427 * related thing. 428 */ 429 case 'participate' : 430 431 // Inactive users cannot participate 431 432 if ( bbp_is_user_inactive( $user_id ) ) { 432 433 $caps = array( 'do_not_allow' ); 433 434 434 // Moderators are not bozos435 // Moderators are always participants 435 436 } elseif ( user_can( $user_id, 'moderate' ) ) { 437 $caps = array( $cap ); 438 439 // Map to read 440 } else { 441 $caps = array( 'read' ); 442 } 443 444 break; 445 446 case 'moderate' : 447 448 // All admins are administrators 449 if ( user_can( $user_id, 'administrator' ) ) { 450 $caps = array( 'read' ); 451 } 452 break; 453 454 /** Reading ***********************************************************/ 455 456 case 'read_private_forums' : 457 case 'read_hidden_forums' : 458 459 // Non-participants cannot never read private/hidden forums 460 if ( ! user_can( $user_id, 'participate' ) ) { 436 461 $caps = array( 'do_not_allow' ); 437 } 438 439 break; 440 441 /** Reading ***********************************************************/ 462 463 // Moderators can always read private/hidden forums 464 } elseif ( user_can( $user_id, 'moderate' ) ) { 465 $caps = array( $cap ); 466 } 467 468 break; 442 469 443 470 case 'read_forum' : … … 445 472 case 'read_reply' : 446 473 447 // Get the post 448 $_post = get_post( $args[0] ); 449 if ( !empty( $_post ) ) { 450 451 // Get caps for post type object 452 $post_type = get_post_type_object( $_post->post_type ); 453 $caps = array(); 454 455 // Post is public 456 if ( bbp_get_public_status_id() == $_post->post_status ) { 457 $caps[] = 'read'; 458 459 // User is author so allow read 460 } elseif ( (int) $user_id == (int) $_post->post_author ) { 461 $caps[] = 'read'; 462 463 // Unknown so map to private posts 464 } else { 465 $caps[] = $post_type->cap->read_private_posts; 474 // User cannot participate 475 if ( ! user_can( $user_id, 'participate' ) ) { 476 $caps = array( 'do_not_allow' ); 477 478 // Do some post ID based logic 479 } else { 480 481 // Get the post 482 $_post = get_post( $args[0] ); 483 if ( !empty( $_post ) ) { 484 485 // Get caps for post type object 486 $post_type = get_post_type_object( $_post->post_type ); 487 488 // Post is public 489 if ( bbp_get_public_status_id() == $_post->post_status ) { 490 $caps = array( 'particpate' ); 491 492 // User is author so allow read 493 } elseif ( (int) $user_id == (int) $_post->post_author ) { 494 $caps = array( 'participate' ); 495 496 // Unknown so map to private posts 497 } else { 498 $caps = array( $post_type->cap->read_private_forums ); 499 } 466 500 } 467 501 } … … 475 509 case 'publish_replies' : 476 510 477 // Add do_not_allow cap if user is spam or deleted478 if ( bbp_is_user_inactive( $user_id ) )511 // Non participants cannot participate 512 if ( ! user_can( $user_id, 'participate' ) ) { 479 513 $caps = array( 'do_not_allow' ); 480 514 515 // Moderators can always edit 516 } elseif ( user_can( $user_id, 'moderate' ) ) { 517 $caps = array( $cap ); 518 } 519 481 520 break; 482 521 … … 484 523 485 524 // Used primarily in wp-admin 486 case 'edit_forums' : 487 case 'edit_topics' : 488 case 'edit_replies' : 489 490 // Add do_not_allow cap if user is spam or deleted 491 if ( bbp_is_user_inactive( $user_id ) ) 525 case 'edit_forums' : 526 case 'edit_topics' : 527 case 'edit_replies' : 528 case 'edit_others_topics' : 529 case 'edit_others_replies' : 530 531 // Moderators can always edit 532 if ( ! user_can( $user_id, 'participate' ) ) { 492 533 $caps = array( 'do_not_allow' ); 534 535 // Moderators can always edit forum content 536 } elseif ( user_can( $user_id, 'moderate' ) ) { 537 $caps = array( $cap ); 538 } 493 539 494 540 break; … … 567 613 $caps[] = 'do_not_allow'; 568 614 615 // Moderators can always edit forum content 616 } elseif ( user_can( $user_id, 'moderate' ) ) { 617 $caps[] = 'participate'; 618 569 619 // Unknown so map to delete_others_posts 570 620 } else { 571 621 $caps[] = $post_type->cap->delete_others_posts; 572 622 } 623 } 624 625 break; 626 627 // Moderation override 628 case 'delete_topics' : 629 case 'delete_replies' : 630 case 'delete_others_topics' : 631 case 'delete_others_replies' : 632 633 // Moderators can always edit 634 if ( ! user_can( $user_id, 'participate' ) ) { 635 $caps = array( 'do_not_allow' ); 636 637 // Moderators can always edit forum content 638 } elseif ( user_can( $user_id, 'moderate' ) ) { 639 $caps = array( $cap ); 640 } 641 642 break; 643 644 /** Topic Tags ********************************************************/ 645 646 case 'manage_topic_tags' : 647 case 'edit_topic_tags' : 648 case 'delete_topic_tags' : 649 case 'assign_topic_tags' : 650 651 // Moderators can always edit 652 if ( ! user_can( $user_id, 'participate' ) ) { 653 $caps = array( 'do_not_allow' ); 654 655 // Moderators can always edit forum content 656 } elseif ( user_can( $user_id, 'moderate' ) ) { 657 $caps = array( $cap ); 573 658 } 574 659 … … 748 833 749 834 return apply_filters( 'bbp_get_caps_for_role', $caps, $role ); 835 } 836 837 /** 838 * Remove all bbPress capabilities for a given user 839 * 840 * @since bbPress (r4221) 841 * 842 * @param int $user_id 843 * @return boolean True on success, false on failure 844 */ 845 function bbp_remove_user_caps( $user_id = 0 ) { 846 847 // Bail if no user was passed 848 if ( empty( $user_id ) ) 849 return false; 850 851 // Load up the user 852 $user = new WP_User( $user_id ); 853 854 // Remove all caps 855 foreach ( bbp_get_capability_groups() as $group ) 856 foreach ( bbp_get_capabilities_for_group( $group ) as $capability ) 857 $user->remove_cap( $capability ); 858 859 // Success 860 return true; 861 } 862 863 /** 864 * Remove all bbPress capabilities for a given user 865 * 866 * @since bbPress (r4221) 867 * 868 * @param int $user_id 869 * @return boolean True on success, false on failure 870 */ 871 function bbp_reset_user_caps( $user_id = 0 ) { 872 873 // Bail if no user was passed 874 if ( empty( $user_id ) ) 875 return false; 876 877 // Bail if not a member of this blog 878 if ( ! user_can( $user_id, 'read' ) ) 879 return false; 880 881 // Remove all caps for user 882 bbp_remove_user_caps( $user_id ); 883 884 // Load up the user 885 $user = new WP_User( $user_id ); 886 887 // User has no role so bail 888 if ( ! isset( $user->roles ) ) 889 return false; 890 891 // Use first user role 892 $caps = bbp_get_caps_for_role( array_shift( $user->roles ) ); 893 894 // Add caps for the first role 895 foreach ( $caps as $cap ) 896 $user->add_cap( $cap, true ); 897 898 // Success 899 return true; 900 } 901 902 /** 903 * Save all bbPress capabilities for a given user 904 * 905 * @since bbPress (r4221) 906 * 907 * @param type $user_id 908 * @return boolean 909 */ 910 function bbp_save_user_caps( $user_id = 0 ) { 911 912 // Bail if no user was passed 913 if ( empty( $user_id ) ) 914 return false; 915 916 // Bail if not a member of this blog 917 if ( ! user_can( $user_id, 'read' ) ) 918 return false; 919 920 // Load up the user 921 $user = new WP_User( $user_id ); 922 923 // Loop through capability groups 924 foreach ( bbp_get_capability_groups() as $group ) { 925 foreach ( bbp_get_capabilities_for_group( $group ) as $capability ) { 926 927 // Maybe add cap 928 if ( ! empty( $_POST['_bbp_' . $capability] ) && ! $user->has_cap( $capability ) ) { 929 $user->add_cap( $capability, true ); 930 931 // Maybe remove cap 932 } elseif ( empty( $_POST['_bbp_' . $capability] ) && $user->has_cap( $capability ) ) { 933 $user->add_cap( $capability, false ); 934 } 935 } 936 } 937 938 // Success 939 return true; 750 940 } 751 941
Note: See TracChangeset
for help on using the changeset viewer.