Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
01/21/2011 12:03:25 AM (15 years ago)
Author:
johnjamesjacoby
Message:

Move more user functions out of core component and into user component. Fixes to loaders. More code clean-up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-users/bp-users-template.php

    r3767 r3778  
    11<?php
     2
     3
     4/***
     5 * Members template loop that will allow you to loop all members or friends of a member
     6 * if you pass a user_id.
     7 */
     8
     9class BP_Core_Members_Template {
     10    var $current_member = -1;
     11    var $member_count;
     12    var $members;
     13    var $member;
     14
     15    var $in_the_loop;
     16
     17    var $pag_page;
     18    var $pag_num;
     19    var $pag_links;
     20    var $total_member_count;
     21
     22    function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude ) {
     23        global $bp;
     24
     25        $this->pag_page  = !empty( $_REQUEST['upage'] ) ? intval( $_REQUEST['upage'] ) : (int)$page_number;
     26        $this->pag_num   = !empty( $_REQUEST['num'] )   ? intval( $_REQUEST['num'] )   : (int)$per_page;
     27        $this->type      = $type;
     28
     29        if ( !$this->pag_num )
     30            $this->pag_num = 1;
     31
     32        if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] )
     33            $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude );
     34        else if ( false !== $include )
     35            $this->members = BP_Core_User::get_specific_users( $include, $this->pag_num, $this->pag_page, $populate_extras );
     36        else
     37            $this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'include' => $include, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras, 'exclude' => $exclude ) );
     38
     39        if ( !$max || $max >= (int)$this->members['total'] )
     40            $this->total_member_count = (int)$this->members['total'];
     41        else
     42            $this->total_member_count = (int)$max;
     43
     44        $this->members = $this->members['users'];
     45
     46        if ( $max ) {
     47            if ( $max >= count( $this->members ) ) {
     48                $this->member_count = count( $this->members );
     49            } else {
     50                $this->member_count = (int)$max;
     51            }
     52        } else {
     53            $this->member_count = count( $this->members );
     54        }
     55
     56        if ( (int)$this->total_member_count && (int)$this->pag_num ) {
     57            $this->pag_links = paginate_links( array(
     58                'base'      => add_query_arg( 'upage', '%#%' ),
     59                'format'    => '',
     60                'total'     => ceil( (int)$this->total_member_count / (int)$this->pag_num ),
     61                'current'   => (int) $this->pag_page,
     62                'prev_text' => '&larr;',
     63                'next_text' => '&rarr;',
     64                'mid_size'   => 1
     65            ) );
     66        }
     67    }
     68
     69    function has_members() {
     70        if ( $this->member_count )
     71            return true;
     72
     73        return false;
     74    }
     75
     76    function next_member() {
     77        $this->current_member++;
     78        $this->member = $this->members[$this->current_member];
     79
     80        return $this->member;
     81    }
     82
     83    function rewind_members() {
     84        $this->current_member = -1;
     85        if ( $this->member_count > 0 ) {
     86            $this->member = $this->members[0];
     87        }
     88    }
     89
     90    function members() {
     91        if ( $this->current_member + 1 < $this->member_count ) {
     92            return true;
     93        } elseif ( $this->current_member + 1 == $this->member_count ) {
     94            do_action('member_loop_end');
     95            // Do some cleaning up after the loop
     96            $this->rewind_members();
     97        }
     98
     99        $this->in_the_loop = false;
     100        return false;
     101    }
     102
     103    function the_member() {
     104        global $member, $bp;
     105
     106        $this->in_the_loop = true;
     107        $this->member = $this->next_member();
     108
     109        if ( 0 == $this->current_member ) // loop has just started
     110            do_action('member_loop_start');
     111    }
     112}
     113
     114function bp_rewind_members() {
     115    global $members_template;
     116
     117    return $members_template->rewind_members();
     118}
     119
     120function bp_has_members( $args = '' ) {
     121    global $bp, $members_template;
     122
     123    /***
     124     * Set the defaults based on the current page. Any of these will be overridden
     125     * if arguments are directly passed into the loop. Custom plugins should always
     126     * pass their parameters directly to the loop.
     127     */
     128    $type = 'active';
     129    $user_id = 0;
     130    $page = 1;
     131    $search_terms = null;
     132
     133    // User filtering
     134    if ( !empty( $bp->displayed_user->id ) )
     135        $user_id = $bp->displayed_user->id;
     136
     137    // type: active ( default ) | random | newest | popular | online | alphabetical
     138    $defaults = array(
     139        'type' => $type,
     140        'page' => $page,
     141        'per_page' => 20,
     142        'max' => false,
     143
     144        'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users
     145        'exclude' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users
     146
     147        'user_id' => $user_id, // Pass a user_id to only show friends of this user
     148        'search_terms' => $search_terms, // Pass search_terms to filter users by their profile data
     149
     150        'populate_extras' => true // Fetch usermeta? Friend count, last active etc.
     151    );
     152
     153    $r = wp_parse_args( $args, $defaults );
     154    extract( $r );
     155
     156    // Pass a filter if ?s= is set.
     157    if ( is_null( $search_terms ) ) {
     158        if ( isset( $_REQUEST['s'] ) && !empty( $_REQUEST['s'] ) )
     159            $search_terms = $_REQUEST['s'];
     160        else
     161            $search_terms = false;
     162    }
     163
     164    if ( $max ) {
     165        if ( $per_page > $max )
     166            $per_page = $max;
     167    }
     168
     169    // Make sure we return no members if we looking at friendship requests and there are none.
     170    if ( empty( $include ) && bp_is_current_component( $bp->friends->slug ) && 'requests' == $bp->current_action )
     171        return false;
     172
     173    $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude );
     174    return apply_filters( 'bp_has_members', $members_template->has_members(), $members_template );
     175}
     176
     177function bp_the_member() {
     178    global $members_template;
     179    return $members_template->the_member();
     180}
     181
     182function bp_members() {
     183    global $members_template;
     184    return $members_template->members();
     185}
     186
     187function bp_members_pagination_count() {
     188    echo bp_get_members_pagination_count();
     189}
     190    function bp_get_members_pagination_count() {
     191        global $bp, $members_template;
     192
     193        $start_num = intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1;
     194        $from_num = bp_core_number_format( $start_num );
     195        $to_num = bp_core_number_format( ( $start_num + ( $members_template->pag_num - 1 ) > $members_template->total_member_count ) ? $members_template->total_member_count : $start_num + ( $members_template->pag_num - 1 ) );
     196        $total = bp_core_number_format( $members_template->total_member_count );
     197
     198        if ( 'active' == $members_template->type )
     199            $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s active members)', 'buddypress' ), $from_num, $to_num, $total );
     200        else if ( 'popular' == $members_template->type )
     201            $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members with friends)', 'buddypress' ), $from_num, $to_num, $total );
     202        else if ( 'online' == $members_template->type )
     203            $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members online)', 'buddypress' ), $from_num, $to_num, $total );
     204        else
     205            $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members)', 'buddypress' ), $from_num, $to_num, $total );
     206
     207        return apply_filters( 'bp_members_pagination_count', $pag . '<span class="ajax-loader"></span>' );
     208    }
     209
     210function bp_members_pagination_links() {
     211    echo bp_get_members_pagination_links();
     212}
     213    function bp_get_members_pagination_links() {
     214        global $members_template;
     215
     216        return apply_filters( 'bp_get_members_pagination_links', $members_template->pag_links );
     217    }
     218
     219/**
     220 * bp_member_user_id()
     221 *
     222 * Echo id from bp_get_member_user_id()
     223 *
     224 * @uses bp_get_member_user_id()
     225 */
     226function bp_member_user_id() {
     227    echo bp_get_member_user_id();
     228}
     229    /**
     230     * bp_get_member_user_id()
     231     *
     232     * Get the id of the user in a members loop
     233     *
     234     * @global object $members_template
     235     * @return string Members id
     236     */
     237    function bp_get_member_user_id() {
     238        global $members_template;
     239
     240        return apply_filters( 'bp_get_member_user_id', $members_template->member->id );
     241    }
     242
     243/**
     244 * bp_member_user_nicename()
     245 *
     246 * Echo nicename from bp_get_member_user_nicename()
     247 *
     248 * @uses bp_get_member_user_nicename()
     249 */
     250function bp_member_user_nicename() {
     251    echo bp_get_member_user_nicename();
     252}
     253    /**
     254     * bp_get_member_user_nicename()
     255     *
     256     * Get the nicename of the user in a members loop
     257     *
     258     * @global object $members_template
     259     * @return string Members nicename
     260     */
     261    function bp_get_member_user_nicename() {
     262        global $members_template;
     263        return apply_filters( 'bp_get_member_user_nicename', $members_template->member->user_nicename );
     264    }
     265
     266/**
     267 * bp_member_user_login()
     268 *
     269 * Echo login from bp_get_member_user_login()
     270 *
     271 * @uses bp_get_member_user_login()
     272 */
     273function bp_member_user_login() {
     274    echo bp_get_member_user_login();
     275}
     276    /**
     277     * bp_get_member_user_login()
     278     *
     279     * Get the login of the user in a members loop
     280     *
     281     * @global object $members_template
     282     * @return string Members login
     283     */
     284    function bp_get_member_user_login() {
     285        global $members_template;
     286        return apply_filters( 'bp_get_member_user_login', $members_template->member->user_login );
     287    }
     288
     289/**
     290 * bp_member_user_email()
     291 *
     292 * Echo email address from bp_get_member_user_email()
     293 *
     294 * @uses bp_get_member_user_email()
     295 */
     296function bp_member_user_email() {
     297    echo bp_get_member_user_email();
     298}
     299    /**
     300     * bp_get_member_user_email()
     301     *
     302     * Get the email address of the user in a members loop
     303     *
     304     * @global object $members_template
     305     * @return string Members email address
     306     */
     307    function bp_get_member_user_email() {
     308        global $members_template;
     309        return apply_filters( 'bp_get_member_user_email', $members_template->member->user_email );
     310    }
     311
     312function bp_member_is_loggedin_user() {
     313    global $bp, $members_template;
     314    return apply_filters( 'bp_member_is_loggedin_user', $bp->loggedin_user->id == $members_template->member->id ? true : false );
     315}
     316
     317function bp_member_avatar( $args = '' ) {
     318    echo apply_filters( 'bp_member_avatar', bp_get_member_avatar( $args ) );
     319}
     320    function bp_get_member_avatar( $args = '' ) {
     321        global $bp, $members_template;
     322
     323        $defaults = array(
     324            'type' => 'thumb',
     325            'width' => false,
     326            'height' => false,
     327            'class' => 'avatar',
     328            'id' => false,
     329            'alt' => __( 'Profile picture of %s', 'buddypress' )
     330        );
     331
     332        $r = wp_parse_args( $args, $defaults );
     333        extract( $r, EXTR_SKIP );
     334
     335        return apply_filters( 'bp_get_member_avatar', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->id, 'type' => $type, 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height, 'email' => $members_template->member->user_email ) ) );
     336    }
     337
     338function bp_member_permalink() {
     339    echo bp_get_member_permalink();
     340}
     341    function bp_get_member_permalink() {
     342        global $members_template;
     343
     344        return apply_filters( 'bp_get_member_permalink', bp_core_get_user_domain( $members_template->member->id, $members_template->member->user_nicename, $members_template->member->user_login ) );
     345    }
     346    function bp_member_link() { echo bp_get_member_permalink(); }
     347    function bp_get_member_link() { return bp_get_member_permalink(); }
     348
     349function bp_member_name() {
     350    echo apply_filters( 'bp_member_name', bp_get_member_name() );
     351}
     352    function bp_get_member_name() {
     353        global $members_template;
     354
     355        if ( empty($members_template->member->fullname) )
     356            $members_template->member->fullname = $members_template->member->display_name;
     357
     358        return apply_filters( 'bp_get_member_name', $members_template->member->fullname );
     359    }
     360    add_filter( 'bp_get_member_name', 'wp_filter_kses' );
     361    add_filter( 'bp_get_member_name', 'stripslashes' );
     362    add_filter( 'bp_get_member_name', 'strip_tags' );
     363
     364function bp_member_last_active() {
     365    echo bp_get_member_last_active();
     366}
     367    function bp_get_member_last_active() {
     368        global $members_template;
     369
     370        $last_activity = bp_core_get_last_activity( $members_template->member->last_activity, __( 'active %s ago', 'buddypress' ) );
     371
     372        return apply_filters( 'bp_member_last_active', $last_activity );
     373    }
     374
     375function bp_member_latest_update( $args = '' ) {
     376    echo bp_get_member_latest_update( $args );
     377}
     378    function bp_get_member_latest_update( $args = '' ) {
     379        global $members_template, $bp;
     380
     381        $defaults = array(
     382            'length' => 70
     383        );
     384
     385        $r = wp_parse_args( $args, $defaults );
     386        extract( $r, EXTR_SKIP );
     387
     388        if ( !isset( $members_template->member->latest_update ) || !$update = maybe_unserialize( $members_template->member->latest_update ) )
     389            return false;
     390
     391        $update_content = apply_filters( 'bp_get_activity_latest_update', strip_tags( bp_create_excerpt( $update['content'], $length ) ) );
     392
     393        if ( !empty( $update['id'] ) )
     394            $update_content .= ' &middot; <a href="' . $bp->root_domain . '/' . $bp->activity->root_slug . '/p/' . $update['id'] . '">' . __( 'View', 'buddypress' ) . '</a>';
     395
     396        return apply_filters( 'bp_get_member_latest_update', $update_content );
     397    }
     398
     399function bp_member_profile_data( $args = '' ) {
     400    echo bp_get_member_profile_data( $args );
     401}
     402    function bp_get_member_profile_data( $args = '' ) {
     403        global $members_template;
     404
     405        if ( !bp_is_active( 'xprofile' ) )
     406            return false;
     407
     408        $defaults = array(
     409            'field' => false, // Field name
     410        );
     411
     412        $r = wp_parse_args( $args, $defaults );
     413        extract( $r, EXTR_SKIP );
     414
     415        // Populate the user if it hasn't been already.
     416        if ( empty( $members_template->member->profile_data ) && method_exists( 'BP_XProfile_ProfileData', 'get_all_for_user' ) )
     417            $members_template->member->profile_data = BP_XProfile_ProfileData::get_all_for_user( $members_template->member->id );
     418
     419        $data = xprofile_format_profile_field( $members_template->member->profile_data[$field]['field_type'], $members_template->member->profile_data[$field]['field_data'] );
     420
     421        return apply_filters( 'bp_get_member_profile_data', $data );
     422    }
     423
     424function bp_member_registered() {
     425    echo bp_get_member_registered();
     426}
     427    function bp_get_member_registered() {
     428        global $members_template;
     429
     430        $registered = esc_attr( bp_core_get_last_activity( $members_template->member->user_registered, __( 'registered %s ago', 'buddypress' ) ) );
     431
     432        return apply_filters( 'bp_member_last_active', $registered );
     433    }
     434
     435function bp_member_random_profile_data() {
     436    global $members_template;
     437
     438    if ( function_exists( 'xprofile_get_random_profile_data' ) ) { ?>
     439        <?php $random_data = xprofile_get_random_profile_data( $members_template->member->id, true ); ?>
     440            <strong><?php echo wp_filter_kses( $random_data[0]->name ) ?></strong>
     441            <?php echo wp_filter_kses( $random_data[0]->value ) ?>
     442    <?php }
     443}
     444
     445function bp_member_hidden_fields() {
     446    if ( isset( $_REQUEST['s'] ) )
     447        echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['s'] ) . '" name="search_terms" />';
     448
     449    if ( isset( $_REQUEST['letter'] ) )
     450        echo '<input type="hidden" id="selected_letter" value="' . esc_attr( $_REQUEST['letter'] ) . '" name="selected_letter" />';
     451
     452    if ( isset( $_REQUEST['members_search'] ) )
     453        echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['members_search'] ) . '" name="search_terms" />';
     454}
     455
     456function bp_directory_members_search_form() {
     457    global $bp;
     458
     459    $default_search_value = bp_get_search_default_text();
     460    $search_value = !empty( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : $default_search_value; ?>
     461
     462    <form action="" method="get" id="search-members-form">
     463        <label><input type="text" name="s" id="members_search" value="<?php echo esc_attr( $search_value ) ?>"  onfocus="if (this.value == '<?php echo $default_search_value ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php echo $default_search_value ?>';}" /></label>
     464        <input type="submit" id="members_search_submit" name="members_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
     465    </form>
     466
     467<?php
     468}
     469
     470function bp_total_site_member_count() {
     471    echo bp_get_total_site_member_count();
     472}
     473    function bp_get_total_site_member_count() {
     474        return apply_filters( 'bp_get_total_site_member_count', bp_core_number_format( bp_core_get_total_member_count() ) );
     475    }
     476
     477
     478/** Navigation and other misc template tags **/
     479
     480/**
     481 * bp_get_nav()
     482 * TEMPLATE TAG
     483 *
     484 * Uses the $bp->bp_nav global to render out the navigation within a BuddyPress install.
     485 * Each component adds to this navigation array within its own [component_name]_setup_nav() function.
     486 *
     487 * This navigation array is the top level navigation, so it contains items such as:
     488 *      [Blog, Profile, Messages, Groups, Friends] ...
     489 *
     490 * The function will also analyze the current component the user is in, to determine whether
     491 * or not to highlight a particular nav item.
     492 *
     493 * @package BuddyPress Core
     494 * @todo Move to a back-compat file?
     495 * @deprecated Does not seem to be called anywhere in the core
     496 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
     497 */
     498function bp_get_loggedin_user_nav() {
     499    global $bp, $current_blog;
     500
     501    // Loop through each navigation item
     502    foreach( (array) $bp->bp_nav as $nav_item ) {
     503        // If the current component matches the nav item id, then add a highlight CSS class.
     504        if ( !bp_is_directory() && $bp->active_components[$bp->current_component] == $nav_item['css_id'] )
     505            $selected = ' class="current selected"';
     506        else
     507            $selected = '';
     508
     509        /* If we are viewing another person (current_userid does not equal loggedin_user->id)
     510           then check to see if the two users are friends. if they are, add a highlight CSS class
     511           to the friends nav item if it exists. */
     512        if ( !bp_is_my_profile() && $bp->displayed_user->id ) {
     513            $selected = '';
     514
     515            if ( bp_is_active( 'friends' ) ) {
     516                if ( $nav_item['css_id'] == $bp->friends->id ) {
     517                    if ( friends_check_friendship( $bp->loggedin_user->id, $bp->displayed_user->id ) )
     518                        $selected = ' class="current selected"';
     519                }
     520            }
     521        }
     522
     523        // echo out the final list item
     524        echo apply_filters( 'bp_get_loggedin_user_nav_' . $nav_item['css_id'], '<li id="li-nav-' . $nav_item['css_id'] . '" ' . $selected . '><a id="my-' . $nav_item['css_id'] . '" href="' . $nav_item['link'] . '">' . $nav_item['name'] . '</a></li>', &$nav_item );
     525    }
     526
     527    // Always add a log out list item to the end of the navigation
     528    if ( function_exists( 'wp_logout_url' ) )
     529        $logout_link = '<li><a id="wp-logout" href="' .  wp_logout_url( $bp->root_domain ) . '">' . __( 'Log Out', 'buddypress' ) . '</a></li>';
     530    else
     531        $logout_link = '<li><a id="wp-logout" href="' . site_url() . '/wp-login.php?action=logout&amp;redirect_to=' . $bp->root_domain . '">' . __( 'Log Out', 'buddypress' ) . '</a></li>';
     532
     533    echo apply_filters( 'bp_logout_nav_link', $logout_link );
     534}
     535
     536/**
     537 * Uses the $bp->bp_nav global to render out the user navigation when viewing another user other than
     538 * yourself.
     539 *
     540 * @package BuddyPress Core
     541 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
     542 */
     543function bp_get_displayed_user_nav() {
     544    global $bp;
     545
     546    foreach ( (array)$bp->bp_nav as $user_nav_item ) {
     547        if ( !$user_nav_item['show_for_displayed_user'] && !bp_is_my_profile() )
     548            continue;
     549
     550        if ( $bp->current_component == $user_nav_item['slug'] )
     551            $selected = ' class="current selected"';
     552        else
     553            $selected = '';
     554
     555        if ( $bp->loggedin_user->domain )
     556            $link = str_replace( $bp->loggedin_user->domain, $bp->displayed_user->domain, $user_nav_item['link'] );
     557        else
     558            $link = $bp->displayed_user->domain . $user_nav_item['link'];
     559
     560        echo apply_filters( 'bp_get_displayed_user_nav_' . $user_nav_item['css_id'], '<li id="' . $user_nav_item['css_id'] . '-personal-li" ' . $selected . '><a id="user-' . $user_nav_item['css_id'] . '" href="' . $link . '">' . $user_nav_item['name'] . '</a></li>', &$user_nav_item );
     561    }
     562}
     563
     564/** Avatars *******************************************************************/
     565
     566function bp_loggedin_user_avatar( $args = '' ) {
     567    echo bp_get_loggedin_user_avatar( $args );
     568}
     569    function bp_get_loggedin_user_avatar( $args = '' ) {
     570        global $bp;
     571
     572        $defaults = array(
     573            'type'   => 'thumb',
     574            'width'  => false,
     575            'height' => false,
     576            'html'   => true,
     577            'alt'    => __( 'Profile picture of %s', 'buddypress' )
     578        );
     579
     580        $r = wp_parse_args( $args, $defaults );
     581        extract( $r, EXTR_SKIP );
     582
     583        return apply_filters( 'bp_get_loggedin_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->loggedin_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html, 'alt' => $alt ) ) );
     584    }
     585
     586function bp_displayed_user_avatar( $args = '' ) {
     587    echo bp_get_displayed_user_avatar( $args );
     588}
     589    function bp_get_displayed_user_avatar( $args = '' ) {
     590        global $bp;
     591
     592        $defaults = array(
     593            'type'   => 'thumb',
     594            'width'  => false,
     595            'height' => false,
     596            'html'   => true,
     597            'alt'    => __( 'Profile picture of %s', 'buddypress' )
     598        );
     599
     600        $r = wp_parse_args( $args, $defaults );
     601        extract( $r, EXTR_SKIP );
     602
     603        return apply_filters( 'bp_get_displayed_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html, 'alt' => $alt ) ) );
     604    }
    2605
    3606function bp_displayed_user_email() {
     
    16619    }
    17620
     621function bp_last_activity( $user_id = 0 ) {
     622    echo apply_filters( 'bp_last_activity', bp_get_last_activity( $user_id ) );
     623}
     624    function bp_get_last_activity( $user_id = 0 ) {
     625        global $bp;
     626
     627        if ( empty( $user_id ) )
     628            $user_id = $bp->displayed_user->id;
     629
     630        $last_activity = bp_core_get_last_activity( get_user_meta( $user_id, 'last_activity', true ), __('active %s ago', 'buddypress') );
     631
     632        return apply_filters( 'bp_get_last_activity', $last_activity );
     633    }   
     634
     635function bp_user_has_access() {
     636    global $bp;
     637
     638    if ( is_super_admin() || is_user_logged_in() && $bp->loggedin_user->id == $bp->displayed_user->id )
     639        $has_access = true;
     640    else
     641        $has_access = false;
     642
     643    return apply_filters( 'bp_user_has_access', $has_access );
     644}
     645
     646function bp_user_firstname() {
     647    echo bp_get_user_firstname();
     648}
     649    function bp_get_user_firstname( $name = false ) {
     650        global $bp;
     651
     652        // Try to get displayed user
     653        if ( empty( $name ) )
     654            $name = $bp->displayed_user->fullname;
     655
     656        // Fall back on logged in user
     657        if ( empty( $name ) )
     658            $name = $bp->loggedin_user->fullname;
     659
     660        $fullname = (array)explode( ' ', $name );
     661
     662        return apply_filters( 'bp_get_user_firstname', $fullname[0], $fullname );
     663    }
     664
     665function bp_loggedin_user_link() {
     666    echo bp_get_loggedin_user_link();
     667}
     668    function bp_get_loggedin_user_link() {
     669        global $bp;
     670
     671        return apply_filters( 'bp_get_loggedin_user_link', $bp->loggedin_user->domain );
     672    }
     673
     674/* @todo Deprecate incorrectly named function? */
     675function bp_loggedinuser_link() {
     676    global $bp;
     677
     678    if ( $link = bp_core_get_userlink( $bp->loggedin_user->id ) )
     679        echo apply_filters( 'bp_loggedin_user_link', $link );
     680}
     681
     682function bp_displayed_user_link() {
     683    echo bp_get_displayed_user_link();
     684}
     685    function bp_get_displayed_user_link() {
     686        global $bp;
     687
     688        return apply_filters( 'bp_get_displayed_user_link', $bp->displayed_user->domain );
     689    }
     690    function bp_user_link() { bp_displayed_user_link(); } // Deprecated.
     691
     692function bp_displayed_user_id() {
     693    global $bp;
     694    return apply_filters( 'bp_displayed_user_id', $bp->displayed_user->id );
     695}
     696    function bp_current_user_id() { return bp_displayed_user_id(); }
     697
     698function bp_loggedin_user_id() {
     699    global $bp;
     700    return apply_filters( 'bp_loggedin_user_id', $bp->loggedin_user->id );
     701}
     702
     703function bp_displayed_user_domain() {
     704    global $bp;
     705    return apply_filters( 'bp_displayed_user_domain', $bp->displayed_user->domain );
     706}
     707
     708function bp_loggedin_user_domain() {
     709    global $bp;
     710    return apply_filters( 'bp_loggedin_user_domain', $bp->loggedin_user->domain );
     711}
     712
     713function bp_displayed_user_fullname() {
     714    echo bp_get_displayed_user_fullname();
     715}
     716    function bp_get_displayed_user_fullname() {
     717        global $bp;
     718
     719        return apply_filters( 'bp_displayed_user_fullname', $bp->displayed_user->fullname );
     720    }
     721    function bp_user_fullname() { echo bp_get_displayed_user_fullname(); }
     722
     723
     724function bp_loggedin_user_fullname() {
     725    echo bp_get_loggedin_user_fullname();
     726}
     727    function bp_get_loggedin_user_fullname() {
     728        global $bp;
     729        return apply_filters( 'bp_get_loggedin_user_fullname', $bp->loggedin_user->fullname );
     730    }
     731
     732function bp_displayed_user_username() {
     733    echo bp_get_displayed_user_username();
     734}
     735    function bp_get_displayed_user_username() {
     736        global $bp;
     737        return apply_filters( 'bp_get_displayed_user_username', bp_core_get_username( $bp->displayed_user->id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) );
     738    }
     739
     740function bp_loggedin_user_username() {
     741    echo bp_get_loggedin_user_username();
     742}
     743    function bp_get_loggedin_user_username() {
     744        global $bp;
     745        return apply_filters( 'bp_get_loggedin_user_username', bp_core_get_username( $bp->loggedin_user->id, $bp->loggedin_user->userdata->user_nicename, $bp->loggedin_user->userdata->user_login ) );
     746    }
     747
     748/** Signup Form ***************************************************************/
     749
     750function bp_has_custom_signup_page() {
     751    if ( locate_template( array( 'register.php' ), false ) || locate_template( array( '/registration/register.php' ), false ) )
     752        return true;
     753
     754    return false;
     755}
     756
     757function bp_signup_page() {
     758    echo bp_get_signup_page();
     759}
     760    function bp_get_signup_page() {
     761        global $bp;
     762
     763        if ( bp_has_custom_signup_page() )
     764            $page = $bp->root_domain . '/' . BP_REGISTER_SLUG;
     765        else
     766            $page = $bp->root_domain . '/wp-signup.php';
     767
     768        return apply_filters( 'bp_get_signup_page', $page );
     769    }
     770
     771function bp_has_custom_activation_page() {
     772    if ( locate_template( array( 'activate.php' ), false ) || locate_template( array( '/registration/activate.php' ), false ) )
     773        return true;
     774
     775    return false;
     776}
     777
     778function bp_activation_page() {
     779    echo bp_get_activation_page();
     780}
     781    function bp_get_activation_page() {
     782        global $bp;
     783
     784        if ( bp_has_custom_activation_page() )
     785            $page = trailingslashit( $bp->root_domain ) . BP_ACTIVATION_SLUG;
     786        else
     787            $page = trailingslashit( $bp->root_domain ) . 'wp-activate.php';
     788
     789        return apply_filters( 'bp_get_activation_page', $page );
     790    }
     791
     792function bp_signup_username_value() {
     793    echo bp_get_signup_username_value();
     794}
     795    function bp_get_signup_username_value() {
     796        $value = '';
     797        if ( isset( $_POST['signup_username'] ) )
     798            $value = $_POST['signup_username'];
     799
     800        return apply_filters( 'bp_get_signup_username_value', $value );
     801    }
     802
     803function bp_signup_email_value() {
     804    echo bp_get_signup_email_value();
     805}
     806    function bp_get_signup_email_value() {
     807        $value = '';
     808        if ( isset( $_POST['signup_email'] ) )
     809            $value = $_POST['signup_email'];
     810
     811        return apply_filters( 'bp_get_signup_email_value', $value );
     812    }
     813
     814function bp_signup_with_blog_value() {
     815    echo bp_get_signup_with_blog_value();
     816}
     817    function bp_get_signup_with_blog_value() {
     818        $value = '';
     819        if ( isset( $_POST['signup_with_blog'] ) )
     820            $value = $_POST['signup_with_blog'];
     821
     822        return apply_filters( 'bp_get_signup_with_blog_value', $value );
     823    }
     824
     825function bp_signup_blog_url_value() {
     826    echo bp_get_signup_blog_url_value();
     827}
     828    function bp_get_signup_blog_url_value() {
     829        $value = '';
     830        if ( isset( $_POST['signup_blog_url'] ) )
     831            $value = $_POST['signup_blog_url'];
     832
     833        return apply_filters( 'bp_get_signup_blog_url_value', $value );
     834    }
     835
     836function bp_signup_blog_title_value() {
     837    echo bp_get_signup_blog_title_value();
     838}
     839    function bp_get_signup_blog_title_value() {
     840        $value = '';
     841        if ( isset( $_POST['signup_blog_title'] ) )
     842            $value = $_POST['signup_blog_title'];
     843
     844        return apply_filters( 'bp_get_signup_blog_title_value', $value );
     845    }
     846
     847function bp_signup_blog_privacy_value() {
     848    echo bp_get_signup_blog_privacy_value();
     849}
     850    function bp_get_signup_blog_privacy_value() {
     851        $value = '';
     852        if ( isset( $_POST['signup_blog_privacy'] ) )
     853            $value = $_POST['signup_blog_privacy'];
     854
     855        return apply_filters( 'bp_get_signup_blog_privacy_value', $value );
     856    }
     857
     858function bp_signup_avatar_dir_value() {
     859    echo bp_get_signup_avatar_dir_value();
     860}
     861    function bp_get_signup_avatar_dir_value() {
     862        global $bp;
     863
     864        return apply_filters( 'bp_get_signup_avatar_dir_value', $bp->signup->avatar_dir );
     865    }
     866
     867function bp_current_signup_step() {
     868    echo bp_get_current_signup_step();
     869}
     870    function bp_get_current_signup_step() {
     871        global $bp;
     872
     873        return $bp->signup->step;
     874    }
     875
     876function bp_signup_avatar( $args = '' ) {
     877    echo bp_get_signup_avatar( $args );
     878}
     879    function bp_get_signup_avatar( $args = '' ) {
     880        global $bp;
     881
     882        $defaults = array(
     883            'size' => BP_AVATAR_FULL_WIDTH,
     884            'class' => 'avatar',
     885            'alt' => __( 'Your Avatar', 'buddypress' )
     886        );
     887
     888        $r = wp_parse_args( $args, $defaults );
     889        extract( $r, EXTR_SKIP );
     890
     891        if ( !empty( $_POST['signup_avatar_dir'] ) ) {
     892            $signup_avatar_dir = $_POST['signup_avatar_dir'];
     893        } else if ( !empty( $bp->signup->avatar_dir ) ) {
     894            $signup_avatar_dir = $bp->signup->avatar_dir;
     895        }
     896
     897        if ( empty( $signup_avatar_dir ) ) {
     898            if ( empty( $bp->grav_default->user ) ) {
     899                $default_grav = 'wavatar';
     900            } else if ( 'mystery' == $bp->grav_default->user ) {
     901                $default_grav = apply_filters( 'bp_core_mysteryman_src', BP_PLUGIN_URL . '/bp-core/images/mystery-man.jpg' );
     902            } else {
     903                $default_grav = $bp->grav_default->user;
     904            }
     905
     906            $gravatar_url = apply_filters( 'bp_gravatar_url', 'http://www.gravatar.com/avatar/' );
     907            $gravatar_img = '<img src="' . $gravatar_url . md5( strtolower( $_POST['signup_email'] ) ) . '?d=' . $default_grav . '&amp;s=' . $size . '" width="' . $size . '" height="' . $size . '" alt="' . $alt . '" class="' . $class . '" />';
     908        } else {
     909            $gravatar_img = bp_core_fetch_avatar( array( 'item_id' => $signup_avatar_dir, 'object' => 'signup', 'avatar_dir' => 'avatars/signups', 'type' => 'full', 'width' => $size, 'height' => $size, 'alt' => $alt, 'class' => $class ) );
     910        }
     911
     912        return apply_filters( 'bp_get_signup_avatar', $gravatar_img );
     913    }
     914
     915function bp_signup_allowed() {
     916    echo bp_get_signup_allowed();
     917}
     918    function bp_get_signup_allowed() {
     919        global $bp;
     920
     921        if ( is_multisite() ) {
     922            if ( in_array( $bp->site_options['registration'], array( 'all', 'user' ) ) )
     923                return true;
     924        } else {
     925            if ( (int)get_option( 'users_can_register') )
     926                return true;
     927        }
     928        return false;
     929    }
     930
     931/**
     932 * Hook member activity feed to <head>
     933 *
     934 * @since 1.3
     935 */
     936function bp_users_activity_feed() {
     937    if ( !bp_is_active( 'activity' ) || !bp_is_member() )
     938        return; ?>
     939
     940    <link rel="alternate" type="application/rss+xml" title="<?php bloginfo( 'name' ) ?> | <?php bp_displayed_user_fullname() ?> | <?php _e( 'Activity RSS Feed', 'buddypress' ) ?>" href="<?php bp_member_activity_feed_link() ?>" />
     941
     942<?php
     943}
     944add_action( 'bp_head', 'bp_users_activity_feed' );
     945
    18946?>
Note: See TracChangeset for help on using the changeset viewer.