Skip to:
Content

BuddyPress.org

Changeset 2088


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.

Location:
trunk
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity.php

    r2077 r2088  
    11<?php
    22
    3 define ( 'BP_ACTIVITY_DB_VERSION', '1800' );
     3define ( 'BP_ACTIVITY_DB_VERSION', '1900' );
    44
    55/* Define the slug for the component */
     
    3333                date_recorded datetime NOT NULL,
    3434                hide_sitewide bool DEFAULT 0,
     35                mptt_left int(11) NOT NULL,
     36                mptt_right int(11) NOT NULL,
    3537                KEY date_recorded (date_recorded),
    3638                KEY user_id (user_id),
     
    224226 */
    225227
     228function bp_activity_get_sitewide( $args = '' ) {
     229    $defaults = array(
     230        'max' => false, // Maximum number of results to return
     231        'page' => 1, // page 1 without a per_page will result in no pagination.
     232        'per_page' => false, // results per page
     233        'sort' => 'DESC', // sort ASC or DESC
     234        'display_comments' => false, // false for no comments. 'stream' for within stream display, 'threaded' for below each activity item
     235
     236        'search_terms' => false, // Pass search terms as a string
     237
     238        /**
     239         * Pass filters as an array:
     240         * array(
     241         *  'user_id' => false, // user_id to filter on
     242         *  'object' => false, // object to filter on e.g. groups, profile, status, friends
     243         *  'action' => false, // action to filter on e.g. new_wire_post, new_forum_post, profile_updated
     244         *  'primary_id' => false, // object ID to filter on e.g. a group_id or forum_id or blog_id etc.
     245         *  'secondary_id' => false, // secondary object ID to filter on e.g. a post_id
     246         * );
     247         */
     248        'filter' => array()
     249    );
     250
     251    $r = wp_parse_args( $args, $defaults );
     252    extract( $r, EXTR_SKIP );
     253
     254    return apply_filters( 'bp_activity_get_sitewide', BP_Activity_Activity::get_sitewide_activity( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments ), &$r );
     255}
     256
     257function bp_activity_get_for_user( $args = '' ) {
     258    global $bp;
     259
     260    $defaults = array(
     261        'user_id' => $bp->displayed_user->id,
     262        'max' => false, // Maximum number of results to return
     263        'page' => 1, // page 1 without a per_page will result in no pagination.
     264        'per_page' => false, // results per page
     265        'sort' => 'DESC', // sort ASC or DESC
     266        'display_comments' => 'stream', // false for no comments. 'stream' for within stream display, 'threaded' for below each activity item
     267
     268        'search_terms' => false, // Pass search terms as a string
     269        'filter' => array()
     270    );
     271
     272    $r = wp_parse_args( $args, $defaults );
     273    extract( $r, EXTR_SKIP );
     274
     275    return apply_filters( 'bp_activity_get_for_user', BP_Activity_Activity::get_activity_for_user( $user_id, $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments ), &$r );
     276}
     277
     278function bp_activity_get_friends_activity( $user_id, $max = 30, $max_items_per_friend = false, $pag_num = false, $pag_page = false, $filter = false ) {
     279    return apply_filters( 'bp_activity_get_friends_activity', BP_Activity_Activity::get_activity_for_friends( $user_id, $max_items, $max_items_per_friend, $pag_num, $pag_page, $filter ), $user_id, $max_items, $max_items_per_friend, $pag_num, $pag_page, $filter );
     280}
     281
     282function bp_activity_get_specific( $args = '' ) {
     283    $defaults = array(
     284        'activity_ids' => false, // A single activity_id or array of IDs.
     285        'max' => false, // Maximum number of results to return
     286        'page' => 1, // page 1 without a per_page will result in no pagination.
     287        'per_page' => false, // results per page
     288        'sort' => 'DESC', // sort ASC or DESC
     289        'display_comments' => false // true or false to display threaded comments for these specific activity items
     290    );
     291
     292    $r = wp_parse_args( $args, $defaults );
     293    extract( $r, EXTR_SKIP );
     294
     295    return apply_filters( 'bp_activity_get_specific', BP_Activity_Activity::get_specific( $activity_ids, $max, $page, $per_page, $sort, $display_comments ) );
     296}
     297
    226298function bp_activity_add( $args = '' ) {
    227299    global $bp, $wpdb;
     
    247319        $content = bp_activity_add_timesince_placeholder( $content );
    248320
    249     $activity = new BP_Activity_Activity;
     321    /* Pass certain values so we can update an activity item if it already exists */
     322    $activity = new BP_Activity_Activity();
     323
    250324    $activity->user_id = $user_id;
    251325    $activity->content = $content;
     
    261335        return false;
    262336
    263     do_action( 'bp_activity_add', $args );
    264 
    265     return true;
     337    /* If this is an activity comment, rebuild the tree */
     338    if ( 'activity_comment' == $activity->component_action )
     339        BP_Activity_Activity::rebuild_activity_comment_tree( $activity->item_id );
     340
     341    do_action( 'bp_activity_add', $r );
     342
     343    return $activity->id;
    266344}
    267345
     
    374452}
    375453
    376 function bp_activity_get_sitewide_activity( $max_items = 30, $pag_num = false, $pag_page = false, $filter = false ) {
    377     return apply_filters( 'bp_activity_get_sitewide_activity', BP_Activity_Activity::get_sitewide_activity( $max_items, $pag_num, $pag_page, $filter ), $max_items, $pag_num, $pag_page, $filter );
    378 }
    379 
    380 function bp_activity_get_user_activity( $user_id, $max_items = 30, $pag_num = false, $pag_page = false, $filter = false ) {
    381     return apply_filters( 'bp_activity_get_user_activity', BP_Activity_Activity::get_activity_for_user( $user_id, $max_items, $pag_num, $pag_page, $filter ), $user_id, $max_items, $pag_num, $pag_page, $filter );
    382 }
    383 
    384 function bp_activity_get_friends_activity( $user_id, $max_items = 30, $max_items_per_friend = false, $pag_num = false, $pag_page = false, $filter = false ) {
    385     return apply_filters( 'bp_activity_get_friends_activity', BP_Activity_Activity::get_activity_for_friends( $user_id, $max_items, $max_items_per_friend, $pag_num, $pag_page, $filter ), $user_id, $max_items, $max_items_per_friend, $pag_num, $pag_page, $filter );
    386 }
    387 
    388454function bp_activity_remove_data( $user_id ) {
    389455    // Clear the user's activity from the sitewide stream and clear their activity tables
  • trunk/bp-activity/bp-activity-classes.php

    r2077 r2088  
    2626        $activity = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE id = %d", $this->id ) );
    2727
    28         $this->id = $activity->id;
    29         $this->item_id = $activity->item_id;
    30         $this->secondary_item_id = $activity->secondary_item_id;
    31         $this->user_id = $activity->user_id;
    32         $this->content = $activity->content;
    33         $this->primary_link = $activity->primary_link;
    34         $this->component_name = $activity->component_name;
    35         $this->component_action = $activity->component_action;
    36         $this->date_recorded = $activity->date_recorded;
    37         $this->hide_sitewide = $activity->hide_sitewide;
     28        if ( $activity ) {
     29            $this->id = $activity->id;
     30            $this->item_id = $activity->item_id;
     31            $this->secondary_item_id = $activity->secondary_item_id;
     32            $this->user_id = $activity->user_id;
     33            $this->content = $activity->content;
     34            $this->primary_link = $activity->primary_link;
     35            $this->component_name = $activity->component_name;
     36            $this->component_action = $activity->component_action;
     37            $this->date_recorded = $activity->date_recorded;
     38            $this->hide_sitewide = $activity->hide_sitewide;
     39        }
    3840    }
    3941
     
    6365            $this->primary_link = $bp->loggedin_user->domain;
    6466
    65         if ( $existing_activity_id = $this->exists() )
    66             BP_Activity_Activity::delete_by_activity_id( $existing_activity_id );
    67 
    6867        /* If we have an existing ID, update the activity item, otherwise insert it. */
    69         if ( $this->id ) {
    70             if ( $wpdb->query( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET user_id = %d, component_name = %s, component_action = %s, content = %s, primary_link = %s, date_recorded = FROM_UNIXTIME(%d), item_id = %s, secondary_item_id = %s, hide_sitewide = %d WHERE id = %d", $this->user_id, $this->component_name, $this->component_action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide, $this->id ) ) ) {
    71                 do_action( 'bp_activity_after_save', $this );
    72                 return true;
    73             }
    74         } else {
    75             if ( $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->activity->table_name} ( user_id, component_name, component_action, content, primary_link, date_recorded, item_id, secondary_item_id, hide_sitewide ) VALUES ( %d, %s, %s, %s, %s, FROM_UNIXTIME(%d), %s, %s, %d )", $this->user_id, $this->component_name, $this->component_action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide ) ) ) {
    76                 do_action( 'bp_activity_after_save', $this );
    77                 return true;
    78             }
    79         }
    80 
    81         return false;
    82     }
    83 
    84     function exists() {
    85         global $wpdb, $bp;
    86 
    87         /* This doesn't seem to be working correctly at the moment, so it is disabled [TODO] */
    88         return false;
    89 
    90         /* If we have an item id, try and match on that, if not do a content match */
    91         if ( $this->item_id ) {
    92             if ( $this->secondary_item_id )
    93                 $secondary_sql = $wpdb->prepare( " AND secondary_item_id = %s", $secondary_item_id );
    94 
    95             return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE user_id = %d AND item_id = %s{$secondary_sql} AND component_name = %s AND component_action = %s", $this->user_id, $this->item_id, $this->component_name, $this->component_action ) );
    96         } else {
    97             return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE user_id = %d AND content = %s AND component_name = %s AND component_action = %s", $this->user_id, $this->content, $this->component_name, $this->component_action ) );
    98         }
     68        if ( $this->id )
     69            $q = $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET user_id = %d, component_name = %s, component_action = %s, content = %s, primary_link = %s, date_recorded = FROM_UNIXTIME(%d), item_id = %s, secondary_item_id = %s, hide_sitewide = %d WHERE id = %d", $this->user_id, $this->component_name, $this->component_action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide, $this->id );
     70        else
     71            $q = $wpdb->prepare( "INSERT INTO {$bp->activity->table_name} ( user_id, component_name, component_action, content, primary_link, date_recorded, item_id, secondary_item_id, hide_sitewide ) VALUES ( %d, %s, %s, %s, %s, FROM_UNIXTIME(%d), %s, %s, %d )", $this->user_id, $this->component_name, $this->component_action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide );
     72
     73        if ( !$wpdb->query( $q ) )
     74            return false;
     75
     76        $this->id = $wpdb->insert_id;
     77
     78        do_action( 'bp_activity_after_save', $this );
     79        return true;
    9980    }
    10081
     
    144125    }
    145126
    146     function get_activity_for_user( $user_id, $max_items, $limit, $page, $filter ) {
    147         global $wpdb, $bp;
     127    function get_activity_for_user( $user_id, $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false ) {
     128        global $wpdb, $bp;
     129
     130        if ( $limit && $page )
     131            $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     132
     133        if ( $max )
     134            $max_sql = $wpdb->prepare( "LIMIT %d", $max );
     135
     136        /* Searching */
     137        if ( $search_terms ) {
     138            $search_terms = $wpdb->escape( $search_terms );
     139            $search_sql = "AND content LIKE '%%" . like_escape( $search_terms ) . "%%'";
     140        }
     141
     142        /* Filtering */
     143        if ( $filter )
     144            $filter_sql = BP_Activity_Activity::get_filter_sql( $filter );
     145
     146        /* Sorting */
     147        if ( $sort != 'ASC' && $sort != 'DESC' )
     148            $sort = 'DESC';
     149
     150        /* Alter the query based on whether we want to show activity item comments in the stream like normal comments or threaded below the activity */
     151        if ( !$display_comments || 'threaded' == $display_comments ) {
     152            if ( $per_page && $page && $max )
     153                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE user_id = %d {$search_sql} {$filter_sql} AND component_action != 'activity_comment' ORDER BY date_recorded {$sort} {$pag_sql}", $user_id ) );
     154            else
     155                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE user_id = %d {$search_sql} {$filter_sql} AND component_action != 'activity_comment' ORDER BY date_recorded {$sort} {$pag_sql} {$max_sql}", $user_id ) );
     156
     157            $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE user_id = %d {$search_sql} {$filter_sql} AND component_action != 'activity_comment' ORDER BY date_recorded {$sort} {$max_sql}", $user_id ) );
     158
     159            if ( $activities && $display_comments )
     160                $activities = BP_Activity_Activity::append_comments( &$activities );
     161        } else {
     162            if ( $per_page && $page && $max )
     163                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE user_id = %d {$search_sql} {$filter_sql} ORDER BY date_recorded {$sort} {$pag_sql}", $user_id ) );
     164            else
     165                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE user_id = %d {$search_sql} {$filter_sql} ORDER BY date_recorded {$sort} {$pag_sql} {$max_sql}", $user_id ) );
     166
     167            $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE user_id = %d {$search_sql} {$filter_sql} ORDER BY date_recorded {$sort} {$max_sql}", $user_id ) );
     168
     169            if ( $activities )
     170                $activities = BP_Activity_Activity::append_comments( &$activities );
     171        }
     172
     173        return array( 'activities' => $activities, 'total' => (int)$total_activities );
     174    }
     175
     176    function get_activity_for_friends( $user_id, $max_items, $max_items_per_friend, $limit, $page, $filter ) {
     177        global $wpdb, $bp;
     178
     179        // TODO: Max items per friend not yet implemented.
     180
     181        if ( !function_exists('friends_get_friend_user_ids') )
     182            return false;
    148183
    149184        if ( $limit && $page )
     
    157192            $filter_sql = BP_Activity_Activity::get_filter_sql( $filter );
    158193
    159         if ( $limit && $page && $max_items )
    160             $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE user_id = %d $filter_sql ORDER BY date_recorded DESC $pag_sql", $user_id ) );
    161         else
    162             $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE user_id = %d $filter_sql ORDER BY date_recorded DESC $pag_sql $max_sql", $user_id ) );
    163 
    164         $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE user_id = %d $filter_sql ORDER BY date_recorded DESC $max_sql", $user_id ) );
    165 
    166         return array( 'activities' => $activities, 'total' => (int)$total_activities );
    167     }
    168 
    169     function get_activity_for_friends( $user_id, $max_items, $max_items_per_friend, $limit, $page, $filter ) {
    170         global $wpdb, $bp;
    171 
    172         // TODO: Max items per friend not yet implemented.
    173 
    174         if ( !function_exists('friends_get_friend_user_ids') )
    175             return false;
    176 
    177         if ( $limit && $page )
    178             $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    179 
    180         if ( $max_items )
    181             $max_sql = $wpdb->prepare( "LIMIT %d", $max_items );
    182 
    183         /* Sort out filtering */
    184         if ( $filter )
    185             $filter_sql = BP_Activity_Activity::get_filter_sql( $filter );
    186 
    187194        $friend_ids = friends_get_friend_user_ids( $user_id );
    188195
     
    190197            return false;
    191198
    192         $friend_ids = implode( ',', $friend_ids );
     199        $friend_ids = $wpdb->escape( implode( ',', $friend_ids ) );
    193200
    194201        if ( $limit && $page && $max_items )
     
    202209    }
    203210
    204     function get_sitewide_activity( $max, $limit, $page, $filter ) {
    205         global $wpdb, $bp;
    206 
    207         if ( $limit && $page )
    208             $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     211    function get_sitewide_activity( $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false ) {
     212        global $wpdb, $bp;
     213
     214        if ( $per_page && $page )
     215            $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $per_page ), intval( $per_page ) );
    209216
    210217        if ( $max )
    211218            $max_sql = $wpdb->prepare( "LIMIT %d", $max );
    212219
    213         /* Sort out filtering */
     220        /* Searching */
     221        if ( $search_terms ) {
     222            $search_terms = $wpdb->escape( $search_terms );
     223            $search_sql = "AND content LIKE '%%" . like_escape( $search_terms ) . "%%'";
     224        }
     225
     226        /* Filtering */
    214227        if ( $filter )
    215228            $filter_sql = BP_Activity_Activity::get_filter_sql( $filter );
    216229
    217         if ( $limit && $page && $max )
    218             $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 $filter_sql ORDER BY date_recorded DESC $pag_sql" ) );
     230        /* Sorting */
     231        if ( $sort != 'ASC' && $sort != 'DESC' )
     232            $sort = 'DESC';
     233
     234        /* Alter the query based on whether we want to show activity item comments in the stream like normal comments or threaded below the activity */
     235        if ( !$display_comments || 'threaded' == $display_comments ) {
     236            if ( $per_page && $page && $max )
     237                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 {$search_sql} {$filter_sql} AND component_action != 'activity_comment' ORDER BY date_recorded {$sort} {$pag_sql}" ) );
     238            else
     239                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 {$search_sql} {$filter_sql} AND component_action != 'activity_comment' ORDER BY date_recorded {$sort} {$pag_sql} {$max_sql}" ) );
     240
     241            $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 {$search_sql} {$filter_sql} AND component_action != 'activity_comment' ORDER BY date_recorded {$sort} {$max_sql}" ) );
     242
     243            if ( $activities && $display_comments )
     244                $activities = BP_Activity_Activity::append_comments( &$activities );
     245        } else {
     246            if ( $per_page && $page && $max )
     247                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 {$search_sql} {$filter_sql} ORDER BY date_recorded {$sort} {$pag_sql}" ) );
     248            else
     249                $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 {$search_sql} {$filter_sql} ORDER BY date_recorded {$sort} {$pag_sql} {$max_sql}" ) );
     250
     251            $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 {$search_sql} {$filter_sql} ORDER BY date_recorded {$sort} {$max_sql}" ) );
     252
     253            if ( $activities )
     254                $activities = BP_Activity_Activity::append_comments( &$activities );
     255        }
     256
     257        return array( 'activities' => $activities, 'total' => (int)$total_activities );
     258    }
     259
     260    function get_specific( $activity_ids, $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $display_comments = false ) {
     261        global $wpdb, $bp;
     262
     263        if ( is_array( $activity_ids ) )
     264            $activity_ids = implode( ',', $activity_ids );
     265
     266        $activity_ids = $wpdb->escape( $activity_ids );
     267
     268        if ( $per_page && $page )
     269            $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $per_page ), intval( $per_page ) );
     270
     271        if ( $max )
     272            $max_sql = $wpdb->prepare( "LIMIT %d", $max );
     273
     274        if ( $sort != 'ASC' && $sort != 'DESC' )
     275            $sort = 'DESC';
     276
     277        $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE id IN ({$activity_ids}) ORDER BY date_recorded {$sort} $pag_sql $max_sql" ) );
     278        $total_activities = $wpdb->get_results( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE id IN ({$activity_ids}) ORDER BY date_recorded {$sort}" ) );
     279
     280        if ( $display_comments )
     281            $activities = BP_Activity_Activity::append_comments( $activities );
     282
     283        return array( 'activities' => $activities, 'total' => (int)$total_activities );
     284    }
     285
     286    function append_comments( $activities ) {
     287        global $bp, $wpdb;
     288
     289        /* Now fetch the activity comments and parse them into the correct position in the activities array. */
     290        foreach( $activities as $activity ) {
     291            if ( 'activity_comment' != $activity->component_action )
     292                $activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments( $activity->id, $activity->mptt_left, $activity->mptt_right );
     293        }
     294
     295        /* Merge the comments with the activity items */
     296        foreach( $activities as $key => $activity )
     297            $activities[$key]->children = $activity_comments[$activity->id];
     298
     299        return $activities;
     300    }
     301
     302    function get_activity_comments( $activity_id, $left, $right ) {
     303        global $wpdb, $bp;
     304
     305        /* Start with an empty $stack */
     306        $stack = array();
     307
     308        /* Retrieve all descendants of the $root node */
     309        $descendants = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE component_action = 'activity_comment' AND item_id = %d AND mptt_left BETWEEN %d AND %d", $activity_id, $left, $right ) );
     310
     311        /* Loop descendants and build an assoc array */
     312        foreach ( $descendants as $d ) {
     313            $d->children = array();
     314
     315            /* We have a reference on its parent */
     316            if ( isset( $ref[ $d->secondary_item_id ] ) ) {
     317                $ref[ $d->secondary_item_id ]->children[ $d->id ] = $d;
     318                $ref[ $d->id ] =& $ref[ $d->secondary_item_id ]->children[ $d->id ];
     319
     320            /* We don't have a reference on its parent, put it a root level */
     321            } else {
     322                $menu[ $d->id ] = $d;
     323                $ref[ $d->id ] =& $menu[ $d->id ];
     324            }
     325        }
     326
     327        return $menu;
     328    }
     329
     330    function rebuild_activity_comment_tree( $parent_id, $left = 1 ) {
     331        global $wpdb, $bp;
     332
     333        /* The right value of this node is the left value + 1 */
     334        $right = $left + 1;
     335
     336        /* Get all descendants of this node */
     337        $descendants = $wpdb->get_results( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE component_action = 'activity_comment' AND secondary_item_id = %d", $parent_id ) );
     338
     339        /* Loop the descendants and recalculate the left and right values */
     340        foreach ( $descendants as $descendant )
     341            $right = BP_Activity_Activity::rebuild_activity_comment_tree( $descendant->id, $right );
     342
     343        /* We've got the left value, and now that we've processed the children of this node we also know the right value */
     344        if ( 1 == $left )
     345            $wpdb->query( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET mptt_left = %d, mptt_right = %d WHERE id = %d", $left, $right, $parent_id ) );
    219346        else
    220             $activities = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 $filter_sql ORDER BY date_recorded DESC $pag_sql $max_sql" ) );
    221 
    222         $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(id) FROM {$bp->activity->table_name} WHERE hide_sitewide = 0 $filter_sql ORDER BY date_recorded DESC $max_sql" ) );
    223 
    224         return array( 'activities' => $activities, 'total' => (int)$total_activities );
     347            $wpdb->query( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET mptt_left = %d, mptt_right = %d WHERE component_action = 'activity_comment' AND id = %d", $left, $right, $parent_id ) );
     348
     349        /* Return the right value of this node + 1 */
     350        return $right + 1;
    225351    }
    226352
     
    234360        global $wpdb, $bp;
    235361
    236         $activities = bp_activity_get_sitewide_activity( $limit );
     362        $activities = bp_activity_get_sitewide( array( 'max' => $limit ) );
     363
    237364        for ( $i = 0; $i < count($activities); $i++ ) {
    238365                $title = explode( '<span', $activities[$i]['content'] );
  • trunk/bp-activity/bp-activity-filters.php

    r2077 r2088  
    1919    $activity_allowedtags['span'] = array();
    2020    $activity_allowedtags['span']['class'] = array();
     21    $activity_allowedtags['div'] = array();
     22    $activity_allowedtags['div']['class'] = array();
     23    $activity_allowedtags['div']['id'] = array();
    2124    $activity_allowedtags['a']['class'] = array();
    2225    $activity_allowedtags['img'] = array();
  • trunk/bp-activity/bp-activity-templatetags.php

    r2077 r2088  
    1717    var $full_name;
    1818
    19     function bp_activity_template( $type, $user_id, $per_page, $max, $filter ) {
     19    function bp_activity_template( $type, $user_id, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments ) {
    2020        global $bp;
    2121
     
    2424        $this->activity_type = $type;
    2525
    26         if ( $type == 'sitewide' )
    27             $this->activities = bp_activity_get_sitewide_activity( $max, $this->pag_num, $this->pag_page, $filter );
    28 
    29         if ( $type == 'personal' )
    30             $this->activities = bp_activity_get_user_activity( $user_id, $max, $this->pag_num, $this->pag_page, $filter );
    31 
    32         if ( $type == 'friends' && ( bp_is_home() || is_site_admin() || $bp->loggedin_user->id == $user_id ) )
    33             $this->activities = bp_activity_get_friends_activity( $user_id, $max, false, $this->pag_num, $this->pag_page, $filter );
     26        if ( !empty( $include ) ) {
     27            /* Fetch specific activity items based on ID's */
     28            $this->activities = bp_activity_get_specific( array( 'activity_ids' => explode( ',', $include ), 'max' => $max, 'page' => $page, 'per_page' => $per_page, 'sort' => $sort, 'display_comments' => $display_comments ) );
     29        } else {
     30            if ( $type == 'sitewide' )
     31                $this->activities = bp_activity_get_sitewide( array( 'display_comments' => $display_comments, 'max' => $max, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'sort' => $sort, 'search_terms' => $search_terms, 'filter' => $filter ) );
     32
     33            if ( $type == 'personal' )
     34                $this->activities = bp_activity_get_for_user( array( 'user_id' => $user_id, 'display_comments' => $display_comments, 'max' => $max, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'sort' => $sort, 'search_terms' => $search_terms, 'filter' => $filter ) );
     35
     36            if ( $type == 'friends' && ( bp_is_home() || is_site_admin() || $bp->loggedin_user->id == $user_id ) )
     37                $this->activities = bp_activity_get_friends_activity( $user_id, $max, false, $this->pag_num, $this->pag_page, $filter );
     38        }
    3439
    3540        if ( !$max || $max >= (int)$this->activities['total'] )
     
    119124    $defaults = array(
    120125        'type' => 'sitewide',
    121         'per_page' => 25,
    122         'max' => false,
     126        'display_comments' => false, // false for none, stream/threaded - show comments in the stream or threaded under items
     127        'include' => false, // pass an activity_id or string of ID's comma separated
     128        'sort' => 'DESC', // sort DESC or ASC
     129        'per_page' => 25, // number of items per page
     130        'max' => false, // max number to return
     131
     132        /* Filtering */
    123133        'user_id' => false, // user_id to filter on
    124134        'object' => false, // object to filter on e.g. groups, profile, status, friends
     
    126136        'primary_id' => false, // object ID to filter on e.g. a group_id or forum_id or blog_id etc.
    127137        'secondary_id' => false, // secondary object ID to filter on e.g. a post_id
     138
     139        /* Searching */
     140        'search_terms' => false // specify terms to search on
    128141    );
    129142
     
    144157        $filter = array( 'object' => $object, 'action' => $action, 'primary_id' => $primary_id, 'secondary_id' => $secondary_id );
    145158
    146     $activities_template = new BP_Activity_Template( $type, $user_id, $per_page, $max, $filter );
     159    $activities_template = new BP_Activity_Template( $type, $user_id, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments );
     160
    147161    return apply_filters( 'bp_has_activities', $activities_template->has_activities(), &$activities_template );
    148162}
     
    197211
    198212        return apply_filters( 'bp_get_activities_no_activity', $bp_activity_no_activity );
     213    }
     214
     215function bp_activity_id() {
     216    echo bp_get_activity_id();
     217}
     218    function bp_get_activity_id() {
     219        global $activities_template;
     220        return apply_filters( 'bp_get_activity_id', $activities_template->activity->id );
     221    }
     222
     223function bp_activity_item_id() {
     224    echo bp_get_activity_item_id();
     225}
     226    function bp_get_activity_item_id() {
     227        global $activities_template;
     228        return apply_filters( 'bp_get_activity_item_id', $activities_template->activity->item_id );
     229    }
     230
     231function bp_activity_secondary_item_id() {
     232    echo bp_get_activity_secondary_item_id();
     233}
     234    function bp_get_activity_secondary_item_id() {
     235        global $activities_template;
     236        return apply_filters( 'bp_get_activity_secondary_item_id', $activities_template->activity->secondary_item_id );
     237    }
     238
     239function bp_activity_date_recorded() {
     240    echo bp_get_activity_date_recorded();
     241}
     242    function bp_get_activity_date_recorded() {
     243        global $activities_template;
     244        return apply_filters( 'bp_get_activity_date_recorded', $activities_template->activity->date_recorded );
     245    }
     246
     247function bp_activity_object_name() {
     248    echo bp_get_activity_object_name();
     249}
     250    function bp_get_activity_object_name() {
     251        global $activities_template;
     252        return apply_filters( 'bp_get_activity_object_name', $activities_template->activity->component_name );
     253    }
     254
     255function bp_activity_action_name() {
     256    echo bp_get_activity_action_name();
     257}
     258    function bp_get_activity_action_name() {
     259        global $activities_template;
     260        return apply_filters( 'bp_get_activity_action_name', $activities_template->activity->component_action );
    199261    }
    200262
     
    255317        $content = apply_filters( 'the_content', $content );
    256318
    257         return apply_filters( 'bp_get_activity_content', $content );
     319        return apply_filters( 'bp_get_activity_content', $content, $activities_template->activity->component_name, $activities_template->activity->component_action );
    258320    }
    259321
     
    299361    return apply_filters( 'bp_activity_content_filter', $content_new );
    300362}
     363
     364function bp_activity_comments( $args = '' ) {
     365    echo bp_activity_get_comments( $args );
     366}
     367    function bp_activity_get_comments( $args = '' ) {
     368        global $activities_template, $bp;
     369
     370        if ( !$activities_template->activity->children )
     371            return false;
     372
     373        $comments_html = bp_activity_recurse_comments( $activities_template->activity );
     374
     375        return apply_filters( 'bp_activity_get_comments', $comments_html );
     376    }
     377        /* The HTML in this function is temporary, it will be move to template tags once comments are working. */
     378        function bp_activity_recurse_comments( $comment ) {
     379            global $activities_template, $bp;
     380
     381            if ( !$comment->children )
     382                return false;
     383
     384            $content .= '<ul>';
     385            foreach ( $comment->children as $comment ) {
     386                $content .= '<li id="acomment-' . $comment->id . '">';
     387
     388                $content .= '<div class="acomment-avatar">' . bp_core_fetch_avatar( array( 'item_id' => $comment->user_id, 'width' => 25, 'height' => 25 ) ) . '</div>';
     389
     390                $content .= '<div class="acomment-meta">' . bp_core_get_userlink( $comment->user_id ) . ' &middot; ' . sprintf( __( '%s ago', 'buddypress' ), bp_core_time_since( strtotime( $comment->date_recorded ) ) );
     391
     392                /* Reply link */
     393                if ( is_user_logged_in() )
     394                    $content .= ' &middot; <a href="#acomment-' . $comment->id . '" class="acomment-reply" id="acomment-reply-' . $activities_template->activity->id . '">' . __( 'Reply', 'buddypress' ) . '</a>';
     395
     396                /* Delete link */
     397                if ( is_site_admin() || $bp->loggedin_user->id == $comment->user_id )
     398                    $content .= ' &middot; <a href="' . wp_nonce_url( $bp->activity->id . '/delete/?cid=' . $comment->id, 'delete_activity_comment' ) . '" class="delete acomment-delete">' . __( 'Delete', 'buddypress' ) . '</a>';
     399
     400                $content .= '</div>';
     401                $content .= '<div class="acomment-content">' . apply_filters( 'bp_get_activity_content', $comment->content ) . '</div>';
     402
     403                $content .= bp_activity_recurse_comments( $comment );
     404                $content .= '</li>';
     405            }
     406            $content .= '</ul>';
     407
     408            return $content;
     409        }
    301410
    302411function bp_activity_insert_time_since( $content, $date ) {
     
    391500            $component_links[] = '<' . $tag . ' id="afilter-clear"><a href="' . attribute_escape( $link ) . '"">' . __( 'Clear Filter', 'buddypress' ) . '</a></' . $tag . '>';
    392501
    393         return apply_filters( 'bp_get_activity_filter_links', implode( "\n", $component_links ) );
     502        return apply_filters( 'bp_get_activity_filter_links', implode( "\n", $component_links ) );
    394503    }
    395504
  • trunk/bp-activity/deprecated/bp-activity-deprecated.php

    r2077 r2088  
    9393add_action( 'bp_styles', 'bp_activity_add_structure_css' );
    9494
     95/* DEPRECATED - use bp_activity_get_sitewide( $args ) */
     96function bp_activity_get_sitewide_activity( $max_items = 30, $pag_num = false, $pag_page = false, $filter = false ) {
     97    return apply_filters( 'bp_activity_get_sitewide_activity', bp_activity_get_sitewide( array( 'max' => $max_items, 'limit' => $pag_num, 'page' => $pag_page, 'filter' => $filter ) ), $max_items, $pag_num, $pag_page, $filter );
     98}
     99
     100/* DEPRECATED - use bp_activity_get_for_user( $args ) */
     101function bp_activity_get_user_activity( $user_id, $max = 30, $pag_num = false, $pag_page = false, $filter = false ) {
     102    return apply_filters( 'bp_activity_get_user_activity', BP_Activity_Activity::get_activity_for_user( $user_id, $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments ), $user_id, $max_items, $pag_num, $pag_page, $filter );
     103}
     104
     105
    95106?>
  • trunk/bp-blogs/bp-blogs-templatetags.php

    r1949 r2088  
    55function bp_blog_signup_enabled() {
    66    $active_signup = get_site_option( 'registration' );
    7    
     7
    88    if ( !$active_signup )
    99        $active_signup = 'all';
    10        
     10
    1111    $active_signup = apply_filters( 'wpmu_active_signup', $active_signup ); // return "all", "none", "blog" or "user"
    12    
     12
    1313    if ( 'none' == $active_signup || 'user' == $active_signup )
    1414        return false;
    15    
     15
    1616    return true;
    1717}
     
    2020    global $current_user, $current_site;
    2121    global $bp;
    22        
     22
    2323    require_once( ABSPATH . WPINC . '/registration.php' );
    2424
     
    4848            <input type="hidden" name="stage" value="gimmeanotherblog" />
    4949            <?php do_action( "signup_hidden_fields" ); ?>
    50            
     50
    5151            <?php bp_blogs_signup_blog($blogname, $blog_title, $errors); ?>
    5252            <p>
    5353                <input id="submit" type="submit" name="submit" class="submit" value="<?php _e('Create Blog &raquo;', 'buddypress') ?>" />
    5454            </p>
    55            
     55
    5656            <?php wp_nonce_field( 'bp_blog_signup_form' ) ?>
    5757        </form>
     
    6262function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) {
    6363    global $current_site;
    64    
     64
    6565    // Blog name
    6666    if( 'no' == constant( "VHOST" ) )
     
    9090    // Blog Title
    9191    ?>
    92     <label for="blog_title"><?php _e('Blog Title:', 'buddypress') ?></label>   
     92    <label for="blog_title"><?php _e('Blog Title:', 'buddypress') ?></label>
    9393    <?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?>
    9494        <p class="error"><?php echo $errmsg ?></p>
     
    9999    <p>
    100100        <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label>
    101         <?php _e('I would like my blog to appear in search engines like Google and Technorati, and in public listings around this site.', 'buddypress'); ?> 
     101        <?php _e('I would like my blog to appear in search engines like Google and Technorati, and in public listings around this site.', 'buddypress'); ?>
    102102
    103103
     
    119119    global $wpdb, $current_user, $blogname, $blog_title, $errors, $domain, $path;
    120120
    121     if ( !check_admin_referer( 'bp_blog_signup_form' ) ) 
     121    if ( !check_admin_referer( 'bp_blog_signup_form' ) )
    122122        return false;
    123123
    124124    $current_user = wp_get_current_user();
    125    
     125
    126126    if( !is_user_logged_in() )
    127127        die();
     
    137137
    138138    $public = (int) $_POST['blog_public'];
    139    
     139
    140140    $meta = apply_filters( 'signup_create_blog_meta', array( 'lang_id' => 1, 'public' => $public ) ); // depreciated
    141141    $meta = apply_filters( 'add_signup_meta', $meta );
    142    
     142
    143143    /* If this is a VHOST install, remove the username from the domain as we are setting this blog
    144144       up inside a user domain, not the root domain. */
    145    
     145
    146146    wpmu_create_blog( $domain, $path, $blog_title, $current_user->id, $meta, $wpdb->siteid );
    147147    bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta);
     
    169169function bp_create_blog_link() {
    170170    global $bp;
    171    
     171
    172172    if ( bp_is_home() ) {
    173173        echo apply_filters( 'bp_create_blog_link', '<a href="' . $bp->loggedin_user->domain . $bp->blogs->slug . '/create-a-blog">' . __('Create a Blog', 'buddypress') . '</a>' );
     
    177177function bp_blogs_blog_tabs() {
    178178    global $bp, $groups_template;
    179    
     179
    180180    // Don't show these tabs on a user's own profile
    181181    if ( bp_is_home() )
    182182        return false;
    183    
     183
    184184    $current_tab = $bp->current_action
    185185?>
     
    187187        <li<?php if ( 'my-blogs' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/my-blogs"><?php printf( __( "%s's Blogs", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
    188188        <li<?php if ( 'recent-posts' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-posts"><?php printf( __( "%s's Recent Posts", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
    189         <li<?php if ( 'recent-comments' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-comments"><?php printf( __( "%s's Recent Comments", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li> 
     189        <li<?php if ( 'recent-comments' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-comments"><?php printf( __( "%s's Recent Comments", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
    190190    </ul>
    191191<?php
     
    202202    var $blogs;
    203203    var $blog;
    204    
     204
    205205    var $in_the_loop;
    206    
     206
    207207    var $pag_page;
    208208    var $pag_num;
    209209    var $pag_links;
    210210    var $total_blog_count;
    211    
     211
    212212    function bp_blogs_user_blogs_template( $user_id, $per_page, $max ) {
    213213        global $bp;
    214        
     214
    215215        if ( !$user_id )
    216216            $user_id = $bp->displayed_user->id;
     
    223223            wp_cache_set( 'bp_blogs_for_user_' . $user_id, $this->blogs, 'bp' );
    224224        }
    225        
     225
    226226        if ( !$max || $max >= (int)$this->blogs['count'] )
    227227            $this->total_blog_count = (int)$this->blogs['count'];
    228228        else
    229229            $this->total_blog_count = (int)$max;
    230        
     230
    231231        $this->blogs = array_slice( (array)$this->blogs['blogs'], intval( ( $this->pag_page - 1 ) * $this->pag_num), intval( $this->pag_num ) );
    232        
     232
    233233        if ( $max ) {
    234234            if ( $max >= count($this->blogs) )
     
    239239            $this->blog_count = count($this->blogs);
    240240        }
    241        
     241
    242242        $this->pag_links = paginate_links( array(
    243243            'base' => add_query_arg( 'fpage', '%#%' ),
     
    250250        ));
    251251    }
    252    
     252
    253253    function has_blogs() {
    254254        if ( $this->blog_count )
    255255            return true;
    256        
     256
    257257        return false;
    258258    }
    259    
     259
    260260    function next_blog() {
    261261        $this->current_blog++;
    262262        $this->blog = $this->blogs[$this->current_blog];
    263        
     263
    264264        return $this->blog;
    265265    }
    266    
     266
    267267    function rewind_blogs() {
    268268        $this->current_blog = -1;
     
    271271        }
    272272    }
    273    
    274     function user_blogs() { 
     273
     274    function user_blogs() {
    275275        if ( $this->current_blog + 1 < $this->blog_count ) {
    276276            return true;
     
    284284        return false;
    285285    }
    286    
     286
    287287    function the_blog() {
    288288        global $blog;
     
    290290        $this->in_the_loop = true;
    291291        $blog = $this->next_blog();
    292        
     292
    293293        if ( 0 == $this->current_blog ) // loop has just started
    294294            do_action('loop_start');
     
    324324function bp_blogs_pagination_count() {
    325325    global $bp, $blogs_template;
    326    
     326
    327327    $from_num = intval( ( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num ) + 1;
    328328    $to_num = ( $from_num + ( $blogs_template->pag_num - 1 ) > $blogs_template->total_blog_count ) ? $blogs_template->total_blog_count : $from_num + ( $blogs_template->pag_num - 1 ) ;
     
    346346    function bp_get_blog_title() {
    347347        global $blogs_template;
    348            
    349         return apply_filters( 'bp_get_blog_title', $blogs_template->blog['title'] );
     348
     349        return apply_filters( 'bp_get_blog_title', $blogs_template->blog->name );
    350350    }
    351351
     
    355355    function bp_get_blog_description() {
    356356        global $blogs_template;
    357        
    358         return apply_filters( 'bp_get_blog_description', $blogs_template->blog['description'] );
     357
     358        return apply_filters( 'bp_get_blog_description', $blogs_template->blog->description );
    359359    }
    360360
     
    363363}
    364364    function bp_get_blog_permalink() {
    365         global $blogs_template; 
    366        
    367         return apply_filters( 'bp_get_blog_permalink', $blogs_template->blog['siteurl'] );
     365        global $blogs_template;
     366
     367        return apply_filters( 'bp_get_blog_permalink', $blogs_template->blog->siteurl );
    368368    }
    369369
     
    378378    var $posts;
    379379    var $post;
    380    
     380
    381381    var $in_the_loop;
    382    
     382
    383383    var $pag_page;
    384384    var $pag_num;
    385385    var $pag_links;
    386386    var $total_post_count;
    387    
     387
    388388    function bp_blogs_blog_post_template( $user_id, $per_page, $max ) {
    389389        global $bp;
    390        
     390
    391391        if ( !$user_id )
    392392            $user_id = $bp->displayed_user->id;
     
    394394        $this->pag_page = isset( $_GET['fpage'] ) ? intval( $_GET['fpage'] ) : 1;
    395395        $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : $per_page;
    396        
     396
    397397        if ( !$this->posts = wp_cache_get( 'bp_user_posts_' . $user_id, 'bp' ) ) {
    398398            $this->posts = bp_blogs_get_posts_for_user( $user_id );
    399399            wp_cache_set( 'bp_user_posts_' . $user_id, $this->posts, 'bp' );
    400400        }
    401        
     401
    402402        if ( !$max || $max >= (int)$this->posts['count'] )
    403403            $this->total_post_count = (int)$this->posts['count'];
    404404        else
    405405            $this->total_post_count = (int)$max;
    406        
     406
    407407        $this->posts = array_slice( (array)$this->posts['posts'], intval( ( $this->pag_page - 1 ) * $this->pag_num), intval( $this->pag_num ) );
    408408
     
    415415            $this->post_count = count($this->posts);
    416416        }
    417        
     417
    418418        $this->pag_links = paginate_links( array(
    419419            'base' => add_query_arg( 'fpage', '%#%' ),
     
    424424            'next_text' => '&raquo;',
    425425            'mid_size' => 1
    426         )); 
    427     }
    428    
     426        ));
     427    }
     428
    429429    function has_posts() {
    430430        if ( $this->post_count )
    431431            return true;
    432        
     432
    433433        return false;
    434434    }
    435    
     435
    436436    function next_post() {
    437437        $this->current_post++;
    438438        $this->post = $this->posts[$this->current_post];
    439        
     439
    440440        return $this->post;
    441441    }
    442    
     442
    443443    function rewind_posts() {
    444444        $this->current_post = -1;
     
    447447        }
    448448    }
    449    
    450     function user_posts() { 
     449
     450    function user_posts() {
    451451        if ( $this->current_post + 1 < $this->post_count ) {
    452452            return true;
     
    460460        return false;
    461461    }
    462    
     462
    463463    function the_post() {
    464464        global $post;
     
    466466        $this->in_the_loop = true;
    467467        $post = $this->next_post();
    468        
     468
    469469        if ( 0 == $this->current_post ) // loop has just started
    470470            do_action('loop_start');
     
    484484    extract( $r, EXTR_SKIP );
    485485
    486     $posts_template = new BP_Blogs_Blog_Post_Template( $user_id, $per_page, $max ); 
     486    $posts_template = new BP_Blogs_Blog_Post_Template( $user_id, $per_page, $max );
    487487    return apply_filters( 'bp_has_posts', $posts_template->has_posts(), &$posts_template );
    488488}
     
    500500function bp_post_pagination_count() {
    501501    global $bp, $posts_template;
    502    
     502
    503503    $from_num = intval( ( $posts_template->pag_page - 1 ) * $posts_template->pag_num ) + 1;
    504504    $to_num = ( $from_num + ( $posts_template->pag_num - 1 ) > $posts_template->total_post_count ) ? $posts_template->total_post_count : $from_num + ( $posts_template->pag_num - 1 ) ;
     
    522522    function bp_get_post_id() {
    523523        global $posts_template;
    524         return apply_filters( 'bp_get_post_id', $posts_template->post->ID );   
    525     }
    526    
     524        return apply_filters( 'bp_get_post_id', $posts_template->post->ID );
     525    }
     526
    527527function bp_post_title( $deprecated = true ) {
    528528    if ( !$deprecated )
     
    533533    function bp_get_post_title() {
    534534        global $posts_template;
    535        
     535
    536536        return apply_filters( 'bp_get_post_title', $posts_template->post->post_title );
    537537    }
     
    539539function bp_post_permalink() {
    540540    global $posts_template;
    541    
    542     echo bp_post_get_permalink();   
     541
     542    echo bp_post_get_permalink();
    543543}
    544544
    545545function bp_post_excerpt() {
    546     echo bp_get_post_excerpt(); 
     546    echo bp_get_post_excerpt();
    547547}
    548548    function bp_get_post_excerpt() {
    549549        global $posts_template;
    550         echo apply_filters( 'bp_get_post_excerpt', $posts_template->post->post_excerpt );   
     550        echo apply_filters( 'bp_get_post_excerpt', $posts_template->post->post_excerpt );
    551551    }
    552552
     
    567567    function bp_get_post_status() {
    568568        global $posts_template;
    569         return apply_filters( 'bp_get_post_status', $posts_template->post->post_status );   
    570     }
    571    
     569        return apply_filters( 'bp_get_post_status', $posts_template->post->post_status );
     570    }
     571
    572572function bp_post_date( $date_format = null, $deprecated = true ) {
    573573    if ( !$date_format )
    574574        $date_format = get_option('date_format');
    575        
     575
    576576    if ( !$deprecated )
    577577        return bp_get_post_date( $date_format );
     
    593593    function bp_get_post_comment_count() {
    594594        global $posts_template;
    595         return apply_filters( 'bp_get_post_comment_count', $posts_template->post->comment_count ); 
     595        return apply_filters( 'bp_get_post_comment_count', $posts_template->post->comment_count );
    596596    }
    597597
    598598function bp_post_comments( $zero = 'No Comments', $one = '1 Comment', $more = '% Comments', $css_class = '', $none = 'Comments Off' ) {
    599599    global $posts_template, $wpdb;
    600    
     600
    601601    $number = (int)$posts_template->post->comment_count;
    602    
     602
    603603    if ( 0 == $number && 'closed' == $posts_template->postcomment_status && 'closed' == $posts_template->postping_status ) {
    604604        echo '<span' . ((!empty($css_class)) ? ' class="' . $css_class . '"' : '') . '>' . $none . '</span>';
     
    614614
    615615    echo '<a href="';
    616    
     616
    617617    if ( 0 == $number )
    618618        echo bp_post_get_permalink() . '#respond';
     
    620620        echo bp_post_get_permalink() . '#comments';
    621621    echo '"';
    622    
     622
    623623    if ( !empty( $css_class ) ) {
    624624        echo ' class="'.$css_class.'" ';
     
    629629
    630630    echo ' title="' . sprintf( __('Comment on %s', 'buddypress'), $title ) . '">';
    631    
     631
    632632    if ( 1 == $number )
    633633        printf( __( '%d Comment', 'buddypress' ), $number );
    634634    else
    635635        printf( __( '%d Comments', 'buddypress' ), $number );
    636        
     636
    637637    echo '</a>';
    638638}
     
    646646    function bp_get_post_author() {
    647647        global $posts_template;
    648        
     648
    649649        return apply_filters( 'bp_get_post_author', bp_core_get_userlink( $posts_template->post->post_author ) );
    650650    }
     
    664664            $post_id = $posts_template->post->ID;
    665665
    666         return apply_filters( 'bp_get_post_category', get_the_category_list( $separator, $parents, $post_id ) );   
     666        return apply_filters( 'bp_get_post_category', get_the_category_list( $separator, $parents, $post_id ) );
    667667    }
    668668
    669669function bp_post_tags( $before = '', $sep = ', ', $after = '' ) {
    670670    global $posts_template, $wpdb;
    671    
     671
    672672    /* Disabling this for now as it's too expensive and there is no global tags directory */
    673673    return false;
    674    
     674
    675675    switch_to_blog( $posts_template->post->blog_id );
    676676    $terms = bp_post_get_term_list( $before, $sep, $after );
     
    692692    function bp_get_post_blog_name() {
    693693        global $posts_template;
    694         return apply_filters( 'bp_get_post_blog_name', get_blog_option( $posts_template->post->blog_id, 'blogname' ) ); 
     694        return apply_filters( 'bp_get_post_blog_name', get_blog_option( $posts_template->post->blog_id, 'blogname' ) );
    695695    }
    696696
    697697function bp_post_blog_permalink() {
    698     echo bp_get_post_blog_permalink(); 
     698    echo bp_get_post_blog_permalink();
    699699}
    700700    function bp_get_post_blog_permalink() {
    701701        global $posts_template;
    702         return apply_filters( 'bp_get_post_blog_permalink', get_blog_option( $posts_template->post->blog_id, 'siteurl' ) ); 
    703     }
    704    
     702        return apply_filters( 'bp_get_post_blog_permalink', get_blog_option( $posts_template->post->blog_id, 'siteurl' ) );
     703    }
     704
    705705function bp_post_get_permalink( $post = null, $blog_id = null ) {
    706706    global $current_blog, $posts_template;
    707    
     707
    708708    if ( !$post )
    709         $post = $posts_template->post; 
    710        
     709        $post = $posts_template->post;
     710
    711711    if ( !$blog_id )
    712712        $blog_id = $posts_template->post->blog_id;
    713        
     713
    714714    if ( !$post || !$blog_id )
    715715        return false;
    716        
     716
    717717    $rewritecode = array(
    718718        '%year%',
     
    735735
    736736    $permalink = get_blog_option( $blog_id, 'permalink_structure' );
    737     $site_url = get_blog_option( $blog_id, 'siteurl' ); 
     737    $site_url = get_blog_option( $blog_id, 'siteurl' );
    738738
    739739    if ( '' != $permalink && !in_array($post->post_status, array('draft', 'pending')) ) {
     
    753753            if ( empty($category) ) {
    754754                $default_category = get_category( get_option( 'default_category' ) );
    755                 $category = is_wp_error( $default_category ) ? '' : $default_category->slug; 
     755                $category = is_wp_error( $default_category ) ? '' : $default_category->slug;
    756756            }
    757757        }
     
    789789function bp_post_get_term_list( $before = '', $sep = '', $after = '' ) {
    790790    global $posts_template;
    791    
     791
    792792    $terms = get_the_terms( $posts_template->post->ID, 'post_tag' );
    793793
     
    801801        $link = get_blog_option( BP_ROOT_BLOG, 'siteurl') . '/tag/' . $term->slug;
    802802        $link = apply_filters('term_link', $link);
    803        
     803
    804804        $term_links[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
    805805    }
     
    820820    var $comments;
    821821    var $comment;
    822    
     822
    823823    var $in_the_loop;
    824    
     824
    825825    var $pag_page;
    826826    var $pag_num;
    827827    var $pag_links;
    828828    var $total_comment_count;
    829    
     829
    830830    function bp_blogs_post_comment_template( $user_id, $per_page, $max ) {
    831831        global $bp;
    832        
     832
    833833        if ( !$user_id )
    834834            $user_id = $bp->displayed_user->id;
     
    836836        $this->pag_page = isset( $_GET['compage'] ) ? intval( $_GET['compage'] ) : 1;
    837837        $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : $per_page;
    838        
     838
    839839        if ( !$this->comments = wp_cache_get( 'bp_user_comments_' . $user_id, 'bp' ) ) {
    840840            $this->comments = bp_blogs_get_comments_for_user( $user_id );
    841841            wp_cache_set( 'bp_user_comments_' . $user_id, $this->comments, 'bp' );
    842842        }
    843        
     843
    844844        if ( !$max || $max >= (int)$this->comments['count'] )
    845845            $this->total_comment_count = (int)$this->comments['count'];
    846846        else
    847847            $this->total_comment_count = (int)$max;
    848        
     848
    849849        $this->comments = array_slice( (array)$this->comments['comments'], intval( ( $this->pag_page - 1 ) * $this->pag_num), intval( $this->pag_num ) );
    850850
     
    857857            $this->comment_count = count($this->comments);
    858858        }
    859        
     859
    860860        $this->pag_links = paginate_links( array(
    861861            'base' => add_query_arg( 'compage', '%#%' ),
     
    867867            'mid_size' => 1
    868868        ));
    869                
    870     }
    871    
     869
     870    }
     871
    872872    function has_comments() {
    873873        if ( $this->comment_count )
    874874            return true;
    875        
     875
    876876        return false;
    877877    }
    878    
     878
    879879    function next_comment() {
    880880        $this->current_comment++;
    881881        $this->comment = $this->comments[$this->current_comment];
    882        
     882
    883883        return $this->comment;
    884884    }
    885    
     885
    886886    function rewind_comments() {
    887887        $this->current_comment = -1;
     
    890890        }
    891891    }
    892    
    893     function user_comments() { 
     892
     893    function user_comments() {
    894894        if ( $this->current_comment + 1 < $this->comment_count ) {
    895895            return true;
     
    903903        return false;
    904904    }
    905    
     905
    906906    function the_comment() {
    907907        global $comment;
     
    909909        $this->in_the_loop = true;
    910910        $comment = $this->next_comment();
    911        
     911
    912912        if ( 0 == $this->current_comment ) // loop has just started
    913913            do_action('loop_start');
     
    926926    $r = wp_parse_args( $args, $defaults );
    927927    extract( $r, EXTR_SKIP );
    928    
     928
    929929    $comments_template = new BP_Blogs_Post_Comment_Template( $user_id, $per_page, $max );
    930930    return apply_filters( 'bp_has_comments', $comments_template->has_comments(), &$comments_template );
     
    946946    function bp_get_comments_pagination() {
    947947        global $comments_template;
    948        
     948
    949949        return apply_filters( 'bp_get_comments_pagination', $comments_template->pag_links );
    950950    }
     
    966966    function bp_get_comment_post_permalink() {
    967967        global $comments_template;
    968        
     968
    969969        return apply_filters( 'bp_get_comment_post_permalink', bp_post_get_permalink( $comments_template->comment->post, $comments_template->comment->blog_id ) . '#comment-' . $comments_template->comment->comment_ID );
    970970    }
     
    978978    function bp_get_comment_post_title( $deprecated = true ) {
    979979        global $comments_template;
    980        
     980
    981981        return apply_filters( 'bp_get_comment_post_title', $comments_template->comment->post->post_title );
    982982    }
     
    984984function bp_comment_author( $deprecated = true ) {
    985985    global $comments_template;
    986    
     986
    987987    if ( !$deprecated )
    988988        return bp_get_comment_author();
     
    10101010    if ( !$date_format )
    10111011        $date_format = get_option('date_format');
    1012        
     1012
    10131013    if ( !$deprecated )
    10141014        return bp_get_comment_date( $date_format );
    1015     else 
     1015    else
    10161016        echo bp_get_comment_date( $date_format );
    10171017}
     
    10271027function bp_comment_blog_permalink( $deprecated = true ) {
    10281028    if ( !$deprecated )
    1029         return bp_get_comment_blog_permalink(); 
     1029        return bp_get_comment_blog_permalink();
    10301030    else
    10311031        echo bp_get_comment_blog_permalink();
     
    10391039function bp_comment_blog_name( $deprecated = true ) {
    10401040    global $comments_template;
    1041    
     1041
    10421042    if ( !$deprecated )
    1043         return bp_get_comment_blog_permalink(); 
     1043        return bp_get_comment_blog_permalink();
    10441044    else
    1045         echo bp_get_comment_blog_permalink();   
     1045        echo bp_get_comment_blog_permalink();
    10461046}
    10471047    function bp_get_comment_blog_name( $deprecated = true ) {
     
    10601060    var $blogs;
    10611061    var $blog;
    1062    
     1062
    10631063    var $in_the_loop;
    1064    
     1064
    10651065    var $pag_page;
    10661066    var $pag_num;
    10671067    var $pag_links;
    10681068    var $total_blog_count;
    1069    
     1069
    10701070    function bp_blogs_site_blogs_template( $type, $per_page, $max ) {
    10711071        global $bp;
     
    10731073        $this->pag_page = isset( $_REQUEST['bpage'] ) ? intval( $_REQUEST['bpage'] ) : 1;
    10741074        $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
    1075                
     1075
    10761076        if ( isset( $_REQUEST['s'] ) && '' != $_REQUEST['s'] && $type != 'random' ) {
    10771077            $this->blogs = BP_Blogs_Blog::search_blogs( $_REQUEST['s'], $this->pag_num, $this->pag_page );
     
    10831083                    $this->blogs = BP_Blogs_Blog::get_random( $this->pag_num, $this->pag_page );
    10841084                    break;
    1085                
     1085
    10861086                case 'newest':
    10871087                    $this->blogs = BP_Blogs_Blog::get_newest( $this->pag_num, $this->pag_page );
    1088                     break; 
    1089                
     1088                    break;
     1089
    10901090                case 'active': default:
    10911091                    $this->blogs = BP_Blogs_Blog::get_active( $this->pag_num, $this->pag_page );
    1092                     break;                 
     1092                    break;
    10931093            }
    10941094        }
    1095        
     1095
    10961096        if ( !$max || $max >= (int)$this->blogs['total'] )
    10971097            $this->total_blog_count = (int)$this->blogs['total'];
     
    11091109            $this->blog_count = count($this->blogs);
    11101110        }
    1111        
     1111
    11121112        $this->pag_links = paginate_links( array(
    11131113            'base' => add_query_arg( 'bpage', '%#%' ),
     
    11181118            'next_text' => '&raquo;',
    11191119            'mid_size' => 1
    1120         ));     
    1121     }
    1122    
     1120        ));
     1121    }
     1122
    11231123    function has_blogs() {
    11241124        if ( $this->blog_count )
    11251125            return true;
    1126        
     1126
    11271127        return false;
    11281128    }
    1129    
     1129
    11301130    function next_blog() {
    11311131        $this->current_blog++;
    11321132        $this->blog = $this->blogs[$this->current_blog];
    1133        
     1133
    11341134        return $this->blog;
    11351135    }
    1136    
     1136
    11371137    function rewind_blogs() {
    11381138        $this->current_blog = -1;
     
    11411141        }
    11421142    }
    1143    
    1144     function blogs() { 
     1143
     1144    function blogs() {
    11451145        if ( $this->current_blog + 1 < $this->blog_count ) {
    11461146            return true;
     
    11541154        return false;
    11551155    }
    1156    
     1156
    11571157    function the_blog() {
    11581158        global $blog;
     
    11601160        $this->in_the_loop = true;
    11611161        $this->blog = $this->next_blog();
    1162        
     1162
    11631163        if ( 0 == $this->current_blog ) // loop has just started
    11641164            do_action('loop_start');
     
    11681168function bp_rewind_site_blogs() {
    11691169    global $site_blogs_template;
    1170    
    1171     $site_blogs_template->rewind_blogs();   
     1170
     1171    $site_blogs_template->rewind_blogs();
    11721172}
    11731173
     
    11831183    $r = wp_parse_args( $args, $defaults );
    11841184    extract( $r, EXTR_SKIP );
    1185    
     1185
    11861186    // type: active ( default ) | random | newest | popular
    1187    
     1187
    11881188    if ( $max ) {
    11891189        if ( $per_page > $max )
    11901190            $per_page = $max;
    11911191    }
    1192        
     1192
    11931193    $site_blogs_template = new BP_Blogs_Site_Blogs_Template( $type, $per_page, $max );
    11941194
     
    11981198function bp_site_blogs() {
    11991199    global $site_blogs_template;
    1200    
     1200
    12011201    return $site_blogs_template->blogs();
    12021202}
     
    12041204function bp_the_site_blog() {
    12051205    global $site_blogs_template;
    1206    
     1206
    12071207    return $site_blogs_template->the_blog();
    12081208}
     
    12101210function bp_site_blogs_pagination_count() {
    12111211    global $bp, $site_blogs_template;
    1212    
     1212
    12131213    $from_num = intval( ( $site_blogs_template->pag_page - 1 ) * $site_blogs_template->pag_num ) + 1;
    12141214    $to_num = ( $from_num + ( $site_blogs_template->pag_num - 1 ) > $site_blogs_template->total_blog_count ) ? $site_blogs_template->total_blog_count : $from_num + ( $site_blogs_template->pag_num - 1 ) ;
     
    12261226        return apply_filters( 'bp_get_site_blogs_pagination_links', $site_blogs_template->pag_links );
    12271227    }
    1228    
     1228
    12291229function bp_the_site_blog_avatar() {
    12301230    echo bp_get_the_site_blog_avatar();
     
    12321232    function bp_get_the_site_blog_avatar() {
    12331233        global $site_blogs_template, $bp;
    1234        
     1234
    12351235        /***
    12361236         * In future BuddyPress versions you will be able to set the avatar for a blog.
     
    13091309        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['s'] ). '" name="search_terms" />';
    13101310    }
    1311    
     1311
    13121312    if ( isset( $_REQUEST['letter'] ) ) {
    13131313        echo '<input type="hidden" id="selected_letter" value="' . attribute_escape( $_REQUEST['letter'] ) . '" name="selected_letter" />';
    13141314    }
    1315    
     1315
    13161316    if ( isset( $_REQUEST['blogs_search'] ) ) {
    13171317        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['blogs_search'] ) . '" name="search_terms" />';
  • trunk/bp-core.php

    r2077 r2088  
    533533 * @uses get_usermeta() WordPress function to get the usermeta for a user.
    534534 */
    535 function bp_core_get_user_domain( $user_id ) {
     535function bp_core_get_user_domain( $user_id, $user_nicename = false, $user_login = false ) {
    536536    global $bp;
    537537
    538538    if ( !$user_id ) return;
    539539
    540     $ud = get_userdata($user_id);
     540    if ( $domain = wp_cache_get( 'bp_user_domain_' . $user_id, 'bp' ) )
     541        return apply_filters( 'bp_core_get_user_domain', $domain );
     542
     543    if ( !$user_nicename && !$user_login ) {
     544        $ud = get_userdata($user_id);
     545        $user_nicename = $ud->user_nicename;
     546        $user_login = $ud->user_login;
     547    }
    541548
    542549    if ( defined( 'BP_ENABLE_USERNAME_COMPATIBILITY_MODE' ) )
    543         $username = $ud->user_login;
     550        $username = $user_login;
    544551    else
    545         $username = $ud->user_nicename;
     552        $username = $user_nicename;
    546553
    547554    /* If we are using a members slug, include it. */
    548555    if ( !defined( 'BP_ENABLE_ROOT_PROFILES' ) )
    549         return apply_filters( 'bp_core_get_user_domain', $bp->root_domain . '/' . BP_MEMBERS_SLUG . '/' . $username . '/' );
     556        $domain = $bp->root_domain . '/' . BP_MEMBERS_SLUG . '/' . $username . '/';
    550557    else
    551         return apply_filters( 'bp_core_get_user_domain', $bp->root_domain . '/' . $username . '/' );
     558        $domain = $bp->root_domain . '/' . $username . '/';
     559
     560    /* Cache the link */
     561    wp_cache_set( 'bp_user_domain_' . $user_id, $domain, 'bp' );
     562
     563    return apply_filters( 'bp_core_get_user_domain', $domain );
    552564}
    553565
     
    721733}
    722734add_action( 'wp_head', 'bp_core_sort_nav_items' );
    723 
    724 /**
    725  * bp_core_remove_nav_item()
    726  *
    727  * Removes a navigation item from the main navigation array.
    728  *
    729  * @package BuddyPress Core
    730  * @param $slug The slug of the sub navigation item.
    731  */
    732 function bp_core_remove_nav_item( $slug ) {
    733     global $bp;
    734 
    735     unset( $bp->bp_nav[$slug] );
    736 }
    737735
    738736/**
     
    820818
    821819/**
    822  * bp_core_remove_subnav_item()
     820 * bp_core_remove_nav_item()
    823821 *
    824822 * Removes a navigation item from the sub navigation array used in BuddyPress themes.
     
    828826 * @param $slug The slug of the sub navigation item.
    829827 */
     828function bp_core_remove_nav_item( $parent_id ) {
     829    global $bp;
     830
     831    /* Unset subnav items for this nav item */
     832    foreach( $bp->bp_options_nav[$parent_id] as $subnav_item ) {
     833        bp_core_remove_subnav_item( $parent_id, $subnav_item['slug'] );
     834    }
     835
     836    unset( $bp->bp_nav[$parent_id] );
     837}
     838
     839/**
     840 * bp_core_remove_subnav_item()
     841 *
     842 * Removes a navigation item from the sub navigation array used in BuddyPress themes.
     843 *
     844 * @package BuddyPress Core
     845 * @param $parent_id The id of the parent navigation item.
     846 * @param $slug The slug of the sub navigation item.
     847 */
    830848function bp_core_remove_subnav_item( $parent_id, $slug ) {
    831849    global $bp;
    832850
     851    $function = $bp->bp_options_nav[$parent_id][$slug]['screen_function'];
     852
     853    if ( $function ) {
     854        if ( !is_object( $screen_function[0] ) )
     855            remove_action( 'wp', $screen_function, 3 );
     856        else
     857            remove_action( 'wp', array( &$screen_function[0], $screen_function[1] ), 3 );
     858    }
     859
    833860    unset( $bp->bp_options_nav[$parent_id][$slug] );
     861
     862    if ( !count( $bp->bp_options_nav[$parent_id] ) )
     863        unset($bp->bp_options_nav[$parent_id]);
    834864}
    835865
     
    9791009    global $bp;
    9801010
    981     if ( !is_numeric($uid) )
    982         return false;
    983 
    984     return apply_filters( 'bp_core_get_userurl', bp_core_get_user_domain( $uid ) );
     1011    if ( !$url = wp_cache_get( 'bp_user_url_' . $uid, 'bp' ) ) {
     1012        $url = bp_core_get_user_domain( $uid );
     1013    }
     1014
     1015    return apply_filters( 'bp_core_get_userurl', $url );
    9851016}
    9861017
     
    9971028 */
    9981029function bp_core_get_user_email( $uid ) {
    999     $ud = get_userdata($uid);
    1000     return apply_filters( 'bp_core_get_user_email', $ud->user_email );
     1030    if ( !$email = wp_cache_get( 'bp_user_email_' . $uid, 'bp' ) ) {
     1031        $ud = get_userdata($uid);
     1032        $email = $ud->user_email;
     1033    }
     1034    return apply_filters( 'bp_core_get_user_email', $email );
    10011035}
    10021036
     
    10311065        return false;
    10321066
    1033     if ( function_exists('bp_fetch_user_fullname') ) {
     1067    if ( function_exists( 'bp_core_get_user_displayname' ) ) {
    10341068        $display_name = bp_core_get_user_displayname( $user_id );
    10351069
     
    10501084        return $url;
    10511085
    1052     return '<a href="' . $url . '">' . $display_name . '</a>';
     1086    return apply_filters( 'bp_core_get_userlink', '<a href="' . $url . '">' . $display_name . '</a>', $user_id );
    10531087}
    10541088
     
    16661700    global $wpdb;
    16671701    ?>
    1668 <!-- Generated in <?php timer_stop(1); ?> seconds. -->
     1702<!-- Generated in <?php timer_stop(1); ?> seconds. <?php echo get_num_queries(); ?> -->
    16691703    <?php
    16701704}
  • trunk/bp-core/bp-core-avatars.php

    r2077 r2088  
    130130
    131131        if ( 'user' == $object ) {
    132             $ud = get_userdata( $item_id );
    133             $grav_email = $ud->user_email;
     132            $grav_email = bp_core_get_user_email( $item_id );
    134133        } else if ( 'group' == $object || 'blog' == $object ) {
    135134            $grav_email = "{$item_id}-{$object}@{$bp->root_domain}";
     
    140139
    141140        return apply_filters( 'bp_core_fetch_avatar', "<img src='{$gravatar}' alt='{$alt}' id='{$css_id}' class='{$class}'{$html_width}{$html_height} />", $params );
     141
    142142    } else if ( !file_exists( $avatar_url ) && $no_grav )
    143143        return false;
  • trunk/bp-core/bp-core-catchuri.php

    r2077 r2088  
    254254        bp_core_redirect( $bp->root_domain );
    255255
     256    // If the template file doesn't exist, redirect to the root domain.
     257    if ( !bp_is_blog_page() && !file_exists( locate_template( array( $bp_path . '.php' ), false ) ) )
     258        bp_core_redirect( $bp->root_domain );
     259
    256260    if ( !$bp_path && !bp_is_blog_page() ) {
    257261        if ( is_user_logged_in() ) {
  • 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
  • trunk/bp-core/bp-core-templatetags.php

    r2077 r2088  
    10541054    }
    10551055
    1056 function bp_the_site_member_avatar() {
    1057     echo apply_filters( 'bp_the_site_member_avatar', bp_get_the_site_member_avatar() );
    1058 }
    1059     function bp_get_the_site_member_avatar() {
    1060         global $site_members_template;
    1061 
    1062         return apply_filters( 'bp_get_the_site_member_avatar', $site_members_template->member->avatar_thumb );
     1056function bp_the_site_member_avatar( $args = '' ) {
     1057    echo apply_filters( 'bp_the_site_member_avatar', bp_get_the_site_member_avatar( $args ) );
     1058}
     1059    function bp_get_the_site_member_avatar( $args = '' ) {
     1060        global $bp, $site_members_template;
     1061
     1062        $defaults = array(
     1063            'type' => 'thumb',
     1064            'width' => false,
     1065            'height' => false,
     1066            'class' => 'avatar',
     1067            'id' => false,
     1068            'alt' => __( 'Member avatar', 'buddypress' )
     1069        );
     1070
     1071        $r = wp_parse_args( $args, $defaults );
     1072        extract( $r, EXTR_SKIP );
     1073
     1074        /* Fetch the avatar from the folder, if not provide backwards compat. */
     1075        if ( !$avatar = bp_core_fetch_avatar( array( 'item_id' => $site_members_template->member->id, 'type' => $type, 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height ) ) )
     1076            $avatar = '<img src="' . attribute_escape( $site_members_template->member->avatar_thumb ) . '" class="avatar" alt="' . __( 'Member avatar', 'buddypress' ) . '" />';
     1077
     1078        return apply_filters( 'bp_get_the_site_member_avatar', $avatar );
    10631079    }
    10641080
     
    10891105        global $site_members_template;
    10901106
    1091         return apply_filters( 'bp_the_site_member_last_active', $site_members_template->member->last_active );
     1107        $last_activity = attribute_escape( bp_core_get_last_activity( get_usermeta( $site_members_template->member->id, 'last_activity' ), __( 'active %s ago', 'buddypress' ) ) );
     1108
     1109        return apply_filters( 'bp_the_site_member_last_active', $last_activity );
     1110    }
     1111
     1112function bp_the_site_member_profile_data( $field_name = false ) {
     1113    echo bp_get_the_site_member_profile_data( $field_name );
     1114}
     1115    function bp_get_the_site_member_profile_data( $field_name = false ) {
     1116        global $site_members_template;
     1117
     1118        if ( !$field_name || !function_exists( 'xprofile_install' ) )
     1119            return false;
     1120
     1121        return apply_filters( 'bp_get_the_site_member_profile_data', $site_members_template->member->profile_data[$field_name]['field_data'], $site_members_template->member->profile_data[$field_name]['field_type'] );
    10921122    }
    10931123
     
    12081238}
    12091239    function bp_displayed_user_fullname() {
    1210         return bp_user_fullname();
     1240        global $bp;
     1241
     1242        return apply_filters( 'bp_displayed_user_fullname', $bp->displayed_user->fullname );
    12111243    }
    12121244
  • trunk/bp-core/deprecated/bp-core-deprecated.php

    r2077 r2088  
    332332    $blog_title = $filtered_results['blog_title'];
    333333    $errors = $filtered_results['errors'];
    334 
     334   
    335335    if ( empty($blogname) )
    336336        $blogname = $user_name;
  • trunk/bp-groups.php

    r2077 r2088  
    110110            item_id bigint(20) NOT NULL,
    111111            user_id bigint(20) NOT NULL,
     112            parent_id bigint(20) NOT NULL,
    112113            content longtext NOT NULL,
    113114            date_posted datetime NOT NULL,
    114115            KEY item_id (item_id),
    115             KEY user_id (user_id)
     116            KEY user_id (user_id),
     117            KEY parent_id (parent_id)
    116118           ) {$charset_collate};";
    117119
  • trunk/bp-groups/bp-groups-classes.php

    r2077 r2088  
    706706            $hidden_sql = " AND g.status != 'hidden'";
    707707
    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 ) );
     708        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY m.date_modified DESC {$pag_sql}", $user_id ) );
    709709        $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 ) );
    710710
     
    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 ) );
     728        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY CONVERT( total_member_count, SIGNED ) DESC {$pag_sql}", $user_id ) );
    729729        $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 ) );
    730730
     
    746746            $hidden_sql = " AND g.status != 'hidden'";
    747747
    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 ) );
     748        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.inviter_id = 0 AND m.is_banned = 0 ORDER BY last_activity DESC {$pag_sql}", $user_id ) );
    749749        $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 ) );
    750750
     
    766766            $hidden_sql = " AND g.status != 'hidden'";
    767767
    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 ) );
     768        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$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 ) );
    769769        $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 ) );
    770770
     
    786786            $hidden_sql = " AND g.status != 'hidden'";
    787787
    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 ) );
     788        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$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 m.date_modified ASC {$pag_sql}", $user_id ) );
    789789        $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 ) );
    790790
     
    806806            $hidden_sql = " AND g.status != 'hidden'";
    807807
    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 ) );
     808        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$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 m.date_modified ASC {$pag_sql}", $user_id ) );
    809809        $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 ) );
    810810
  • trunk/bp-groups/bp-groups-templatetags.php

    r2077 r2088  
    247247        $this->group = $this->next_group();
    248248
    249         // If this is a single group then instantiate group meta when creating the object.
    250         if ( $this->single_group ) {
    251             if ( !$group = wp_cache_get( 'groups_group_' . $this->group->group_id, 'bp' ) ) {
    252                 $group = new BP_Groups_Group( $this->group->group_id, true );
    253                 wp_cache_set( 'groups_group_' . $this->group->group_id, $group, 'bp' );
    254             }
    255         } else {
    256             if ( !$group = wp_cache_get( 'groups_group_nouserdata_' . $this->group->group_id, 'bp' ) ) {
    257                 $group = new BP_Groups_Group( $this->group->group_id, false, false );
    258                 wp_cache_set( 'groups_group_nouserdata_' . $this->group->group_id, $group, 'bp' );
    259             }
    260         }
    261 
    262         $this->group = $group;
     249        if ( $this->single_group )
     250            $this->group = new BP_Groups_Group( $this->group->group_id, true, true );
    263251
    264252        if ( 0 == $this->current_group ) // loop has just started
     
    282270    extract( $r, EXTR_SKIP );
    283271
    284     /* The following code will auto set parameters based on the page being viewed.
    285      * for example on example.com/members/andy/groups/my-groups/most-popular/
    286      * $type = 'most-popular'
    287      */
    288     if ( 'my-groups' == $bp->current_action ) {
    289         $order = $bp->action_variables[0];
    290         if ( 'recently-joined' == $order )
    291             $type = 'recently-joined';
    292         else if ( 'most-popular' == $order )
    293             $type = 'popular';
    294         else if ( 'admin-of' == $order )
    295             $type = 'admin-of';
    296         else if ( 'mod-of' == $order )
    297             $type = 'mod-of';
    298         else if ( 'alphabetically' == $order )
    299             $type = 'alphabetical';
    300     } else if ( 'invites' == $bp->current_action ) {
    301         $type = 'invites';
    302     } else if ( $bp->groups->current_group->slug ) {
    303         $type = 'single-group';
    304         $slug = $bp->groups->current_group->slug;
     272    if ( '' == $args ) {
     273        /* The following code will auto set parameters based on the page being viewed.
     274         * for example on example.com/members/andy/groups/my-groups/most-popular/
     275         * $type = 'most-popular'
     276         */
     277        if ( 'my-groups' == $bp->current_action ) {
     278            $order = $bp->action_variables[0];
     279            if ( 'recently-joined' == $order )
     280                $type = 'recently-joined';
     281            else if ( 'most-popular' == $order )
     282                $type = 'popular';
     283            else if ( 'admin-of' == $order )
     284                $type = 'admin-of';
     285            else if ( 'mod-of' == $order )
     286                $type = 'mod-of';
     287            else if ( 'alphabetically' == $order )
     288                $type = 'alphabetical';
     289        } else if ( 'invites' == $bp->current_action ) {
     290            $type = 'invites';
     291        } else if ( $bp->groups->current_group->slug ) {
     292            $type = 'single-group';
     293            $slug = $bp->groups->current_group->slug;
     294        }
    305295    }
    306296
     
    470460            $group =& $groups_template->group;
    471461
    472         $last_active = groups_get_groupmeta( $group->id, 'last_activity' );
     462        $last_active = $group->last_activity;
     463
     464        if ( !$last_active )
     465            $last_active = groups_get_groupmeta( $group->id, 'last_activity' );
    473466
    474467        if ( empty( $last_active ) ) {
     
    19971990    }
    19981991
    1999 function bp_the_site_group_avatar() {
    2000     echo bp_get_the_site_group_avatar();
    2001 }
    2002     function bp_get_the_site_group_avatar() {
     1992function bp_the_site_group_avatar( $args = '' ) {
     1993    echo bp_get_the_site_group_avatar( $args );
     1994}
     1995    function bp_get_the_site_group_avatar( $args = '' ) {
    20031996        global $site_groups_template;
    20041997
    2005         return apply_filters( 'bp_the_site_group_avatar', bp_core_fetch_avatar( array( 'item_id' => $site_groups_template->group->id, 'object' => 'group', 'type' => 'full', 'avatar_dir' => 'group-avatars', 'alt' => __( 'Group Avatar', 'buddypress' ) ) ) );
     1998        $defaults = array(
     1999            'type' => 'full',
     2000            'width' => false,
     2001            'height' => false,
     2002            'class' => 'avatar',
     2003            'id' => false,
     2004            'alt' => __( 'Group avatar', 'buddypress' )
     2005        );
     2006
     2007        $r = wp_parse_args( $args, $defaults );
     2008        extract( $r, EXTR_SKIP );
     2009
     2010        return apply_filters( 'bp_the_site_group_avatar', bp_core_fetch_avatar( array( 'item_id' => $site_groups_template->group->id, 'object' => 'group', 'type' => $type, 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height ) ) );
    20062011    }
    20072012
  • trunk/bp-xprofile.php

    r2077 r2088  
    11<?php
    2 define ( 'BP_XPROFILE_DB_VERSION', '1800' );
     2define ( 'BP_XPROFILE_DB_VERSION', '1850' );
    33
    44/* Define the slug for the component */
     
    110110               item_id bigint(20) NOT NULL,
    111111               user_id bigint(20) NOT NULL,
     112               parent_id bigint(20) NOT NULL,
    112113               content longtext NOT NULL,
    113114               date_posted datetime NOT NULL,
    114115               KEY item_id (item_id),
    115                KEY user_id (user_id)
     116               KEY user_id (user_id),
     117               KEY parent_id (parent_id)
    116118               ) {$charset_collate};";
    117119
     
    530532        return false;
    531533
    532     if ( !$wire_post = bp_wire_new_post( $bp->displayed_user->id, $_POST['wire-post-textarea'], $bp->profile->slug, false, $bp->profile->table_name_wire ) ) {
     534    if ( !$wire_post = bp_wire_new_post( $bp->displayed_user->id, $_POST['wire-post-textarea'], $bp->profile->id ) ) {
    533535        bp_core_add_message( __( 'Wire message could not be posted. Please try again.', 'buddypress' ), 'error' );
    534536    } else {
  • trunk/bp-xprofile/bp-xprofile-classes.php

    r2077 r2088  
    719719    /** Static Functions **/
    720720
     721    /**
     722     * BP_XProfile_ProfileData::get_all_for_user()
     723     *
     724     * Get all of the profile information for a specific user.
     725     */
     726    function get_all_for_user( $user_id ) {
     727        global $wpdb, $bp;
     728
     729        $results = $wpdb->get_results( $wpdb->prepare( "SELECT g.name as field_group_name, f.name as field_name, f.type as field_type, d.value as field_data, u.user_login, u.user_nicename, u.user_email FROM {$bp->profile->table_name_groups} g LEFT JOIN {$bp->profile->table_name_fields} f ON g.id = f.group_id INNER JOIN {$bp->profile->table_name_data} d ON f.id = d.field_id LEFT JOIN {$wpdb->users} u ON d.user_id = u.ID WHERE d.user_id = %d AND d.value != ''", $user_id ) );
     730
     731        if ( $results ) {
     732            $profile_data['user_login'] = $results[0]->user_login;
     733            $profile_data['user_nicename'] = $results[0]->user_nicename;
     734            $profile_data['user_email'] = $results[0]->user_email;
     735
     736            foreach( (array) $results as $field ) {
     737                $profile_data[$field->field_name] = array( 'field_group' => $field->field_group_name, 'field_type' => $field->field_type, 'field_data' => $field->field_data );
     738            }
     739        }
     740
     741        return $profile_data;
     742    }
     743
    721744    function get_value_byid( $field_id, $user_id = null ) {
    722745        global $wpdb, $bp;
  • trunk/bp-xprofile/bp-xprofile-filters.php

    r2077 r2088  
    33/* Apply WordPress defined filters */
    44add_filter( 'bp_get_the_profile_field_value', 'wp_filter_kses', 1 );
     5add_filter( 'bp_get_the_site_member_profile_data', 'wp_filter_kses', 1 );
    56add_filter( 'xprofile_get_field_data', 'wp_filter_kses', 1 );
    67add_filter( 'xprofile_field_name_before_save', 'wp_filter_kses', 1 );
     
    2021add_filter( 'bp_get_the_profile_field_value', 'force_balance_tags' );
    2122
     23add_filter( 'bp_get_the_site_member_profile_data', 'wptexturize' );
     24add_filter( 'bp_get_the_site_member_profile_data', 'convert_smilies', 2 );
     25add_filter( 'bp_get_the_site_member_profile_data', 'convert_chars' );
     26add_filter( 'bp_get_the_site_member_profile_data', 'make_clickable' );
     27add_filter( 'bp_get_the_site_member_profile_data', 'force_balance_tags' );
     28
    2229add_filter( 'bp_get_the_profile_field_value', 'xprofile_filter_format_field_value', 1, 2 );
     30add_filter( 'bp_get_the_site_member_profile_data', 'xprofile_filter_format_field_value', 1, 2 );
    2331add_filter( 'bp_get_the_profile_field_value', 'xprofile_filter_link_profile_data', 2, 2 );
    2432
     
    2735add_filter( 'xprofile_get_field_data', 'stripslashes' );
    2836add_filter( 'bp_get_the_profile_field_description', 'stripslashes' );
     37add_filter( 'bp_get_the_site_member_profile_data', 'stripslashes' );
    2938
    3039/* Custom BuddyPress filters */
Note: See TracChangeset for help on using the changeset viewer.