[buddypress-trac] [BuddyPress Trac] #6301: Group extension access settings disrespected by bp_core_new_subnav_item()

buddypress-trac noreply at wordpress.org
Wed Mar 18 17:00:05 UTC 2015


#6301: Group extension access settings disrespected by bp_core_new_subnav_item()
--------------------------------+------------------------------
 Reporter:  dcavins             |       Owner:
     Type:  defect (bug)        |      Status:  new
 Priority:  normal              |   Milestone:  Awaiting Review
Component:  Component - Groups  |     Version:
 Severity:  minor               |  Resolution:
 Keywords:  has-patch           |
--------------------------------+------------------------------
Description changed by dcavins:

Old description:

> In our new group extension access settings (see r8605), we've allowed
> users to independently set who can see the extension's navigation tab and
> who can visit the extension's display pane. However, because of a
> limitation in `bp_core_new_subnav_item()`, if who can visit the tab is
> more permissive than who can see the tab (for example, you create an
> extension that doesn't need a navigation tab, but does need to display
> the contents to anyone, like `'show_tab' => 'noone', 'access' =>
> 'anyone'`) `bp_core_subnav_item()` is never called. This prevents the
> navigation link from being created, but  it turns out that
> `bp_core_subnav_item()` must be called in order for the screen function
> to be caught. (See `bp_core_maybe_hook_new_subnav_screen_function()` in
> `bp-core-buddybar.php`.) And there's no way currently to call
> `bp_core_subnav_item()` without actually creating the navigation link.
>
> I've attached a patch (xx.01) that adds another argument,
> `user_can_see_nav_item`,  to `bp_core_new_subnav_item()` that controls
> whether the link is created in `bp_get_options_nav()`. `user_has_access`
> is still used to determine whether the screen function should be hooked
> or not.
>
> In patch xx.02, I used the new argument to call
> `bp_core_new_subnav_item()` if the user can see the nav tab or access the
> extension's display pane.
>
> I'm unfamiliar with the navigation creation functions, so would
> appreciate feedback.

New description:

 In our new group extension access settings (see r8605), we've allowed
 users to independently set who can see the extension's navigation tab and
 who can visit the extension's display pane. However, because of a
 limitation in `bp_core_new_subnav_item()`, if who can visit the tab is
 more permissive than who can see the tab (for example, you create an
 extension that doesn't need a navigation tab, but does need to display the
 contents to anyone, like `'show_tab' => 'noone', 'access' => 'anyone'`)
 `bp_core_subnav_item()` is never called. This prevents the navigation link
 from being created, but  it turns out that `bp_core_subnav_item()` must be
 called in order for the screen function to be caught. (See
 `bp_core_maybe_hook_new_subnav_screen_function()` in `bp-core-
 buddybar.php`.) And there's no way currently to call
 `bp_core_subnav_item()` without actually creating the navigation link.

 I've attached a patch (6301.01) that adds another argument,
 `user_can_see_nav_item`,  to `bp_core_new_subnav_item()` that controls
 whether the link is created in `bp_get_options_nav()`. `user_has_access`
 is still used to determine whether the screen function should be hooked or
 not.

 In patch 6301.02, I used the new argument to call
 `bp_core_new_subnav_item()` if the user can see the nav tab or access the
 extension's display pane.

 I'm unfamiliar with the navigation creation functions, so would appreciate
 feedback.

--

--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/6301#comment:1>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac


More information about the buddypress-trac mailing list