Skip to:
Content

bbPress.org

Changeset 3946


Ignore:
Timestamp:
06/12/2012 05:36:00 AM (13 years ago)
Author:
johnjamesjacoby
Message:

Capabilities & Settings:

  • Rename bbp_admin_show_ui() to bbp_current_user_can_see().
  • Add detailed support for hiding admin settings sections.
  • Remove BBP_Admin UI override flags in lieu of new method.
  • See #1846.
Location:
branches/plugin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-admin/bbp-admin.php

    r3945 r3946  
    4545    public $styles_url = '';
    4646
    47     /** Tools *****************************************************************/
    48 
    49     /**
    50      * @var bool Enable screens in Tools area
    51      */
    52     public $enable_tools = false;
    53 
    54     /** Settings **************************************************************/
    55 
    56     /**
    57      * @var bool Enable screens in Settings area
    58      */
    59     public $enable_settings = false;
    60 
    6147    /** Capability ************************************************************/
    6248
     
    182168    public function admin_menus() {
    183169
    184         // Are tools enabled?
    185         if ( is_super_admin() || ! empty( $this->enable_tools ) ) {
    186 
    187             $hooks = array();
    188 
    189             // These are later removed in admin_head
    190             $hooks[] = add_management_page(
    191                 __( 'Repair Forums', 'bbpress' ),
    192                 __( 'Forum Repair',  'bbpress' ),
    193                 $this->minimum_capability,
    194                 'bbp-repair',
    195                 'bbp_admin_repair'
    196             );
    197             $hooks[] = add_management_page(
    198                 __( 'Import Forums', 'bbpress' ),
    199                 __( 'Forum Import',  'bbpress' ),
    200                 $this->minimum_capability,
    201                 'bbp-converter',
    202                 'bbp_converter_settings'
    203             );
    204             $hooks[] = add_management_page(
    205                 __( 'Reset Forums', 'bbpress' ),
    206                 __( 'Forum Reset',  'bbpress' ),
    207                 $this->minimum_capability,
    208                 'bbp-reset',
    209                 'bbp_admin_reset'
    210             );
     170        $hooks = array();
     171
     172        // These are later removed in admin_head
     173        if ( bbp_current_user_can_see( 'bbp_tools_page' ) ) {
     174            if ( bbp_current_user_can_see( 'bbp_tools_repair_page' ) ) {
     175                $hooks[] = add_management_page(
     176                    __( 'Repair Forums', 'bbpress' ),
     177                    __( 'Forum Repair',  'bbpress' ),
     178                    $this->minimum_capability,
     179                    'bbp-repair',
     180                    'bbp_admin_repair'
     181                );
     182            }
     183
     184            if ( bbp_current_user_can_see( 'bbp_tools_import_page' ) ) {
     185                $hooks[] = add_management_page(
     186                    __( 'Import Forums', 'bbpress' ),
     187                    __( 'Forum Import',  'bbpress' ),
     188                    $this->minimum_capability,
     189                    'bbp-converter',
     190                    'bbp_converter_settings'
     191                );
     192            }
     193
     194            if ( bbp_current_user_can_see( 'bbp_tools_reset_page' ) ) {
     195                $hooks[] = add_management_page(
     196                    __( 'Reset Forums', 'bbpress' ),
     197                    __( 'Forum Reset',  'bbpress' ),
     198                    $this->minimum_capability,
     199                    'bbp-reset',
     200                    'bbp_admin_reset'
     201                );
     202            }
    211203
    212204            // Fudge the highlighted subnav item when on a bbPress admin page
     
    226218
    227219        // Are settings enabled?
    228         if ( is_super_admin() || ! empty( $this->enable_settings ) ) {
     220        if ( bbp_current_user_can_see( 'bbp_settings_page' ) ) {
    229221            add_options_page(
    230222                __( 'Forums',  'bbpress' ),
     
    281273
    282274        $section = 'bbp_settings_main';
    283         if ( bbp_admin_show_ui( $section ) ) {
     275        if ( bbp_current_user_can_see( $section ) ) {
    284276
    285277            // Add the main section
     
    328320
    329321        $section = 'bbp_settings_theme_compat';
    330         if ( bbp_admin_show_ui( $section ) ) {
     322        if ( bbp_current_user_can_see( $section ) ) {
    331323
    332324            // Add the per page section
     
    341333
    342334        $section = 'bbp_settings_per_page';
    343         if ( bbp_admin_show_ui( $section ) ) {
     335        if ( bbp_current_user_can_see( $section ) ) {
    344336
    345337            // Add the per page section
     
    358350
    359351        $section = 'bbp_settings_per_page_rss';
    360         if ( bbp_admin_show_ui( $section ) ) {
     352        if ( bbp_current_user_can_see( $section ) ) {
    361353
    362354            // Add the per page section
     
    375367
    376368        $section = 'bbp_settings_root_slugs';
    377         if ( bbp_admin_show_ui( $section ) ) {
     369        if ( bbp_current_user_can_see( $section ) ) {
    378370
    379371            // Add the per page section
     
    397389
    398390        $section = 'bbp_settings_single_slugs';
    399         if ( bbp_admin_show_ui( $section ) ) {
     391        if ( bbp_current_user_can_see( $section ) ) {
    400392
    401393            // Add the per page section
     
    436428
    437429        $section = 'bbp_settings_buddypress';
    438         if ( bbp_admin_show_ui( $section ) ) {
     430        if ( bbp_current_user_can_see( $section ) ) {
    439431
    440432            // Add the per page section
     
    453445
    454446        $section = 'bbp_settings_akismet';
    455         if ( bbp_admin_show_ui( $section ) ) {
     447        if ( bbp_current_user_can_see( $section ) ) {
    456448
    457449            // Add the per page section
  • branches/plugin/bbp-includes/bbp-core-caps.php

    r3945 r3946  
    654654
    655655/**
    656  * Should the admin UI be visible?
     656 * Can the current user see a specific UI element?
    657657 *
    658  * Used when registering post types and taxonomies to decide if 'show_ui' should
    659  * be set to true or false
     658 * Used when registering post-types and taxonomies to decide if 'show_ui' should
     659 * be set to true or false. Also used for fine-grained control over which admin
     660 * sections are visible under what conditions.
     661 *
     662 * This function is in bbp-core-caps.php rather than in /bbp-admin so that it
     663 * can be used during the bbp_register_post_types action.
    660664 *
    661665 * @since bbPress (r3944)
     666 *
    662667 * @uses current_user_can() To check the 'moderate' capability
     668 * @uses bbp_get_forum_post_type()
     669 * @uses bbp_get_topic_post_type()
     670 * @uses bbp_get_reply_post_type()
     671 * @uses bbp_get_topic_tag_tax_id()
     672 * @uses is_plugin_active()
     673 * @uses is_super_admin()
    663674 * @return bool Results of current_user_can( 'moderate' ) check.
    664675 */
    665 function bbp_admin_show_ui( $component = '' ) {
     676function bbp_current_user_can_see( $component = '' ) {
    666677
    667678    // Define local variable
    668679    $retval = false;
    669680
    670     // Allow for context switching by plugins
     681    // Which component are we checking UI visibility for?
    671682    switch ( $component ) {
    672         case 'bbp_converter'             : // Converter
    673         case 'bbp_settings_main'         : // Settings
     683
     684        /** Everywhere ********************************************************/
     685
     686        case bbp_get_forum_post_type()   : // Forums
     687        case bbp_get_topic_post_type()   : // Topics
     688        case bbp_get_reply_post_type()   : // Replies
     689        case bbp_get_topic_tag_tax_id()  : // Topic-Tags
     690            $retval = current_user_can( 'moderate' );
     691            break;
     692
     693        /** Admin Exclusive ***************************************************/
     694
     695        case 'bbp_settings_buddypress'  : // BuddyPress Extension
     696            $retval = ( is_plugin_active( 'buddypress/bp-loader.php' ) && defined( 'BP_VERSION' ) ) && is_super_admin();
     697            break;
     698
     699        case 'bbp_settings_akismet'     : // Akismet Extension
     700            $retval = ( is_plugin_active( 'akismet/akismet.php' ) && defined( 'AKISMET_VERSION' ) ) && is_super_admin();
     701            break;
     702
     703        case 'bbp_tools_page'            : // Tools Page
     704        case 'bbp_tools_repair_page'     : // Tools - Repair Page
     705        case 'bbp_tools_import_page'     : // Tools - Import Page
     706        case 'bbp_tools_reset_page'      : // Tools - Reset Page
     707        case 'bbp_settings?page'         : // Settings Page
     708        case 'bbp_settings_main'         : // Settings - General
    674709        case 'bbp_settings_theme_compat' : // Settings - Theme compat
    675710        case 'bbp_settings_root_slugs'   : // Settings - Root slugs
     
    677712        case 'bbp_settings_per_page'     : // Settings - Single slugs
    678713        case 'bbp_settings_per_page_rss' : // Settings - Single slugs
    679             $retval = is_super_admin();
    680             break;
    681 
    682         case 'bbp_settings_buddypress'  : // BuddyPress Extension
    683             $retval = ( is_plugin_active( 'buddypress/bp-loader.php' ) && defined( 'BP_VERSION' ) ) && is_super_admin();
    684             break;
    685 
    686         case 'bbp_settings_akismet'     : // Akismet Extension
    687             $retval = ( is_plugin_active( 'akismet/akismet.php' ) && defined( 'AKISMET_VERSION' ) ) && is_super_admin();
    688             break;
    689 
    690         case bbp_get_forum_post_type()  : // Forums
    691         case bbp_get_topic_post_type()  : // Topics
    692         case bbp_get_reply_post_type()  : // Replies
    693         case bbp_get_topic_tag_tax_id() : // Topic-Tags
    694         default                         :
    695             $retval = current_user_can( 'moderate' );
     714        default                          : // Anything else
     715            $retval = current_user_can( bbpress()->admin->minimum_capability );
    696716            break;
    697717    }
    698718
    699     return (bool) apply_filters( 'bbp_admin_show_ui', $retval, $component );
     719    return (bool) apply_filters( 'bbp_current_user_can_see', (bool) $retval, $component );
    700720}
    701721
  • branches/plugin/bbpress.php

    r3945 r3946  
    679679                'show_in_nav_menus'   => true,
    680680                'public'              => true,
    681                 'show_ui'             => bbp_admin_show_ui( bbp_get_forum_post_type() ),
     681                'show_ui'             => bbp_current_user_can_see( bbp_get_forum_post_type() ),
    682682                'can_export'          => true,
    683683                'hierarchical'        => true,
     
    736736                'show_in_nav_menus'   => false,
    737737                'public'              => true,
    738                 'show_ui'             => bbp_admin_show_ui( bbp_get_topic_post_type() ),
     738                'show_ui'             => bbp_current_user_can_see( bbp_get_topic_post_type() ),
    739739                'can_export'          => true,
    740740                'hierarchical'        => false,
     
    793793                'show_in_nav_menus'   => false,
    794794                'public'              => true,
    795                 'show_ui'             => bbp_admin_show_ui( bbp_get_reply_post_type() ),
     795                'show_ui'             => bbp_current_user_can_see( bbp_get_reply_post_type() ),
    796796                'can_export'          => true,
    797797                'hierarchical'        => false,
     
    925925                'hierarchical'          => false,
    926926                'public'                => true,
    927                 'show_ui'               => bbp_admin_show_ui( bbp_get_topic_tag_tax_id() )
     927                'show_ui'               => bbp_current_user_can_see( bbp_get_topic_tag_tax_id() )
    928928            )
    929929        ) );
Note: See TracChangeset for help on using the changeset viewer.