Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/02/2010 04:53:40 PM (15 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.