Changeset 4290
- Timestamp:
- 11/02/2012 06:34:53 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/core/capabilities.php
r4249 r4290 14 14 // Exit if accessed directly 15 15 if ( !defined( 'ABSPATH' ) ) exit; 16 17 /** 18 * Whether or not to show advanced capability editing when editing a user. 19 * 20 * @param type $default 21 * @return type 22 */ 23 function bbp_use_advanced_capability_editor( $default = false ) { 24 return apply_filters( 'bbp_use_advanced_capability_editor', $default ); 25 } 16 26 17 27 /** Output ********************************************************************/ … … 136 146 switch( $capability ) { 137 147 138 // Misc 148 // Primary 149 case 'spectator' : 150 $retval = __( 'Spectate forum discussion', 'bbpress' ); 151 break; 139 152 case 'participate' : 140 153 $retval = __( 'Participate in forums', 'bbpress' ); … … 292 305 switch ( $role ) { 293 306 294 // Administrator295 case 'administrator':307 // Keymaster 308 case bbp_get_keymaster_role() : 296 309 $caps = array( 297 310 298 311 // Primary caps 299 'participate', 300 'moderate', 301 'throttle', 302 'view_trash', 312 'spectate' => true, 313 'participate' => true, 314 'moderate' => true, 315 'throttle' => true, 316 'view_trash' => true, 303 317 304 318 // Forum caps 305 'publish_forums' ,306 'edit_forums' ,307 'edit_others_forums' ,308 'delete_forums' ,309 'delete_others_forums' ,310 'read_private_forums' ,311 'read_hidden_forums' ,319 'publish_forums' => true, 320 'edit_forums' => true, 321 'edit_others_forums' => true, 322 'delete_forums' => true, 323 'delete_others_forums' => true, 324 'read_private_forums' => true, 325 'read_hidden_forums' => true, 312 326 313 327 // Topic caps 314 'publish_topics' ,315 'edit_topics' ,316 'edit_others_topics' ,317 'delete_topics' ,318 'delete_others_topics' ,319 'read_private_topics' ,328 'publish_topics' => true, 329 'edit_topics' => true, 330 'edit_others_topics' => true, 331 'delete_topics' => true, 332 'delete_others_topics' => true, 333 'read_private_topics' => true, 320 334 321 335 // Reply caps 322 'publish_replies' ,323 'edit_replies' ,324 'edit_others_replies' ,325 'delete_replies' ,326 'delete_others_replies' ,327 'read_private_replies' ,336 'publish_replies' => true, 337 'edit_replies' => true, 338 'edit_others_replies' => true, 339 'delete_replies' => true, 340 'delete_others_replies' => true, 341 'read_private_replies' => true, 328 342 329 343 // Topic tag caps 330 'manage_topic_tags' ,331 'edit_topic_tags' ,332 'delete_topic_tags' ,333 'assign_topic_tags' 344 'manage_topic_tags' => true, 345 'edit_topic_tags' => true, 346 'delete_topic_tags' => true, 347 'assign_topic_tags' => true 334 348 ); 335 349 336 350 break; 337 351 338 // Any other role 352 // Moderator 353 case bbp_get_moderator_role() : 354 $caps = array( 355 356 // Primary caps 357 'spectate' => true, 358 'participate' => true, 359 'moderate' => true, 360 'throttle' => true, 361 'view_trash' => false, 362 363 // Forum caps 364 'publish_forums' => true, 365 'edit_forums' => true, 366 'edit_others_forums' => false, 367 'delete_forums' => false, 368 'delete_others_forums' => false, 369 'read_private_forums' => true, 370 'read_hidden_forums' => false, 371 372 // Topic caps 373 'publish_topics' => true, 374 'edit_topics' => true, 375 'edit_others_topics' => true, 376 'delete_topics' => true, 377 'delete_others_topics' => true, 378 'read_private_topics' => true, 379 380 // Reply caps 381 'publish_replies' => true, 382 'edit_replies' => true, 383 'edit_others_replies' => true, 384 'delete_replies' => true, 385 'delete_others_replies' => true, 386 'read_private_replies' => true, 387 388 // Topic tag caps 389 'manage_topic_tags' => true, 390 'edit_topic_tags' => true, 391 'delete_topic_tags' => true, 392 'assign_topic_tags' => true, 393 ); 394 395 break; 396 397 // Spectators can only read 398 case bbp_get_spectator_role() : 399 $caps = array( 400 401 // Primary caps 402 'spectate' => true, 403 'participate' => false, 404 'moderate' => false, 405 'throttle' => false, 406 'view_trash' => false, 407 408 // Forum caps 409 'publish_forums' => false, 410 'edit_forums' => false, 411 'edit_others_forums' => false, 412 'delete_forums' => false, 413 'delete_others_forums' => false, 414 'read_private_forums' => false, 415 'read_hidden_forums' => false, 416 417 // Topic caps 418 'publish_topics' => false, 419 'edit_topics' => false, 420 'edit_others_topics' => false, 421 'delete_topics' => false, 422 'delete_others_topics' => false, 423 'read_private_topics' => false, 424 425 // Reply caps 426 'publish_replies' => false, 427 'edit_replies' => false, 428 'edit_others_replies' => false, 429 'delete_replies' => false, 430 'delete_others_replies' => false, 431 'read_private_replies' => false, 432 433 // Topic tag caps 434 'manage_topic_tags' => false, 435 'edit_topic_tags' => false, 436 'delete_topic_tags' => false, 437 'assign_topic_tags' => false, 438 ); 439 440 break; 441 442 // Explicitly blocked 443 case bbp_get_blocked_role() : 444 $caps = array( 445 446 // Primary caps 447 'spectate' => false, 448 'participate' => false, 449 'moderate' => false, 450 'throttle' => false, 451 'view_trash' => false, 452 453 // Forum caps 454 'publish_forums' => false, 455 'edit_forums' => false, 456 'edit_others_forums' => false, 457 'delete_forums' => false, 458 'delete_others_forums' => false, 459 'read_private_forums' => false, 460 'read_hidden_forums' => false, 461 462 // Topic caps 463 'publish_topics' => false, 464 'edit_topics' => false, 465 'edit_others_topics' => false, 466 'delete_topics' => false, 467 'delete_others_topics' => false, 468 'read_private_topics' => false, 469 470 // Reply caps 471 'publish_replies' => false, 472 'edit_replies' => false, 473 'edit_others_replies' => false, 474 'delete_replies' => false, 475 'delete_others_replies' => false, 476 'read_private_replies' => false, 477 478 // Topic tag caps 479 'manage_topic_tags' => false, 480 'edit_topic_tags' => false, 481 'delete_topic_tags' => false, 482 'assign_topic_tags' => false, 483 ); 484 485 break; 486 487 // Participant/Default 488 case bbp_get_anonymous_role() : 489 case bbp_get_participant_role() : 339 490 default : 340 491 $caps = array( 341 492 342 493 // Primary caps 343 'participate', 494 'spectate' => true, 495 'participate' => true, 496 'moderate' => false, 497 'throttle' => false, 498 'view_trash' => false, 344 499 345 500 // Forum caps 346 'read_private_forums', 501 'publish_forums' => false, 502 'edit_forums' => false, 503 'edit_others_forums' => false, 504 'delete_forums' => false, 505 'delete_others_forums' => false, 506 'read_private_forums' => true, 507 'read_hidden_forums' => false, 347 508 348 509 // Topic caps 349 'publish_topics', 350 'edit_topics', 510 'publish_topics' => true, 511 'edit_topics' => true, 512 'edit_others_topics' => false, 513 'delete_topics' => false, 514 'delete_others_topics' => false, 515 'read_private_topics' => false, 351 516 352 517 // Reply caps 353 'publish_replies', 354 'edit_replies', 518 'publish_replies' => true, 519 'edit_replies' => true, 520 'edit_others_replies' => false, 521 'delete_replies' => false, 522 'delete_others_replies' => false, 523 'read_private_replies' => false, 355 524 356 525 // Topic tag caps 357 'assign_topic_tags' 526 'manage_topic_tags' => false, 527 'edit_topic_tags' => false, 528 'delete_topic_tags' => false, 529 'assign_topic_tags' => true, 358 530 ); 359 531 … … 378 550 // Loop through available roles and add caps 379 551 foreach( $wp_roles->role_objects as $role ) { 380 foreach ( bbp_get_caps_for_role( $role->name ) as $cap ) {381 $role->add_cap( $cap );552 foreach ( bbp_get_caps_for_role( $role->name ) as $cap => $value ) { 553 $role->add_cap( $cap, $value ); 382 554 } 383 555 } … … 400 572 // Loop through available roles and remove caps 401 573 foreach( $wp_roles->role_objects as $role ) { 402 foreach ( bbp_get_caps_for_role( $role->name) as $cap ) {574 foreach ( array_keys( bbp_get_caps_for_role( $role->name ) ) as $cap ) { 403 575 $role->remove_cap( $cap ); 404 576 } … … 408 580 } 409 581 582 /** Forum Roles ***************************************************************/ 583 584 /** 585 * Add the bbPress roles to the $wp_roles global. 586 * 587 * We do this to avoid adding these values to the database. 588 * 589 * @since bbPress (rxxxx) 590 * @global type $wp_roles 591 */ 592 function bbp_add_forums_roles() { 593 global $wp_roles, $wp_user_roles; 594 595 if ( ! isset( $wp_roles ) ) 596 $wp_roles = new WP_Roles(); 597 598 // Loop through bbPress's roles and add them to the global $wp_roles 599 foreach( bbp_get_forums_editable_roles() as $role_id => $details ) { 600 $wp_roles->roles[$role_id] = $details; 601 $wp_roles->role_objects[$role_id] = new WP_Role( $details['name'], $details['capabilities'] ); 602 $wp_roles->role_names[$role_id] = $details['name']; 603 } 604 605 // Force WordPress not to use the DB 606 $wp_user_roles = $wp_roles; 607 } 608 609 /** 610 * Fetch a filtered list of forum roles that the current user is 611 * allowed to have. 612 * 613 * Simple function who's main purpose is to allow filtering of the 614 * list of forum roles so that plugins can remove inappropriate ones depending 615 * on the situation or user making edits. 616 * 617 * Specifically because without filtering, anyone with the edit_users 618 * capability can edit others to be administrators, even if they are 619 * only editors or authors. This filter allows admins to delegate 620 * user management. 621 * 622 * @since bbPress (r4284) 623 * 624 * @return array 625 */ 626 function bbp_get_forums_editable_roles() { 627 return (array) apply_filters( 'bbp_get_forums_editable_roles', array( 628 629 // Keymaster 630 bbp_get_keymaster_role() => array( 631 'name' => __( 'Keymaster', 'bbpress' ), 632 'capabilities' => bbp_get_caps_for_role( bbp_get_keymaster_role() ) 633 ), 634 635 // Moderator 636 bbp_get_moderator_role() => array( 637 'name' => __( 'Moderator', 'bbpress' ), 638 'capabilities' => bbp_get_caps_for_role( bbp_get_moderator_role() ) 639 ), 640 641 // Participant 642 bbp_get_participant_role() => array( 643 'name' => __( 'Participant', 'bbpress' ), 644 'capabilities' => bbp_get_caps_for_role( bbp_get_participant_role() ) 645 ), 646 647 // Spectator 648 bbp_get_spectator_role() => array( 649 'name' => __( 'Spectator', 'bbpress' ), 650 'capabilities' => bbp_get_caps_for_role( bbp_get_spectator_role() ) 651 ), 652 653 // Blocked 654 bbp_get_blocked_role() => array( 655 'name' => __( 'Blocked', 'bbpress' ), 656 'capabilities' => bbp_get_caps_for_role( bbp_get_blocked_role() ) 657 ) 658 ) ); 659 } 660 661 /** 662 * The keymaster role for bbPress users 663 * 664 * @since bbPress (r4284) 665 * 666 * @uses apply_filters() Allow override of hardcoded keymaster role 667 * @return string 668 */ 669 function bbp_get_keymaster_role() { 670 return apply_filters( 'bbp_get_keymaster_role', 'bbp_keymaster' ); 671 } 672 673 /** 674 * The moderator role for bbPress users 675 * 676 * @since bbPress (r3410) 677 * 678 * @uses apply_filters() Allow override of hardcoded moderator role 679 * @return string 680 */ 681 function bbp_get_moderator_role() { 682 return apply_filters( 'bbp_get_moderator_role', 'bbp_moderator' ); 683 } 684 685 /** 686 * The participant role for registered user that can participate in forums 687 * 688 * @since bbPress (r3410) 689 * 690 * @uses apply_filters() Allow override of hardcoded participant role 691 * @return string 692 */ 693 function bbp_get_participant_role() { 694 return apply_filters( 'bbp_get_participant_role', 'bbp_participant' ); 695 } 696 697 /** 698 * The spectator role is for registered users without any capabilities 699 * 700 * @since bbPress (r3860) 701 * 702 * @uses apply_filters() Allow override of hardcoded spectator role 703 * @return string 704 */ 705 function bbp_get_spectator_role() { 706 return apply_filters( 'bbp_get_spectator_role', 'bbp_spectator' ); 707 } 708 709 /** 710 * The anonymous role for any user without a forum role 711 * 712 * @since bbPress (r3860) 713 * 714 * @uses apply_filters() Allow override of hardcoded anonymous role 715 * @return string 716 */ 717 function bbp_get_anonymous_role() { 718 return apply_filters( 'bbp_get_anonymous_role', 'bbp_anonymous' ); 719 } 720 721 /** 722 * The blocked role is for registered users that cannot spectate or participate 723 * 724 * @since bbPress (r4284) 725 * 726 * @uses apply_filters() Allow override of hardcoded blocked role 727 * @return string 728 */ 729 function bbp_get_blocked_role() { 730 return apply_filters( 'bbp_get_blocked_role', 'bbp_blocked' ); 731 } 732 410 733 /** Deprecated ****************************************************************/ 411 734 … … 429 752 _doing_it_wrong( 'bbp_remove_roles', __( 'Special forum roles no longer exist. Use mapped capabilities instead', 'bbpress' ), '2.2' ); 430 753 } 431 432 /**433 * The anonymous role for unregistered users434 *435 * @since bbPress (r3860)436 *437 * @deprecated since version 2.2438 */439 function bbp_get_anonymous_role() {440 _doing_it_wrong( 'bbp_get_anonymous_role', __( 'Special forum roles no longer exist. Use mapped capabilities instead', 'bbpress' ), '2.2' );441 }442 443 /**444 * The participant role for registered users without roles445 *446 * @since bbPress (r3410)447 *448 * @deprecated since version 2.2449 */450 function bbp_get_participant_role() {451 _doing_it_wrong( 'bbp_get_participant_role', __( 'Special forum roles no longer exist. Use mapped capabilities instead', 'bbpress' ), '2.2' );452 }453 454 /**455 * The moderator role for bbPress users456 *457 * @since bbPress (r3410)458 *459 * @deprecated since version 2.2460 */461 function bbp_get_moderator_role() {462 _doing_it_wrong( 'bbp_get_moderator_role', __( 'Special forum roles no longer exist. Use mapped capabilities instead', 'bbpress' ), '2.2' );463 }
Note: See TracChangeset
for help on using the changeset viewer.