BP_Group_Extension::setup_access_settings()
Set up access-related settings for this extension.
Description
Source
File: bp-groups/classes/class-bp-group-extension.php
protected function setup_access_settings() { // Bail if no group ID is available. if ( empty( $this->group_id ) ) { return; } // Backward compatibility. if ( isset( $this->params['enable_nav_item'] ) ) { $this->enable_nav_item = (bool) $this->params['enable_nav_item']; } // Tab Access. $this->user_can_visit = false; // Backward compatibility for components that do not provide // explicit 'access' parameter. if ( empty( $this->params['access'] ) ) { if ( false === $this->params['enable_nav_item'] ) { $this->params['access'] = 'noone'; } else { $group = groups_get_group( $this->group_id ); if ( ! empty( $group->status ) && 'public' === $group->status ) { // Tabs in public groups are accessible to anyone by default. $this->params['access'] = 'anyone'; } else { // All other groups have members-only as the default. $this->params['access'] = 'member'; } } } // Parse multiple access conditions into an array. $access_conditions = $this->params['access']; if ( ! is_array( $access_conditions ) ) { $access_conditions = explode( ',', $access_conditions ); } // If the current user meets at least one condition, the // get access. foreach ( $access_conditions as $access_condition ) { if ( $this->user_meets_access_condition( $access_condition ) ) { $this->user_can_visit = true; break; } } // Tab Visibility. $this->user_can_see_nav_item = false; // Backward compatibility for components that do not provide // explicit 'show_tab' parameter. if ( empty( $this->params['show_tab'] ) ) { if ( false === $this->params['enable_nav_item'] ) { // The enable_nav_item index is only false if it's been // defined explicitly as such in the // constructor. So we always trust this value. $this->params['show_tab'] = 'noone'; } elseif ( isset( $this->params_raw['enable_nav_item'] ) || isset( $this->params_raw['visibility'] ) ) { // If enable_nav_item or visibility is passed, // we assume this is a legacy extension. // Legacy behavior is that enable_nav_item=true + // visibility=private implies members-only. if ( 'public' !== $this->visibility ) { $this->params['show_tab'] = 'member'; } else { $this->params['show_tab'] = 'anyone'; } } else { // No show_tab or enable_nav_item value is // available, so match the value of 'access'. $this->params['show_tab'] = $this->params['access']; } } // Parse multiple access conditions into an array. $access_conditions = $this->params['show_tab']; if ( ! is_array( $access_conditions ) ) { $access_conditions = explode( ',', $access_conditions ); } // If the current user meets at least one condition, the // get access. foreach ( $access_conditions as $access_condition ) { if ( $this->user_meets_access_condition( $access_condition ) ) { $this->user_can_see_nav_item = true; break; } } }
Changelog
Version | Description |
---|---|
BuddyPress 2.1.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.