Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
09/11/2009 11:59:16 PM (17 years ago)
Author:
apeatling
Message:

Added support for global group forum listings and fixed a few forum admin glitches

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups/bp-groups-filters.php

    r1608 r1858  
    5757add_filter( 'groups_group_news_before_save', 'force_balance_tags' );
    5858
     59/**** Filters for group forums ****/
     60function groups_add_forum_privacy_sql() {
     61        global $bp;
     62       
     63        if ( !$bp->groups->current_group ) {
     64                add_filter( 'get_topics_fields', 'groups_add_forum_fields_sql' );
     65                add_filter( 'get_topics_index_hint', 'groups_add_forum_tables_sql' );
     66                add_filter( 'get_topics_where', 'groups_add_forum_where_sql' );
     67        }
     68}
     69add_filter( 'bbpress_init', 'groups_add_forum_privacy_sql' );
     70
     71function groups_add_forum_fields_sql( $sql ) {
     72        return $sql . ', g.id as object_id, g.name as object_name, g.slug as object_slug';
     73}
     74
     75function groups_add_forum_tables_sql( $sql ) {
     76        global $bp;
     77        return ', ' . $bp->groups->table_name . ' AS g LEFT JOIN ' . $bp->groups->table_name_groupmeta . ' AS gm ON g.id = gm.group_id ';
     78}
     79
     80function groups_add_forum_where_sql( $sql ) {
     81        global $bp;
     82       
     83        $bp->groups->filter_sql = ' AND ' . $sql;
     84        return "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id) AND g.status = 'public' AND " . $sql;
     85}
     86
     87function groups_filter_bbpress_caps( $value, $cap, $args ) {
     88        global $bp;
     89
     90        if ( is_site_admin() )
     91                return true;
     92       
     93        if ( 'add_tag_to' == $cap )
     94                if ( $bp->groups->current_group->user_has_access ) return true;
     95       
     96        if ( 'manage_forums' == $cap && is_user_logged_in() )
     97                return true;
     98       
     99        return $value;
     100}
     101add_filter( 'bb_current_user_can', 'groups_filter_bbpress_caps', 10, 3 );
     102
    59103?>
Note: See TracChangeset for help on using the changeset viewer.