[buddypress-trac] [BuddyPress Trac] #4785: Decouple "visibility" and "access" properties
buddypress-trac
noreply at wordpress.org
Tue Apr 1 20:40:09 UTC 2014
#4785: Decouple "visibility" and "access" properties
-------------------------+------------------
Reporter: smninja | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: 2.1
Component: Groups | Version: 1.7
Severity: normal | Resolution:
Keywords: has-patch |
-------------------------+------------------
Changes (by dcavins):
* cc: david.cavins@… (added)
* keywords: needs-patch => has-patch
Comment:
Thanks for doing a whole bunch of work on this. I was able to address a
few issues, and this seems to be working as expected for me. The weird
404s you were getting were a result of `user_has_access()` being a
protected method; the filter was unable to find/use it so returned false
(I didn't know this->
http://codex.wordpress.org/Function_Reference/add_filter "The function
returns true if the attempted function hook succeeds or false if not.")
The setup still seems a little over-complicated, though. In order to
display pages from a private group to the public, your plugin must set all
three of
{{{
'visibility' => 'public',
'enable_nav_item' => true,
'access' => array(
'public' => 'anyone',
'private' => 'anyone',
'hidden' => 'members',
)
}}}
Could we condense these options to two:
1. Should the plugin be active for this group? (replacing
`enable_nav_item`, as it appears that it currently means "show the tab,"
but if it's false, you can't reach the plugin's display screen even if the
plugin is active, and that value is used for `user_has_access`, too:
https://buddypress.trac.wordpress.org/browser/tags/1.9.2/bp-groups/bp-
groups-classes.php#L3032)
2. Who should have access to the plugin's display screen? (the new access
array)
(I'm trying to imagine a situation in which you'd want to display a
navigation item for a page the user can't visit. The flip side is a page
that the user can visit by URL but that doesn't have a navigation item.
Since those cases seem unusual, I think replacing `enable_nav_item` with
`enable_plugin` makes sense, and we could use the `enable_nav_item`
setting for that setting if it doesn't exist to provide backwards
compatibility. I didn't do this in this patch, though, since it seems like
a pretty big departure.)
I also used the new filter in `setup_display_hooks()` to help determine if
the subnav item should be created and also what value `user_has_access`
should have. Finally, I made some updates to the theme file
groups/single/home.php because it was also doing access checks based on
`bp_group_is_visible()`.
This would be a pretty exciting change for me, so please offer comments
and guidance and I'll be happy to help in any way I can. I'll be even more
thrilled if we can arrive at a simpler setup that would work and be
backwards compatible.
On a side note, what would setting a plugin's visibility to "private"
actually do? https://buddypress.trac.wordpress.org/browser/tags/1.9.2/bp-
groups/bp-groups-classes.php#L2800 Who could visit the plugin's display
screen then?
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/4785#comment:15>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac
More information about the buddypress-trac
mailing list