Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
11/02/2009 06:56:42 PM (17 years ago)
Author:
apeatling
Message:

Merging last few trunk changes and stripping all whitespace.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.1/bp-groups/bp-groups-classes.php

    r2052 r2076  
    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.