Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
11/02/2009 07:54:21 PM (16 years ago)
Author:
apeatling
Message:

Merging 1.1 branch changes and syncing.

File:
1 edited

Legend:

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

    r2055 r2077  
    1414
    1515    var $user_dataset;
    16    
     16
    1717    var $admins;
    1818    var $total_member_count;
    1919    var $random_members;
    2020    var $latest_wire_posts;
    21    
     21
    2222    function bp_groups_group( $id = null, $single = false, $get_user_dataset = true ) {
    2323        if ( $id ) {
     
    2525            $this->populate( $get_user_dataset );
    2626        }
    27        
     27
    2828        if ( $single ) {
    2929            $this->populate_meta();
    3030        }
    3131    }
    32    
     32
    3333    function populate( $get_user_dataset ) {
    3434        global $wpdb, $bp;
     
    3636        $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} WHERE id = %d", $this->id );
    3737        $group = $wpdb->get_row($sql);
    38        
     38
    3939        if ( $group ) {
    4040            $this->id = $group->id;
     
    4949            $this->date_created = strtotime($group->date_created);
    5050            $this->total_member_count = groups_get_groupmeta( $this->id, 'total_member_count' );
    51            
     51
    5252            if ( $get_user_dataset ) {
    5353                $this->user_dataset = $this->get_user_dataset();
    54                
     54
    5555                //if ( !$this->total_member_count ) {
    5656                $this->total_member_count = count( $this->user_dataset );
     
    5858                //}
    5959            }
    60         }   
    61     }
    62    
     60        }
     61    }
     62
    6363    function populate_meta() {
    6464        if ( $this->id ) {
     
    6767        }
    6868    }
    69    
     69
    7070    function save() {
    7171        global $wpdb, $bp;
    72        
     72
    7373        $this->creator_id = apply_filters( 'groups_group_creator_id_before_save', $this->creator_id, $this->id );
    7474        $this->name = apply_filters( 'groups_group_name_before_save', $this->name, $this->id );
     
    8282
    8383        do_action( 'groups_group_before_save', $this );
    84        
     84
    8585        if ( $this->id ) {
    86             $sql = $wpdb->prepare( 
    87                 "UPDATE {$bp->groups->table_name} SET 
    88                     creator_id = %d, 
    89                     name = %s, 
    90                     slug = %s, 
    91                     description = %s, 
    92                     news = %s, 
    93                     status = %s, 
    94                     enable_wire = %d, 
    95                     enable_forum = %d, 
     86            $sql = $wpdb->prepare(
     87                "UPDATE {$bp->groups->table_name} SET
     88                    creator_id = %d,
     89                    name = %s,
     90                    slug = %s,
     91                    description = %s,
     92                    news = %s,
     93                    status = %s,
     94                    enable_wire = %d,
     95                    enable_forum = %d,
    9696                    date_created = FROM_UNIXTIME(%d)
    9797                WHERE
    9898                    id = %d
    9999                ",
    100                     $this->creator_id, 
    101                     $this->name, 
    102                     $this->slug, 
    103                     $this->description, 
    104                     $this->news, 
    105                     $this->status, 
    106                     $this->enable_wire, 
    107                     $this->enable_forum, 
     100                    $this->creator_id,
     101                    $this->name,
     102                    $this->slug,
     103                    $this->description,
     104                    $this->news,
     105                    $this->status,
     106                    $this->enable_wire,
     107                    $this->enable_forum,
    108108                    $this->date_created,
    109109                    $this->id
    110110            );
    111111        } else {
    112             $sql = $wpdb->prepare( 
    113                 "INSERT INTO {$bp->groups->table_name} ( 
     112            $sql = $wpdb->prepare(
     113                "INSERT INTO {$bp->groups->table_name} (
    114114                    creator_id,
    115115                    name,
     
    124124                    %d, %s, %s, %s, %s, %s, %d, %d, FROM_UNIXTIME(%d)
    125125                )",
    126                     $this->creator_id, 
    127                     $this->name, 
    128                     $this->slug, 
    129                     $this->description, 
    130                     $this->news, 
    131                     $this->status, 
    132                     $this->enable_wire, 
     126                    $this->creator_id,
     127                    $this->name,
     128                    $this->slug,
     129                    $this->description,
     130                    $this->news,
     131                    $this->status,
     132                    $this->enable_wire,
    133133                    $this->enable_forum,
    134134                    $this->date_created
    135135            );
    136136        }
    137        
     137
    138138        if ( false === $wpdb->query($sql) )
    139139            return false;
    140        
     140
    141141        if ( !$this->id ) {
    142142            $this->id = $wpdb->insert_id;
     
    144144
    145145        do_action( 'groups_group_after_save', $this );
    146        
     146
    147147        return true;
    148148    }
    149    
     149
    150150    function get_user_dataset() {
    151151        global $wpdb, $bp;
    152        
     152
    153153        return $wpdb->get_results( $wpdb->prepare( "SELECT user_id, is_admin, inviter_id, user_title, is_mod FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 AND is_banned = 0 ORDER BY rand()", $this->id ) );
    154154    }
    155        
     155
    156156    function get_administrators() {
    157157        for ( $i = 0; $i < count($this->user_dataset); $i++ ) {
    158158            if ( $this->user_dataset[$i]->is_admin )
    159159                $admins[] = new BP_Groups_Member( $this->user_dataset[$i]->user_id, $this->id );
    160         }   
    161        
     160        }
     161
    162162        return $admins;
    163163    }
     
    165165    function get_random_members() {
    166166        $total_randoms = ( $this->total_member_count > 5 ) ? 5 : $this->total_member_count;
    167        
     167
    168168        for ( $i = 0; $i < $total_randoms; $i++ ) {
    169169            if ( !(int)$this->user_dataset[$i]->is_banned )
     
    172172        return $users;
    173173    }
    174    
     174
    175175    function is_member() {
    176176        global $bp;
    177        
     177
    178178        for ( $i = 0; $i < count($this->user_dataset); $i++ ) {
    179179            if ( $this->user_dataset[$i]->user_id == $bp->loggedin_user->id ) {
    180180                return true;
    181181            }
    182         }   
    183        
     182        }
     183
    184184        return false;
    185185    }
    186    
     186
    187187    function delete() {
    188188        global $wpdb, $bp;
    189        
     189
    190190        // Delete groupmeta for the group
    191191        groups_delete_groupmeta( $this->id );
     
    194194        for ( $i = 0; $i < count($this->user_dataset); $i++ ) {
    195195            $user = $this->user_dataset[$i];
    196            
     196
    197197            $total_count = get_usermeta( $user->user_id, 'total_group_count' );
    198            
     198
    199199            if ( $total_count != '' ) {
    200200                update_usermeta( $user->user_id, 'total_group_count', (int)$total_count - 1 );
    201201            }
    202            
     202
    203203            // Now delete the group member record
    204204            BP_Groups_Member::delete( $user->user_id, $this->id, false );
    205205        }
    206        
     206
    207207        // Delete the wire posts for this group if the wire is installed
    208208        if ( function_exists('bp_wire_install') ) {
    209209            BP_Wire_Post::delete_all_for_item( $this->id, $bp->groups->table_name_wire );
    210210        }
    211                
     211
    212212        // Finally remove the group entry from the DB
    213213        if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name} WHERE id = %d", $this->id ) ) )
     
    216216        return true;
    217217    }
    218    
     218
    219219
    220220    /* Static Functions */
    221        
     221
    222222    function group_exists( $slug, $table_name = false ) {
    223223        global $wpdb, $bp;
    224        
     224
    225225        if ( !$table_name )
    226226            $table_name = $bp->groups->table_name;
    227        
     227
    228228        if ( !$slug )
    229229            return false;
    230            
     230
    231231        return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$table_name} WHERE slug = %s", $slug ) );
    232232    }
     
    240240        return $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d and is_confirmed = 0 AND inviter_id = %d", $group_id, $user_id ) );
    241241    }
    242    
     242
    243243    function filter_user_groups( $filter, $user_id = false, $order = false, $limit = null, $page = null ) {
    244244        global $wpdb, $bp;
    245        
     245
    246246        if ( !$user_id )
    247247            $user_id = $bp->displayed_user->id;
    248        
     248
    249249        $filter = like_escape( $wpdb->escape( $filter ) );
    250        
    251         if ( $limit && $page )
    252             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    253        
     250
     251        if ( $limit && $page )
     252            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     253
    254254        // Get all the group ids for the current user's groups.
    255255        $gids = BP_Groups_Member::get_group_ids( $user_id );
    256        
     256
    257257        if ( !$gids['groups'] )
    258258            return false;
    259            
     259
    260260        $gids = implode( ',', $gids['groups'] );
    261        
     261
    262262        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE ( name LIKE '{$filter}%%' OR description LIKE '{$filter}%%' ) AND id IN ({$gids}) {$pag_sql}" ) );
    263263        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name} WHERE ( name LIKE '{$filter}%%' OR description LIKE '{$filter}%%' ) AND id IN ({$gids})" ) );
    264        
    265         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    266     }
    267    
     264
     265        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     266    }
     267
    268268    function search_groups( $filter, $limit = null, $page = null, $sort_by = false, $order = false ) {
    269269        global $wpdb, $bp;
    270        
     270
    271271        $filter = like_escape( $wpdb->escape( $filter ) );
    272        
     272
    273273        if ( $limit && $page )
    274274            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    279279            $order_sql = "ORDER BY $sort_by $order";
    280280        }
    281        
     281
    282282        if ( !is_site_admin() )
    283283            $hidden_sql = "AND status != 'hidden'";
     
    285285        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE ( name LIKE '%%$filter%%' OR description LIKE '%%$filter%%' ) {$hidden_sql} {$order_sql} {$pag_sql}" ) );
    286286        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name} WHERE ( name LIKE '%%$filter%%' OR description LIKE '%%$filter%%' ) {$hidden_sq}" ) );
    287        
    288         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    289     }
    290    
     287
     288        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     289    }
     290
    291291    function check_slug( $slug ) {
    292292        global $wpdb, $bp;
    293        
    294         return $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$bp->groups->table_name} WHERE slug = %s", $slug ) );     
    295     }
    296    
     293
     294        return $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$bp->groups->table_name} WHERE slug = %s", $slug ) );
     295    }
     296
    297297    function get_slug( $group_id ) {
    298298        global $wpdb, $bp;
    299        
    300         return $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$bp->groups->table_name} WHERE id = %d", $group_id ) );       
    301     }
    302    
     299
     300        return $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$bp->groups->table_name} WHERE id = %d", $group_id ) );
     301    }
     302
    303303    function has_members( $group_id ) {
    304304        global $wpdb, $bp;
    305        
    306         $members = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d", $group_id ) );                       
     305
     306        $members = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d", $group_id ) );
    307307
    308308        if ( !$members )
    309309            return false;
    310        
     310
    311311        return true;
    312312    }
    313    
     313
    314314    function has_membership_requests( $group_id ) {
    315315        global $wpdb, $bp;
    316        
    317         return $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0", $group_id ) );                       
    318     }
    319    
     316
     317        return $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0", $group_id ) );
     318    }
     319
    320320    function get_membership_requests( $group_id, $limit = null, $page = null ) {
    321321        global $wpdb, $bp;
    322        
     322
    323323        if ( $limit && $page ) {
    324324            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    325325        }
    326        
     326
    327327        $paged_requests = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0{$pag_sql}", $group_id ) );
    328328        $total_requests = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) );
     
    330330        return array( 'requests' => $paged_requests, 'total' => $total_requests );
    331331    }
    332    
     332
    333333    function get_newest( $limit = null, $page = null ) {
    334334        global $wpdb, $bp;
    335                
    336         if ( $limit && $page )
    337             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    338        
     335
     336        if ( $limit && $page )
     337            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     338
    339339        if ( !is_site_admin() )
    340340            $hidden_sql = "WHERE status != 'hidden'";
    341        
     341
    342342        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} {$hidden_sql} ORDER BY date_created DESC {$pag_sql}" ) );
    343343        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name} {$hidden_sql} ORDER BY date_created DESC", $limit ) );
     
    345345        return array( 'groups' => $paged_groups, 'total' => $total_groups );
    346346    }
    347    
     347
    348348    function get_active( $limit = null, $page = null ) {
    349349        global $wpdb, $bp;
    350        
     350
    351351        if ( $limit && $page )
    352352            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    354354        if ( !is_site_admin() )
    355355            $hidden_sql = "AND g.status != 'hidden'";
    356        
     356
    357357        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT group_id FROM {$bp->groups->table_name_groupmeta} gm, {$bp->groups->table_name} g WHERE g.id = gm.group_id {$hidden_sql} AND gm.meta_key = 'last_activity' ORDER BY CONVERT(gm.meta_value, SIGNED) DESC {$pag_sql}" ) );
    358358        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(group_id) FROM {$bp->groups->table_name_groupmeta} gm, {$bp->groups->table_name} g WHERE g.id = gm.group_id {$hidden_sql} AND gm.meta_key = 'last_activity' ORDER BY CONVERT(gm.meta_value, SIGNED) DESC" ) );
     
    360360        return array( 'groups' => $paged_groups, 'total' => $total_groups );
    361361    }
    362    
     362
    363363    function get_popular( $limit = null, $page = null ) {
    364364        global $wpdb, $bp;
    365        
     365
    366366        if ( $limit && $page ) {
    367367            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    370370        if ( !is_site_admin() )
    371371            $hidden_sql = "AND g.status != 'hidden'";
    372            
     372
    373373        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT gm.group_id FROM {$bp->groups->table_name_groupmeta} gm, {$bp->groups->table_name} g WHERE g.id = gm.group_id {$hidden_sql} AND gm.meta_key = 'total_member_count' ORDER BY CONVERT(gm.meta_value, SIGNED) DESC {$pag_sql}" ) );
    374374        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(gm.group_id) FROM {$bp->groups->table_name_groupmeta} gm, {$bp->groups->table_name} g WHERE g.id = gm.group_id {$hidden_sql} AND gm.meta_key = 'total_member_count' ORDER BY CONVERT(gm.meta_value, SIGNED) DESC" ) );
     
    376376        return array( 'groups' => $paged_groups, 'total' => $total_groups );
    377377    }
    378    
     378
    379379    function get_alphabetically( $limit = null, $page = null ) {
    380380        global $wpdb, $bp;
    381                
    382         if ( $limit && $page )
    383             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    384        
     381
     382        if ( $limit && $page )
     383            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     384
    385385        if ( !is_site_admin() )
    386386            $hidden_sql = "WHERE status != 'hidden'";
    387        
     387
    388388        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} {$hidden_sql} ORDER BY name ASC {$pag_sql}" ) );
    389389        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name} {$hidden_sql} ORDER BY name ASC", $limit ) );
     
    391391        return array( 'groups' => $paged_groups, 'total' => $total_groups );
    392392    }
    393    
     393
    394394    function get_by_most_forum_topics( $limit = null, $page = null ) {
    395395        global $wpdb, $bp, $bbdb;
    396        
     396
    397397        if ( $limit && $page ) {
    398398            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    402402        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT COUNT(gm.group_id) FROM {$bbdb->forums} AS f, {$bp->groups->table_name} AS g LEFT JOIN {$bp->groups->table_name_groupmeta} AS gm ON g.id = gm.group_id WHERE (gm.meta_key = 'forum_id' AND gm.meta_value = f.forum_id) AND g.status = 'public' ORDER BY f.topics DESC" ) );
    403403
    404         return array( 'groups' => $paged_groups, 'total' => $total_groups );       
     404        return array( 'groups' => $paged_groups, 'total' => $total_groups );
    405405    }
    406406
    407407    function get_by_most_forum_posts( $limit = null, $page = null ) {
    408408        global $wpdb, $bp, $bbdb;
    409        
     409
    410410        if ( $limit && $page ) {
    411411            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    412412        }
    413            
     413
    414414        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT gm.group_id FROM {$bbdb->forums} AS f, {$bp->groups->table_name} AS g LEFT JOIN {$bp->groups->table_name_groupmeta} AS gm ON g.id = gm.group_id WHERE (gm.meta_key = 'forum_id' AND gm.meta_value = f.forum_id) AND g.status = 'public' ORDER BY f.posts DESC {$pag_sql}" ) );
    415415        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT COUNT(gm.group_id) FROM {$bbdb->forums} AS f, {$bp->groups->table_name} AS g LEFT JOIN {$bp->groups->table_name_groupmeta} AS gm ON g.id = gm.group_id WHERE (gm.meta_key = 'forum_id' AND gm.meta_value = f.forum_id) AND g.status = 'public' ORDER BY f.posts DESC" ) );
    416416
    417         return array( 'groups' => $paged_groups, 'total' => $total_groups );       
    418     }
    419 
    420    
     417        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     418    }
     419
     420
    421421    function get_all( $limit = null, $page = null, $only_public = true, $sort_by = false, $order = false ) {
    422422        global $wpdb, $bp;
    423        
     423
    424424        if ( $only_public )
    425425            $public_sql = $wpdb->prepare( " WHERE g.status = 'public'" );
    426        
     426
    427427        if ( !is_site_admin() )
    428428            $hidden_sql = $wpdb->prepare( " AND g.status != 'hidden'");
    429        
    430         if ( $limit && $page )
    431             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    432        
     429
     430        if ( $limit && $page )
     431            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     432
    433433        if ( $sort_by && $order ) {
    434434            $sort_by = $wpdb->escape( $sort_by );
    435435            $order = $wpdb->escape( $order );
    436436            $order_sql = "ORDER BY g.$sort_by $order";
    437            
     437
    438438            switch ( $sort_by ) {
    439439                default:
    440                     $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$public_sql} {$hidden_sql} {$order_sql} {$pag_sql}" );   
     440                    $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$public_sql} {$hidden_sql} {$order_sql} {$pag_sql}" );
    441441                    break;
    442442                case 'members':
    443                     $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'total_member_count' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" ); 
     443                    $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'total_member_count' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
    444444                    break;
    445445                case 'last_active':
    446                     $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'last_activity' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" ); 
     446                    $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'last_activity' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
    447447                    break;
    448448            }
    449449        } else {
    450             $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$public_sql} {$hidden_sql} {$order_sql} {$pag_sql}" );   
    451         }
    452        
     450            $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$public_sql} {$hidden_sql} {$order_sql} {$pag_sql}" );
     451        }
     452
    453453        return $wpdb->get_results($sql);
    454454    }
    455    
     455
    456456    function get_by_letter( $letter, $limit = null, $page = null ) {
    457457        global $wpdb, $bp;
    458        
     458
    459459        if ( strlen($letter) > 1 || is_numeric($letter) || !$letter )
    460460            return false;
    461        
     461
    462462        if ( !is_site_admin() )
    463463            $hidden_sql = $wpdb->prepare( " AND status != 'hidden'");
    464        
     464
    465465        $letter = like_escape( $wpdb->escape( $letter ) );
    466466
     
    469469            $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->groups->table_name} WHERE name LIKE '$letter%%' {$hidden_sql} ORDER BY name ASC" ) );
    470470        }
    471                
     471
    472472        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE name LIKE '$letter%%' {$hidden_sql} ORDER BY name ASC {$pag_sql}" ) );
    473        
    474         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    475     }
    476    
     473
     474        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     475    }
     476
    477477    function get_random( $limit = null, $page = null ) {
    478478        global $wpdb, $bp;
     
    485485            $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT id as group_id, slug FROM {$bp->groups->table_name} WHERE status = 'public' {$hidden_sql} ORDER BY rand()" ) );
    486486        }
    487        
    488         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id, slug FROM {$bp->groups->table_name} WHERE status = 'public' {$hidden_sql} ORDER BY rand() {$pag_sql}" ) );     
    489        
    490         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    491     }
    492    
     487
     488        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id, slug FROM {$bp->groups->table_name} WHERE status = 'public' {$hidden_sql} ORDER BY rand() {$pag_sql}" ) );
     489
     490        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     491    }
     492
    493493    function delete_all_invites( $group_id ) {
    494494        global $wpdb, $bp;
    495        
     495
    496496        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE group_id = %d AND invite_sent = 1", $group_id ) );
    497497    }
    498    
     498
    499499    function get_global_forum_topic_count( $type ) {
    500500        global $bbdb, $wpdb, $bp;
    501        
     501
    502502        if ( 'unreplied' == $type )
    503503            $bp->groups->filter_sql = ' AND t.topic_posts = 1';
    504        
     504
    505505        $extra_sql = apply_filters( 'groups_total_public_forum_topic_count', $bp->groups->filter_sql, $type );
    506506
     
    522522    var $comments;
    523523    var $invite_sent;
    524    
     524
    525525    var $user;
    526    
     526
    527527    function bp_groups_member( $user_id = false, $group_id = false, $id = false, $populate = true ) {
    528528        if ( $user_id && $group_id && !$id ) {
    529529            $this->user_id = $user_id;
    530530            $this->group_id = $group_id;
    531            
     531
    532532            if ( $populate )
    533533                $this->populate();
    534534        }
    535        
     535
    536536        if ( $id ) {
    537537            $this->id = $id;
    538            
     538
    539539            if ( $populate )
    540540                $this->populate();
    541         }       
    542     }
    543    
     541        }
     542    }
     543
    544544    function populate() {
    545545        global $wpdb, $bp;
    546        
     546
    547547        if ( $this->user_id && $this->group_id && !$this->id )
    548548            $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $this->user_id, $this->group_id );
    549        
     549
    550550        if ( $this->id )
    551551            $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE id = %d", $this->id );
    552            
     552
    553553        $member = $wpdb->get_row($sql);
    554        
     554
    555555        if ( $member ) {
    556556            $this->id = $member->id;
     
    566566            $this->comments = $member->comments;
    567567            $this->invite_sent = $member->invite_sent;
    568            
     568
    569569            $this->user = new BP_Core_User( $this->user_id );
    570570        }
    571571    }
    572    
     572
    573573    function save() {
    574574        global $wpdb, $bp;
    575        
     575
    576576        $this->user_id = apply_filters( 'groups_member_user_id_before_save', $this->user_id, $this->id );
    577577        $this->group_id = apply_filters( 'groups_member_group_id_before_save', $this->group_id, $this->id );
     
    585585        $this->comments = apply_filters( 'groups_member_comments_before_save', $this->comments, $this->id );
    586586        $this->invite_sent = apply_filters( 'groups_member_invite_sent_before_save', $this->invite_sent, $this->id );
    587        
     587
    588588        do_action( 'groups_member_before_save', $this );
    589        
     589
    590590        if ( $this->id ) {
    591591            $sql = $wpdb->prepare( "UPDATE {$bp->groups->table_name_members} SET inviter_id = %d, is_admin = %d, is_mod = %d, is_banned = %d, user_title = %s, date_modified = FROM_UNIXTIME(%d), is_confirmed = %d, comments = %s, invite_sent = %d WHERE id = %d", $this->inviter_id, $this->is_admin, $this->is_mod, $this->is_banned, $this->user_title, $this->date_modified, $this->is_confirmed, $this->comments, $this->invite_sent, $this->id );
     
    596596        if ( !$wpdb->query($sql) )
    597597            return false;
    598        
     598
    599599        $this->id = $wpdb->insert_id;
    600        
     600
    601601        do_action( 'groups_member_after_save', $this );
    602        
     602
    603603        return true;
    604604    }
    605    
     605
    606606    function promote( $status = 'mod' ) {
    607607        if ( 'mod' == $status ) {
     
    610610            $this->user_title = __( 'Group Mod', 'buddypress' );
    611611        }
    612        
     612
    613613        if ( 'admin' == $status ) {
    614614            $this->is_admin = 1;
     
    616616            $this->user_title = __( 'Group Admin', 'buddypress' );
    617617        }
    618        
     618
    619619        return $this->save();
    620620    }
    621    
    622     function demote() {     
     621
     622    function demote() {
    623623        $this->is_mod = 0;
    624624        $this->is_admin = 0;
    625625        $this->user_title = false;
    626        
    627         return $this->save();       
    628     }
    629    
     626
     627        return $this->save();
     628    }
     629
    630630    function ban() {
    631         if ( $this->is_admin ) 
    632             return false;
    633        
     631        if ( $this->is_admin )
     632            return false;
     633
    634634        $this->is_mod = 0;
    635635        $this->is_banned = 1;
    636        
     636
    637637        groups_update_groupmeta( $this->group_id, 'total_member_count', ( (int) groups_get_groupmeta( $this->group_id, 'total_member_count' ) - 1 ) );
    638        
    639         return $this->save();       
    640     }
    641    
     638
     639        return $this->save();
     640    }
     641
    642642    function unban() {
    643         if ( $this->is_admin ) 
    644             return false;
    645        
     643        if ( $this->is_admin )
     644            return false;
     645
    646646        $this->is_banned = 0;
    647647
    648648        groups_update_groupmeta( $this->group_id, 'total_member_count', ( (int) groups_get_groupmeta( $this->group_id, 'total_member_count' ) + 1 ) );
    649        
    650         return $this->save();       
    651     }
    652    
     649
     650        return $this->save();
     651    }
     652
    653653    function accept_invite() {
    654654        $this->inviter_id = 0;
     
    656656        $this->date_modified = time();
    657657    }
    658    
     658
    659659    function accept_request() {
    660660        $this->is_confirmed = 1;
    661         $this->date_modified = time();     
    662     }
    663        
     661        $this->date_modified = time();
     662    }
     663
    664664    /* Static Functions */
    665665
     
    668668
    669669        $delete_result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $user_id, $group_id ) );
    670        
     670
    671671        return $delete_result;
    672672    }
    673    
     673
    674674    function get_group_ids( $user_id, $limit = false, $page = false ) {
    675675        global $wpdb, $bp;
     
    677677        if ( $limit && $page )
    678678            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    679        
     679
    680680        // If the user is logged in and viewing their own groups, we can show hidden and private groupss
    681681        if ( bp_is_home() ) {
    682             $group_sql = $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND inviter_id = 0 AND is_banned = 0{$pag_sql}", $user_id );   
    683             $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND inviter_id = 0 AND is_banned = 0", $user_id ) ); 
     682            $group_sql = $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND inviter_id = 0 AND is_banned = 0{$pag_sql}", $user_id );
     683            $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND inviter_id = 0 AND is_banned = 0", $user_id ) );
    684684        } else {
    685             $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0{$pag_sql}", $user_id ); 
     685            $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0{$pag_sql}", $user_id );
    686686            $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0", $user_id ) );
    687687        }
    688        
     688
    689689        $groups = $wpdb->get_col( $group_sql );
    690690
    691691        return array( 'groups' => $groups, 'total' => (int) $total_groups );
    692692    }
    693    
     693
    694694    function get_recently_joined( $user_id, $limit = false, $page = false, $filter = false ) {
    695695        global $wpdb, $bp;
     
    700700        if ( $filter ) {
    701701            $filter = like_escape( $wpdb->escape( $filter ) );
    702             $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";         
     702            $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";
    703703        }
    704704
    705705        if ( !bp_is_home() )
    706706            $hidden_sql = " AND g.status != 'hidden'";
    707        
    708         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC {$pag_sql}", $user_id ) ); 
    709         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC", $user_id ) ); 
    710 
    711         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    712     }
    713    
     707
     708        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC {$pag_sql}", $user_id ) );
     709        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC", $user_id ) );
     710
     711        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     712    }
     713
    714714    function get_most_popular( $user_id, $limit = false, $page = false, $filter = false ) {
    715715        global $wpdb, $bp;
     
    720720        if ( $filter ) {
    721721            like_escape( $wpdb->escape( $filter ) );
    722             $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";         
     722            $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";
    723723        }
    724724
     
    726726            $hidden_sql = " AND g.status != 'hidden'";
    727727
    728         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id AND gm.meta_key = 'total_member_count' ORDER BY CONVERT( gm.meta_value, SIGNED ) DESC {$pag_sql}", $user_id ) ); 
    729         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id AND gm.meta_key = 'total_member_count' ORDER BY CONVERT( gm.meta_value, SIGNED ) DESC", $user_id ) ); 
    730        
    731         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    732     }
    733    
     728        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id AND gm.meta_key = 'total_member_count' ORDER BY CONVERT( gm.meta_value, SIGNED ) DESC {$pag_sql}", $user_id ) );
     729        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_confirmed = 1 LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id AND gm.meta_key = 'total_member_count' ORDER BY CONVERT( gm.meta_value, SIGNED ) DESC", $user_id ) );
     730
     731        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     732    }
     733
    734734    function get_recently_active( $user_id, $limit = false, $page = false, $filter = false ) {
    735735        global $wpdb, $bp;
    736    
    737         if ( $limit && $page )
    738             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    739            
     736
     737        if ( $limit && $page )
     738            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     739
    740740        if ( $filter ) {
    741741            $filter = like_escape( $wpdb->escape( $filter ) );
    742             $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";         
     742            $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";
    743743        }
    744744
    745745        if ( !bp_is_home() )
    746746            $hidden_sql = " AND g.status != 'hidden'";
    747        
    748         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY gm.meta_value DESC {$pag_sql}", $user_id ) ); 
    749         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY gm.meta_value DESC", $user_id ) ); 
    750 
    751         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    752     }
    753    
     747
     748        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY gm.meta_value DESC {$pag_sql}", $user_id ) );
     749        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY gm.meta_value DESC", $user_id ) );
     750
     751        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     752    }
     753
    754754    function get_alphabetically( $user_id, $limit = false, $page = false, $filter = false ) {
    755755        global $wpdb, $bp;
    756    
     756
    757757        if ( $limit && $page )
    758758            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    760760        if ( $filter ) {
    761761            $filter = like_escape( $wpdb->escape( $filter ) );
    762             $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";         
     762            $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";
    763763        }
    764764
    765765        if ( !bp_is_home() )
    766             $hidden_sql = " AND g.status != 'hidden'"; 
    767 
    768         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY g.name ASC {$pag_sql}", $user_id ) ); 
    769         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY g.name ASC", $user_id ) ); 
    770        
    771         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    772     }
    773    
     766            $hidden_sql = " AND g.status != 'hidden'";
     767
     768        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY g.name ASC {$pag_sql}", $user_id ) );
     769        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY g.name ASC", $user_id ) );
     770
     771        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     772    }
     773
    774774    function get_is_admin_of( $user_id, $limit = false, $page = false, $filter = false ) {
    775775        global $wpdb, $bp;
    776    
     776
    777777        if ( $limit && $page )
    778778            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    780780        if ( $filter ) {
    781781            $filter = like_escape( $wpdb->escape( $filter ) );
    782             $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";         
     782            $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";
    783783        }
    784784
    785785        if ( !bp_is_home() )
    786             $hidden_sql = " AND g.status != 'hidden'"; 
    787        
    788         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC {$pag_sql}", $user_id ) );   
    789         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC", $user_id ) );   
    790        
    791         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    792     }
    793    
     786            $hidden_sql = " AND g.status != 'hidden'";
     787
     788        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC {$pag_sql}", $user_id ) );
     789        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC", $user_id ) );
     790
     791        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     792    }
     793
    794794    function get_is_mod_of( $user_id, $limit = false, $page = false, $filter = false ) {
    795795        global $wpdb, $bp;
    796    
     796
    797797        if ( $limit && $page )
    798798            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     
    800800        if ( $filter ) {
    801801            $filter = like_escape( $wpdb->escape( $filter ) );
    802             $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";         
     802            $filter_sql = " AND ( g.name LIKE '{$filter}%%' OR g.description LIKE '{$filter}%%' )";
    803803        }
    804804
    805805        if ( !bp_is_home() )
    806             $hidden_sql = " AND g.status != 'hidden'";         
    807 
    808         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC {$pag_sql}", $user_id ) ); 
    809         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC", $user_id ) ); 
    810        
    811         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    812     }
    813    
     806            $hidden_sql = " AND g.status != 'hidden'";
     807
     808        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC {$pag_sql}", $user_id ) );
     809        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC", $user_id ) );
     810
     811        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     812    }
     813
    814814    function total_group_count( $user_id = false ) {
    815815        global $bp, $wpdb;
    816        
     816
    817817        if ( !$user_id )
    818818            $user_id = $bp->displayed_user->id;
    819            
     819
    820820        if ( bp_is_home() ) {
    821             return $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND inviter_id = 0 AND is_banned = 0", $user_id ) );         
     821            return $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND inviter_id = 0 AND is_banned = 0", $user_id ) );
    822822        } else {
    823             return $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0", $user_id ) );           
    824         }
    825     }
    826    
     823            return $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0", $user_id ) );
     824        }
     825    }
     826
    827827    function get_invites( $user_id ) {
    828828        global $wpdb, $bp;
    829        
     829
    830830        $group_ids = $wpdb->get_results( $wpdb->prepare( "SELECT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d and is_confirmed = 0 AND inviter_id != 0 AND invite_sent = 1", $user_id ) );
    831        
     831
    832832        return $group_ids;
    833833    }
    834    
     834
    835835    function check_has_invite( $user_id, $group_id ) {
    836836        global $wpdb, $bp;
    837        
     837
    838838        if ( !$user_id )
    839839            return false;
    840            
    841         return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0 AND invite_sent = 1", $user_id, $group_id ) );       
    842     }
    843    
     840
     841        return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0 AND invite_sent = 1", $user_id, $group_id ) );
     842    }
     843
    844844    function delete_invite( $user_id, $group_id ) {
    845845        global $wpdb, $bp;
    846        
     846
    847847        if ( !$user_id )
    848848            return false;
    849        
    850         return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0 AND invite_sent = 1", $user_id, $group_id ) );               
    851     }
    852    
     849
     850        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0 AND invite_sent = 1", $user_id, $group_id ) );
     851    }
     852
    853853    function check_is_admin( $user_id, $group_id ) {
    854854        global $wpdb, $bp;
    855        
     855
    856856        if ( !$user_id )
    857857            return false;
    858        
     858
    859859        return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_admin = 1 AND is_banned = 0", $user_id, $group_id ) );
    860860    }
    861    
     861
    862862    function check_is_mod( $user_id, $group_id ) {
    863863        global $wpdb, $bp;
    864        
     864
    865865        if ( !$user_id )
    866866            return false;
    867                
     867
    868868        return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_mod = 1 AND is_banned = 0", $user_id, $group_id ) );
    869869    }
    870    
     870
    871871    function check_is_member( $user_id, $group_id ) {
    872872        global $wpdb, $bp;
    873        
     873
    874874        if ( !$user_id )
    875875            return false;
    876        
    877         return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 1 AND is_banned = 0", $user_id, $group_id ) );   
    878     }
    879    
     876
     877        return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 1 AND is_banned = 0", $user_id, $group_id ) );
     878    }
     879
    880880    function check_is_banned( $user_id, $group_id ) {
    881881        global $wpdb, $bp;
    882        
     882
    883883        if ( !$user_id )
    884884            return false;
    885        
     885
    886886        return $wpdb->get_var( $wpdb->prepare( "SELECT is_banned FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $user_id, $group_id ) );
    887887    }
    888    
     888
    889889    function check_for_membership_request( $user_id, $group_id ) {
    890890        global $wpdb, $bp;
    891        
     891
    892892        if ( !$user_id )
    893893            return false;
    894        
    895         return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND is_banned = 0 AND inviter_id = 0", $user_id, $group_id ) );   
    896     }
    897    
     894
     895        return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND is_banned = 0 AND inviter_id = 0", $user_id, $group_id ) );
     896    }
     897
    898898    function get_random_groups( $user_id, $total_groups = 5 ) {
    899899        global $wpdb, $bp;
    900        
     900
    901901        // If the user is logged in and viewing their random groups, we can show hidden and private groups
    902902        if ( bp_is_home() ) {
    903903            return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0 ORDER BY rand() LIMIT $total_groups", $user_id ) );
    904904        } else {
    905             return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT $total_groups", $user_id ) );         
    906         }
    907     }
    908    
     905            return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT $total_groups", $user_id ) );
     906        }
     907    }
     908
    909909    function get_group_administrator_ids( $group_id ) {
    910910        global $bp, $wpdb;
    911        
     911
    912912        return $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_admin = 1 AND is_banned = 0", $group_id ) );
    913913    }
    914    
     914
    915915    function get_group_moderator_ids( $group_id ) {
    916916        global $bp, $wpdb;
     
    918918        return $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_mod = 1 AND is_banned = 0", $group_id ) );
    919919    }
    920    
     920
    921921    function get_all_membership_request_user_ids( $group_id ) {
    922922        global $bp, $wpdb;
    923923
    924         return $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) );     
    925     }
    926    
     924        return $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) );
     925    }
     926
    927927    function get_all_for_group( $group_id, $limit = false, $page = false, $exclude_admins_mods = true, $exclude_banned = true ) {
    928928        global $bp, $wpdb;
    929        
     929
    930930        if ( $limit && $page )
    931931            $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    932        
     932
    933933        if ( $exclude_admins_mods )
    934934            $exclude_sql = $wpdb->prepare( "AND is_admin = 0 AND is_mod = 0" );
    935        
     935
    936936        if ( $exclude_banned )
    937937            $banned_sql = $wpdb->prepare( " AND is_banned = 0" );
    938        
     938
    939939        $members = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 {$banned_sql} {$exclude_sql} {$pag_sql}", $group_id ) );
    940940
    941941        if ( !$members )
    942942            return false;
    943        
    944         if ( !isset($pag_sql) ) 
     943
     944        if ( !isset($pag_sql) )
    945945            $total_member_count = count($members);
    946946        else
    947947            $total_member_count = $wpdb->get_var( $wpdb->prepare( "SELECT count(user_id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 {$banned_sql} {$exclude_sql}", $group_id ) );
    948    
     948
    949949        return array( 'members' => $members, 'count' => $total_member_count );
    950950    }
    951    
     951
    952952    function delete_all_for_user( $user_id ) {
    953953        global $wpdb, $bp;
    954        
    955         return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id ) );     
     954
     955        return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id ) );
    956956    }
    957957}
     
    959959/**
    960960 * API for creating group extensions without having to hardcode the content into
    961  * the theme. 
     961 * the theme.
    962962 *
    963963 * This class must be extended for each group extension and the following methods overridden:
    964  * 
     964 *
    965965 * BP_Group_Extension::widget_display(), BP_Group_Extension::display(),
    966966 * BP_Group_Extension::edit_screen_save(), BP_Group_Extension::edit_screen(),
     
    974974    var $name = false;
    975975    var $slug = false;
    976    
     976
    977977    /* Will this extension be visible to non-members of a group? Options: public/private */
    978978    var $visibility = 'public';
    979    
     979
    980980    var $create_step_position = 81;
    981981    var $nav_item_position = 81;
    982    
     982
    983983    var $enable_create_step = true;
    984984    var $enable_nav_item = true;
    985985    var $enable_edit_item = true;
    986    
     986
    987987    var $nav_item_name = false;
    988    
     988
    989989    var $display_hook = 'groups_custom_group_boxes';
    990990    var $template_file = 'plugin-template';
    991    
     991
    992992    // Methods you should override
    993    
     993
    994994    function display() {
    995995        die( 'function BP_Group_Extension::display() must be over-ridden in a sub-class.' );
    996996    }
    997    
     997
    998998    function widget_display() {
    999999        die( 'function BP_Group_Extension::widget_display() must be over-ridden in a sub-class.' );
    10001000    }
    1001    
     1001
    10021002    function edit_screen() {
    10031003        die( 'function BP_Group_Extension::edit_screen() must be over-ridden in a sub-class.' );
    10041004    }
    1005    
     1005
    10061006    function edit_screen_save() {
    10071007        die( 'function BP_Group_Extension::edit_screen_save() must be over-ridden in a sub-class.' );
    10081008    }
    1009    
     1009
    10101010    function create_screen() {
    10111011        die( 'function BP_Group_Extension::create_screen() must be over-ridden in a sub-class.' );
    10121012    }
    1013    
     1013
    10141014    function create_screen_save() {
    1015         die( 'function BP_Group_Extension::create_screen_save() must be over-ridden in a sub-class.' ); 
    1016     }
    1017    
     1015        die( 'function BP_Group_Extension::create_screen_save() must be over-ridden in a sub-class.' );
     1016    }
     1017
    10181018    // Private Methods
    1019    
     1019
    10201020    function _register() {
    10211021        global $bp;
     
    10271027            /* Attach the group creation step display content action */
    10281028            add_action( 'groups_custom_create_steps', array( &$this, 'create_screen' ) );
    1029    
     1029
    10301030            /* Attach the group creation step save content action */
    10311031            add_action( 'groups_create_group_step_save_' . $this->slug, array( &$this, 'create_screen_save' ) );
    10321032        }
    1033    
     1033
    10341034        /* Construct the admin edit tab for the new group extension */
    10351035        if ( $this->enable_edit_item ) {
    1036             add_action( 'groups_admin_tabs', create_function( '$current, $group_slug', 'if ( "' . attribute_escape( $this->slug ) . '" == $current ) $selected = " class=\"current\""; echo "<li{$selected}><a href=\"' . $bp->root_domain . '/' . $bp->groups->slug . '/{$group_slug}/admin/' . attribute_escape( $this->slug ) . '\">' . attribute_escape( $this->name ) . '</a></li>";' ), 10, 2 ); 
     1036            add_action( 'groups_admin_tabs', create_function( '$current, $group_slug', 'if ( "' . attribute_escape( $this->slug ) . '" == $current ) $selected = " class=\"current\""; echo "<li{$selected}><a href=\"' . $bp->root_domain . '/' . $bp->groups->slug . '/{$group_slug}/admin/' . attribute_escape( $this->slug ) . '\">' . attribute_escape( $this->name ) . '</a></li>";' ), 10, 2 );
    10371037
    10381038            /* Catch the edit screen and forward it to the plugin template */
     
    10421042
    10431043                if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) {
    1044                     bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/admin' ) );     
     1044                    bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/admin' ) );
    10451045                } else {
    10461046                    add_action( 'bp_template_content_header', create_function( '', 'echo "<ul class=\"content-header-nav\">"; bp_group_admin_tabs(); echo "</ul>";' ) );
    10471047                    add_action( 'bp_template_content', array( &$this, 'edit_screen' ) );
    1048                     bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'plugin-template' ) ); 
     1048                    bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'plugin-template' ) );
    10491049                }
    10501050            }
     
    10551055            if ( $this->enable_nav_item ) {
    10561056                if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item )
    1057                     bp_core_new_subnav_item( array( 'name' => ( !$this->nav_item_name ) ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => BP_GROUPS_SLUG, 'parent_url' => bp_get_group_permalink( $bp->groups->current_group ) . '/', 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array( &$this, '_display_hook' ), 'user_has_access' => $this->enable_nav_item ) );           
     1057                    bp_core_new_subnav_item( array( 'name' => ( !$this->nav_item_name ) ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => BP_GROUPS_SLUG, 'parent_url' => bp_get_group_permalink( $bp->groups->current_group ) . '/', 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array( &$this, '_display_hook' ), 'user_has_access' => $this->enable_nav_item ) );
    10581058
    10591059                /* When we are viewing the extension display page, set the title and options title */
     
    10631063                }
    10641064            }
    1065            
     1065
    10661066            /* Hook the group home widget */
    10671067            if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item && ( !$bp->current_action || 'home' == $bp->current_action ) )
     
    10691069        }
    10701070    }
    1071    
     1071
    10721072    function _display_hook() {
    10731073        add_action( 'bp_template_content', array( &$this, 'display' ) );
     
    10781078function bp_register_group_extension( $group_extension_class ) {
    10791079    global $bp;
    1080    
     1080
    10811081    if ( !class_exists( $group_extension_class ) )
    10821082        return false;
    1083    
     1083
    10841084    /* Register the group extension on the plugins_loaded action so we have access to all plugins */
    10851085    add_action( 'plugins_loaded', create_function( '', '$extension = new ' . $group_extension_class . '; add_action( "wp", array( &$extension, "_register" ), 2 );' ) );
Note: See TracChangeset for help on using the changeset viewer.