Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/02/2010 04:53:40 PM (17 years ago)
Author:
apeatling
Message:

Tweaking single group pages and group class.

File:
1 edited

Legend:

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

    r2534 r2537  
    1111        var $date_created;
    1212
    13         var $user_dataset;
    14 
    1513        var $admins;
    1614        var $total_member_count;
    17         var $random_members;
    18 
    19         function bp_groups_group( $id = null, $single = false, $get_user_dataset = true ) {
     15
     16        function bp_groups_group( $id = null ) {
    2017                if ( $id ) {
    2118                        $this->id = $id;
    22                         $this->populate( $get_user_dataset );
    23                 }
    24 
    25                 if ( $single ) {
    26                         $this->populate_meta();
    27                 }
    28         }
    29 
    30         function populate( $get_user_dataset ) {
    31                 global $wpdb, $bp;
    32 
    33                 $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} WHERE id = %d", $this->id );
    34                 $group = $wpdb->get_row($sql);
    35 
    36                 if ( $group ) {
     19                        $this->populate();
     20                }
     21        }
     22
     23        function populate() {
     24                global $wpdb, $bp;
     25
     26                if ( $group = $wpdb->get_row( $wpdb->prepare( "SELECT g.*, gm.meta_value as last_activity, gm2.meta_value as total_member_count FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm, {$bp->groups->table_name_groupmeta} gm2 WHERE g.id = gm.group_id AND g.id = gm2.group_id AND gm.meta_key = 'last_activity' AND gm2.meta_key = 'total_member_count' AND g.id = %d", $this->id ) ) ) {
    3727                        $this->id = $group->id;
    3828                        $this->creator_id = $group->creator_id;
     
    4333                        $this->enable_forum = $group->enable_forum;
    4434                        $this->date_created = $group->date_created;
    45                         $this->total_member_count = groups_get_groupmeta( $this->id, 'total_member_count' );
    46 
    47                         if ( $get_user_dataset ) {
    48                                 $this->user_dataset = $this->get_user_dataset();
    49 
    50                                 $this->total_member_count = count( $this->user_dataset );
    51                                 groups_update_groupmeta( $this->id, 'total_member_count', $this->total_member_count );
     35                        $this->last_activity = $group->last_activity;
     36                        $this->total_member_count = $group->total_member_count;
     37                        $this->is_member = BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $this->id );
     38
     39                        /* Get group admins and mods */
     40                        $admin_mods = $wpdb->get_results( $wpdb->prepare( "SELECT u.ID as user_id, u.user_login, u.user_email, u.user_nicename, m.is_admin, m.is_mod FROM {$wpdb->users} u, {$bp->groups->table_name_members} m WHERE u.ID = m.user_id AND m.group_id = %d AND ( m.is_admin = 1 OR m.is_mod = 1 )", $this->id ) );
     41                        foreach( (array)$admin_mods as $user ) {
     42                                if ( (int)$user->is_admin )
     43                                        $this->admins[] = $user;
     44                                else
     45                                        $this->mods[] = $user;
    5246                        }
    53 
    54                         /* Get group extras */
    55                         $this->is_member = BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $this->id );
    56                 }
    57         }
    58 
    59         function populate_meta() {
    60                 if ( $this->id ) {
    61                         $this->admins = $this->get_administrators();
    62                         $this->random_members = $this->get_random_members();
    6347                }
    6448        }
     
    134118        }
    135119
    136         function get_user_dataset() {
    137                 global $wpdb, $bp;
    138 
    139                 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 ) );
    140         }
    141 
    142         function get_administrators() {
    143                 for ( $i = 0; $i < count($this->user_dataset); $i++ ) {
    144                         if ( $this->user_dataset[$i]->is_admin )
    145                                 $admins[] = new BP_Groups_Member( $this->user_dataset[$i]->user_id, $this->id );
    146                 }
    147 
    148                 return $admins;
    149         }
    150 
    151         function get_random_members() {
    152                 $total_randoms = ( $this->total_member_count > 5 ) ? 5 : $this->total_member_count;
    153 
    154                 for ( $i = 0; $i < $total_randoms; $i++ ) {
    155                         if ( !(int)$this->user_dataset[$i]->is_banned )
    156                                 $users[] = new BP_Groups_Member( $this->user_dataset[$i]->user_id, $this->id );
    157                 }
    158                 return $users;
    159         }
    160 
    161         function is_member() {
    162                 global $bp;
    163 
    164                 for ( $i = 0; $i < count($this->user_dataset); $i++ ) {
    165                         if ( $this->user_dataset[$i]->user_id == $bp->loggedin_user->id ) {
    166                                 return true;
    167                         }
    168                 }
    169 
    170                 return false;
    171         }
    172 
    173120        function delete() {
    174121                global $wpdb, $bp;
Note: See TracChangeset for help on using the changeset viewer.