groups->current_group && 'public' == $bp->groups->current_group->status ) || !$bp->groups->current_group ) { add_filter( 'get_topics_fields', 'groups_add_forum_fields_sql' ); add_filter( 'get_topics_index_hint', 'groups_add_forum_tables_sql' ); add_filter( 'get_topics_where', 'groups_add_forum_where_sql' ); } } add_filter( 'bbpress_init', 'groups_add_forum_privacy_sql' ); function groups_add_forum_fields_sql( $sql ) { return $sql . ', g.id as object_id, g.name as object_name, g.slug as object_slug'; } function groups_add_forum_tables_sql( $sql ) { global $bp; return ', ' . $bp->groups->table_name . ' AS g LEFT JOIN ' . $bp->groups->table_name_groupmeta . ' AS gm ON g.id = gm.group_id '; } function groups_add_forum_where_sql( $sql ) { global $bp; $bp->groups->filter_sql = ' AND ' . $sql; return "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id) AND g.status = 'public' AND " . $sql; } function groups_filter_bbpress_caps( $value, $cap, $args ) { global $bp; if ( is_site_admin() ) return true; if ( 'add_tag_to' == $cap ) if ( $bp->groups->current_group->user_has_access ) return true; if ( 'manage_forums' == $cap && is_user_logged_in() ) return true; return $value; } add_filter( 'bb_current_user_can', 'groups_filter_bbpress_caps', 10, 3 ); ?>