Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
11/13/2009 01:01:37 AM (15 years ago)
Author:
apeatling
Message:

Initial support for threaded activity stream commenting. Some major performance improvements around fetching profile and group data.

File:
1 edited

Legend:

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

    r2077 r2088  
    5757     */
    5858    function populate() {
    59         $this->user_url = bp_core_get_userurl( $this->id );
    60         $this->user_link = bp_core_get_userlink( $this->id );
    61 
    62         $this->fullname = attribute_escape( bp_core_get_user_displayname( $this->id ) );
    63         $this->email = attribute_escape( bp_core_get_user_email( $this->id ) );
    64         $this->last_active = attribute_escape( bp_core_get_last_activity( get_usermeta( $this->id, 'last_activity' ), __( 'active %s ago', 'buddypress' ) ) );
     59        if ( function_exists( 'xprofile_install' ) )
     60            $this->profile_data = $this->get_profile_data();
     61
     62        if ( $this->profile_data ) {
     63            $this->user_url = bp_core_get_user_domain( $this->id, $this->profile_data['user_nicename'], $this->profile_data['user_login'] );
     64            $this->fullname = attribute_escape( $this->profile_data[BP_XPROFILE_FULLNAME_FIELD_NAME]['field_data'] );
     65            $this->user_link = "<a href='{$this->user_url}'>{$this->fullname}</a>";
     66            $this->email = attribute_escape( $this->profile_data['user_email'] );
     67        } else {
     68            $this->user_url = bp_core_get_userurl( $this->id );
     69            $this->user_link = bp_core_get_userlink( $this->id );
     70            $this->fullname = attribute_escape( bp_core_get_user_displayname( $this->id ) );
     71            $this->email = attribute_escape( bp_core_get_user_email( $this->id ) );
     72        }
     73
     74        /* Cache a few things that are fetched often */
     75        wp_cache_set( 'bp_user_fullname_' . $this->id, $this->fullname, 'bp' );
     76        wp_cache_set( 'bp_user_email_' . $this->id, $this->email, 'bp' );
     77        wp_cache_set( 'bp_user_url_' . $this->id, $this->user_url, 'bp' );
    6578
    6679        $this->avatar = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'full' ) );
     
    7285        global $bp;
    7386
    74         if ( function_exists('friends_install') ) {
     87        if ( function_exists('friends_install') )
    7588            $this->total_friends = BP_Friends_Friendship::total_friend_count( $this->id );
    7689
    77             if ( $this->total_friends ) {
    78                 if ( 1 == $this->total_friends )
    79                     $this->total_friends .= ' ' . __( 'friend', 'buddypress' );
    80                 else
    81                     $this->total_friends .= ' ' . __( 'friends', 'buddypress' );
    82 
    83                 $this->total_friends = '<a href="' . $this->user_url . $bp->friends->slug . '" title="' . sprintf( __( "%s's friend list", 'buddypress' ), $this->fullname ) . '">' . $this->total_friends . '</a>';
    84             }
    85         }
    86 
    87         if ( function_exists('bp_blogs_install') ) {
    88             if ( $this->total_blogs ) {
    89                 if ( 1 == $this->total_blogs )
    90                     $this->total_blogs .= ' ' . __( 'blog', 'buddypress' );
    91                 else
    92                     $this->total_blogs .= ' ' . __( 'blogs', 'buddypress' );
    93 
    94                 $this->total_blogs = '<a href="' . $this->user_url . $bp->blogs->slug . '" title="' . sprintf( __( "%s's blog list", 'buddypress' ), $this->fullname ) . '">' . $this->total_blogs . '</a>';
    95             }
    96         }
    97 
    98         if ( function_exists('groups_install') ) {
     90        if ( function_exists('groups_install') )
    9991            $this->total_groups = BP_Groups_Member::total_group_count( $this->id );
    100 
    101             if ( $this->total_groups ) {
    102                 if ( 1 == $this->total_groups )
    103                     $this->total_groups .= ' ' . __( 'group', 'buddypress' );
    104                 else
    105                     $this->total_groups .= ' ' . __( 'groups', 'buddypress' );
    106 
    107                 $this->total_groups = '<a href="' . $this->user_url . $bp->groups->slug . '" title="' . sprintf( __( "%s's group list", 'buddypress' ), $this->fullname ) . '">' . $this->total_groups . '</a>';
    108             }
    109         }
     92    }
     93
     94    function get_profile_data() {
     95        return BP_XProfile_ProfileData::get_all_for_user( $this->id );
    11096    }
    11197
Note: See TracChangeset for help on using the changeset viewer.