/** * Output the contents of the current group's home page. * * You should only use this when on a single group page. * * @since 2.4.0 */ function bp_groups_front_template_part() { $located = bp_groups_get_front_template(); if (false !== $located) { $slug = str_replace('.php', '', $located); /** * Let plugins adding an action to bp_get_template_part get it from here * * @param string $slug Template part slug requested. * @param string $name Template part name requested. */ do_action('get_template_part_' . $slug, $slug, false); load_template($located, true); } else { if (bp_is_active('activity')) { bp_get_template_part('groups/single/activity'); } else { if (bp_is_active('members')) { bp_groups_members_template_part(); } } } return $located; }
/** * Set up component global data. * * The BP_GROUPS_SLUG constant is deprecated, and only used here for * backwards compatibility. * * @since 1.5.0 * * @see BP_Component::setup_globals() for a description of arguments. * * @param array $args See BP_Component::setup_globals() for a description. */ public function setup_globals($args = array()) { $bp = buddypress(); // Define a slug, if necessary. if (!defined('BP_GROUPS_SLUG')) { define('BP_GROUPS_SLUG', $this->id); } // Global tables for groups component. $global_tables = array('table_name' => $bp->table_prefix . 'bp_groups', 'table_name_members' => $bp->table_prefix . 'bp_groups_members', 'table_name_groupmeta' => $bp->table_prefix . 'bp_groups_groupmeta'); // Metadata tables for groups component. $meta_tables = array('group' => $bp->table_prefix . 'bp_groups_groupmeta'); // All globals for groups component. // Note that global_tables is included in this array. $args = array('slug' => BP_GROUPS_SLUG, 'root_slug' => isset($bp->pages->groups->slug) ? $bp->pages->groups->slug : BP_GROUPS_SLUG, 'has_directory' => true, 'directory_title' => _x('Groups', 'component directory title', 'buddypress'), 'notification_callback' => 'groups_format_notifications', 'search_string' => _x('Search Groups...', 'Component directory search', 'buddypress'), 'global_tables' => $global_tables, 'meta_tables' => $meta_tables); parent::setup_globals($args); /* Single Group Globals **********************************************/ // Are we viewing a single group? if (bp_is_groups_component() && ($group_id = BP_Groups_Group::group_exists(bp_current_action()))) { $bp->is_single_item = true; /** * Filters the current PHP Class being used. * * @since 1.5.0 * * @param string $value Name of the class being used. */ $current_group_class = apply_filters('bp_groups_current_group_class', 'BP_Groups_Group'); if ($current_group_class == 'BP_Groups_Group') { $this->current_group = groups_get_group(array('group_id' => $group_id, 'populate_extras' => true)); } else { /** * Filters the current group object being instantiated from previous filter. * * @since 1.5.0 * * @param object $value Newly instantiated object for the group. */ $this->current_group = apply_filters('bp_groups_current_group_object', new $current_group_class($group_id)); } // When in a single group, the first action is bumped down one because of the // group name, so we need to adjust this and set the group name to current_item. $bp->current_item = bp_current_action(); $bp->current_action = bp_action_variable(0); array_shift($bp->action_variables); // Using "item" not "group" for generic support in other components. if (bp_current_user_can('bp_moderate')) { bp_update_is_item_admin(true, 'groups'); } else { bp_update_is_item_admin(groups_is_user_admin(bp_loggedin_user_id(), $this->current_group->id), 'groups'); } // If the user is not an admin, check if they are a moderator. if (!bp_is_item_admin()) { bp_update_is_item_mod(groups_is_user_mod(bp_loggedin_user_id(), $this->current_group->id), 'groups'); } // Is the logged in user a member of the group? if (is_user_logged_in() && groups_is_user_member(bp_loggedin_user_id(), $this->current_group->id)) { $this->current_group->is_user_member = true; } else { $this->current_group->is_user_member = false; } // Should this group be visible to the logged in user? if ('public' == $this->current_group->status || $this->current_group->is_user_member) { $this->current_group->is_visible = true; } else { $this->current_group->is_visible = false; } // If this is a private or hidden group, does the user have access? if ('private' == $this->current_group->status || 'hidden' == $this->current_group->status) { if ($this->current_group->is_user_member && is_user_logged_in() || bp_current_user_can('bp_moderate')) { $this->current_group->user_has_access = true; } else { $this->current_group->user_has_access = false; } } else { $this->current_group->user_has_access = true; } // Check once if the current group has a custom front template. $this->current_group->front_template = bp_groups_get_front_template($this->current_group); // Set current_group to 0 to prevent debug errors. } else { $this->current_group = 0; } /** * Filters the list of illegal groups names/slugs. * * @since 1.0.0 * * @param array $value Array of illegal group names/slugs. */ $this->forbidden_names = apply_filters('groups_forbidden_names', array('my-groups', 'create', 'invites', 'send-invites', 'forum', 'delete', 'add', 'admin', 'request-membership', 'members', 'settings', 'avatar', $this->slug, $this->root_slug)); // If the user was attempting to access a group, but no group by that name was found, 404. if (bp_is_groups_component() && empty($this->current_group) && bp_current_action() && !in_array(bp_current_action(), $this->forbidden_names)) { bp_do_404(); return; } /** * Filters the preconfigured groups creation steps. * * @since 1.1.0 * * @param array $value Array of preconfigured group creation steps. */ $this->group_creation_steps = apply_filters('groups_create_group_steps', array('group-details' => array('name' => _x('Details', 'Group screen nav', 'buddypress'), 'position' => 0), 'group-settings' => array('name' => _x('Settings', 'Group screen nav', 'buddypress'), 'position' => 10))); // If avatar uploads are not disabled, add avatar option. $disabled_avatar_uploads = (int) bp_disable_group_avatar_uploads(); if (!$disabled_avatar_uploads && $bp->avatar->show_avatars) { $this->group_creation_steps['group-avatar'] = array('name' => _x('Photo', 'Group screen nav', 'buddypress'), 'position' => 20); } if (bp_group_use_cover_image_header()) { $this->group_creation_steps['group-cover-image'] = array('name' => _x('Cover Image', 'Group screen nav', 'buddypress'), 'position' => 25); } // If friends component is active, add invitations. if (bp_is_active('friends')) { $this->group_creation_steps['group-invites'] = array('name' => _x('Invites', 'Group screen nav', 'buddypress'), 'position' => 30); } /** * Filters the list of valid groups statuses. * * @since 1.1.0 * * @param array $value Array of valid group statuses. */ $this->valid_status = apply_filters('groups_valid_status', array('public', 'private', 'hidden')); // Auto join group when non group member performs group activity. $this->auto_join = defined('BP_DISABLE_AUTO_GROUP_JOIN') && BP_DISABLE_AUTO_GROUP_JOIN ? false : true; }