members->slug ); } /** * Output the members component root slug * * @package BuddyPress * @subpackage Members Template * @since 1.5 * * @uses bp_get_members_root_slug() */ function bp_members_root_slug() { echo bp_get_members_root_slug(); } /** * Return the members component root slug * * @package BuddyPress * @subpackage Members Template * @since 1.5 */ function bp_get_members_root_slug() { global $bp; return apply_filters( 'bp_get_members_root_slug', $bp->members->root_slug ); } /** * Output member directory permalink * * @package BuddyPress * @subpackage Members Template * @since 1.5 * @uses bp_get_members_directory_permalink() */ function bp_members_directory_permalink() { echo bp_get_members_directory_permalink(); } /** * Return member directory permalink * * @package BuddyPress * @subpackage Members Template * @since 1.5 * @uses apply_filters() * @uses traisingslashit() * @uses bp_get_root_domain() * @uses bp_get_members_root_slug() * @return string */ function bp_get_members_directory_permalink() { return apply_filters( 'bp_get_members_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_members_root_slug() ) ); } /** * Output the sign-up slug * * @package BuddyPress * @subpackage Members Template * @since 1.5 * * @uses bp_get_signup_slug() */ function bp_signup_slug() { echo bp_get_signup_slug(); } /** * Return the sign-up slug * * @package BuddyPress * @subpackage Members Template * @since 1.5 */ function bp_get_signup_slug() { global $bp; if ( !empty( $bp->pages->register->slug ) ) $slug = $bp->pages->register->slug; elseif ( defined( 'BP_REGISTER_SLUG' ) ) $slug = BP_REGISTER_SLUG; else $slug = 'register'; return apply_filters( 'bp_get_signup_slug', $slug ); } /** * Output the activation slug * * @package BuddyPress * @subpackage Members Template * @since 1.5 * * @uses bp_get_activate_slug() */ function bp_activate_slug() { echo bp_get_activate_slug(); } /** * Return the activation slug * * @package BuddyPress * @subpackage Members Template * @since 1.5 */ function bp_get_activate_slug() { global $bp; if ( !empty( $bp->pages->activate->slug ) ) $slug = $bp->pages->activate->slug; elseif ( defined( 'BP_ACTIVATION_SLUG' ) ) $slug = BP_ACTIVATION_SLUG; else $slug = 'activate'; return apply_filters( 'bp_get_activate_slug', $slug ); } /*** * Members template loop that will allow you to loop all members or friends of a member * if you pass a user_id. */ class BP_Core_Members_Template { var $current_member = -1; var $member_count; var $members; var $member; var $in_the_loop; var $pag_page; var $pag_num; var $pag_links; var $total_member_count; function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ) { $this->__construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ); } function __construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ) { global $bp; $this->pag_page = !empty( $_REQUEST['upage'] ) ? intval( $_REQUEST['upage'] ) : (int)$page_number; $this->pag_num = !empty( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : (int)$per_page; $this->type = $type; if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] ) $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude ); else if ( false !== $include ) $this->members = BP_Core_User::get_specific_users( $include, $this->pag_num, $this->pag_page, $populate_extras ); else $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, 'meta_key' => $meta_key, 'meta_value' => $meta_value ) ); if ( !$max || $max >= (int)$this->members['total'] ) $this->total_member_count = (int)$this->members['total']; else $this->total_member_count = (int)$max; $this->members = $this->members['users']; if ( $max ) { if ( $max >= count( $this->members ) ) { $this->member_count = count( $this->members ); } else { $this->member_count = (int)$max; } } else { $this->member_count = count( $this->members ); } if ( (int)$this->total_member_count && (int)$this->pag_num ) { $this->pag_links = paginate_links( array( 'base' => add_query_arg( 'upage', '%#%' ), 'format' => '', 'total' => ceil( (int)$this->total_member_count / (int)$this->pag_num ), 'current' => (int) $this->pag_page, 'prev_text' => _x( '←', 'Member pagination previous text', 'buddypress' ), 'next_text' => _x( '→', 'Member pagination next text', 'buddypress' ), 'mid_size' => 1 ) ); } } function has_members() { if ( $this->member_count ) return true; return false; } function next_member() { $this->current_member++; $this->member = $this->members[$this->current_member]; return $this->member; } function rewind_members() { $this->current_member = -1; if ( $this->member_count > 0 ) { $this->member = $this->members[0]; } } function members() { if ( $this->current_member + 1 < $this->member_count ) { return true; } elseif ( $this->current_member + 1 == $this->member_count ) { do_action('member_loop_end'); // Do some cleaning up after the loop $this->rewind_members(); } $this->in_the_loop = false; return false; } function the_member() { global $member, $bp; $this->in_the_loop = true; $this->member = $this->next_member(); if ( 0 == $this->current_member ) // loop has just started do_action('member_loop_start'); } } function bp_rewind_members() { global $members_template; return $members_template->rewind_members(); } function bp_has_members( $args = '' ) { global $bp, $members_template; /*** * Set the defaults based on the current page. Any of these will be overridden * if arguments are directly passed into the loop. Custom plugins should always * pass their parameters directly to the loop. */ $type = 'active'; $user_id = 0; $page = 1; $search_terms = null; // User filtering if ( !empty( $bp->displayed_user->id ) ) $user_id = $bp->displayed_user->id; // type: active ( default ) | random | newest | popular | online | alphabetical $defaults = array( 'type' => $type, 'page' => $page, 'per_page' => 20, 'max' => false, 'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users 'exclude' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users 'user_id' => $user_id, // Pass a user_id to only show friends of this user 'search_terms' => $search_terms, // Pass search_terms to filter users by their profile data 'meta_key' => false, // Only return users with this usermeta 'meta_value' => false, // Only return users where the usermeta value matches. Requires meta_key 'populate_extras' => true // Fetch usermeta? Friend count, last active etc. ); $r = wp_parse_args( $args, $defaults ); extract( $r ); // Pass a filter if ?s= is set. if ( is_null( $search_terms ) ) { if ( !empty( $_REQUEST['s'] ) ) $search_terms = $_REQUEST['s']; else $search_terms = false; } // Set per_page to max if max is larger than per_page if ( !empty( $max ) && ( $per_page > $max ) ) $per_page = $max; // Make sure we return no members if we looking at friendship requests and there are none. if ( empty( $include ) && bp_is_friends_component() && bp_is_current_action( 'requests' ) ) return false; $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude, $meta_key, $meta_value ); return apply_filters( 'bp_has_members', $members_template->has_members(), $members_template ); } function bp_the_member() { global $members_template; return $members_template->the_member(); } function bp_members() { global $members_template; return $members_template->members(); } function bp_members_pagination_count() { echo bp_get_members_pagination_count(); } function bp_get_members_pagination_count() { global $bp, $members_template; if ( empty( $members_template->type ) ) $members_template->type = ''; $start_num = intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1; $from_num = bp_core_number_format( $start_num ); $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 ) ); $total = bp_core_number_format( $members_template->total_member_count ); if ( 'active' == $members_template->type ) $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s active members)', 'buddypress' ), $from_num, $to_num, $total ); else if ( 'popular' == $members_template->type ) $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members with friends)', 'buddypress' ), $from_num, $to_num, $total ); else if ( 'online' == $members_template->type ) $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members online)', 'buddypress' ), $from_num, $to_num, $total ); else $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members)', 'buddypress' ), $from_num, $to_num, $total ); return apply_filters( 'bp_members_pagination_count', $pag ); } function bp_members_pagination_links() { echo bp_get_members_pagination_links(); } function bp_get_members_pagination_links() { global $members_template; return apply_filters( 'bp_get_members_pagination_links', $members_template->pag_links ); } /** * bp_member_user_id() * * Echo id from bp_get_member_user_id() * * @uses bp_get_member_user_id() */ function bp_member_user_id() { echo bp_get_member_user_id(); } /** * bp_get_member_user_id() * * Get the id of the user in a members loop * * @global object $members_template * @return string Members id */ function bp_get_member_user_id() { global $members_template; return apply_filters( 'bp_get_member_user_id', $members_template->member->id ); } /** * bp_member_user_nicename() * * Echo nicename from bp_get_member_user_nicename() * * @uses bp_get_member_user_nicename() */ function bp_member_user_nicename() { echo bp_get_member_user_nicename(); } /** * bp_get_member_user_nicename() * * Get the nicename of the user in a members loop * * @global object $members_template * @return string Members nicename */ function bp_get_member_user_nicename() { global $members_template; return apply_filters( 'bp_get_member_user_nicename', $members_template->member->user_nicename ); } /** * bp_member_user_login() * * Echo login from bp_get_member_user_login() * * @uses bp_get_member_user_login() */ function bp_member_user_login() { echo bp_get_member_user_login(); } /** * bp_get_member_user_login() * * Get the login of the user in a members loop * * @global object $members_template * @return string Members login */ function bp_get_member_user_login() { global $members_template; return apply_filters( 'bp_get_member_user_login', $members_template->member->user_login ); } /** * bp_member_user_email() * * Echo email address from bp_get_member_user_email() * * @uses bp_get_member_user_email() */ function bp_member_user_email() { echo bp_get_member_user_email(); } /** * bp_get_member_user_email() * * Get the email address of the user in a members loop * * @global object $members_template * @return string Members email address */ function bp_get_member_user_email() { global $members_template; return apply_filters( 'bp_get_member_user_email', $members_template->member->user_email ); } function bp_member_is_loggedin_user() { global $bp, $members_template; return apply_filters( 'bp_member_is_loggedin_user', $bp->loggedin_user->id == $members_template->member->id ? true : false ); } function bp_member_avatar( $args = '' ) { echo apply_filters( 'bp_member_avatar', bp_get_member_avatar( $args ) ); } function bp_get_member_avatar( $args = '' ) { global $bp, $members_template; $defaults = array( 'type' => 'thumb', 'width' => false, 'height' => false, 'class' => 'avatar', 'id' => false, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); 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 ) ) ); } function bp_member_permalink() { echo bp_get_member_permalink(); } function bp_get_member_permalink() { global $members_template; 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 ) ); } function bp_member_link() { echo bp_get_member_permalink(); } function bp_get_member_link() { return bp_get_member_permalink(); } /** * Echoes bp_get_member_name() * * @package BuddyPress */ function bp_member_name() { echo apply_filters( 'bp_member_name', bp_get_member_name() ); } /** * Used inside a bp_has_members() loop, this function returns a user's full name * * Full name is, by default, pulled from xprofile's Full Name field. When this field is * empty, we try to get an alternative name from the WP users table, in the following order * of preference: display_name, user_nicename, user_login. * * @package BuddyPress * * @uses apply_filters() Filter bp_get_the_member_name() to alter the function's output * @return str The user's fullname for display */ function bp_get_member_name() { global $members_template; // Generally, this only fires when xprofile is disabled if ( empty( $members_template->member->fullname ) ) { // Our order of preference for alternative fullnames $name_stack = array( 'display_name', 'user_nicename', 'user_login' ); foreach ( $name_stack as $source ) { if ( !empty( $members_template->member->{$source} ) ) { // When a value is found, set it as fullname and be done // with it $members_template->member->fullname = $members_template->member->{$source}; break; } } } return apply_filters( 'bp_get_member_name', $members_template->member->fullname ); } add_filter( 'bp_get_member_name', 'wp_filter_kses' ); add_filter( 'bp_get_member_name', 'stripslashes' ); add_filter( 'bp_get_member_name', 'strip_tags' ); function bp_member_last_active() { echo bp_get_member_last_active(); } function bp_get_member_last_active() { global $members_template; if ( isset( $members_template->member->last_activity ) ) $last_activity = bp_core_get_last_activity( $members_template->member->last_activity, __( 'active %s', 'buddypress' ) ); else $last_activity = __( 'Never active', 'buddypress' ); return apply_filters( 'bp_member_last_active', $last_activity ); } function bp_member_latest_update( $args = '' ) { echo bp_get_member_latest_update( $args ); } function bp_get_member_latest_update( $args = '' ) { global $bp, $members_template; $defaults = array( 'length' => 225, 'view_link' => true ); $r = wp_parse_args( $args, $defaults ); extract( $r ); if ( !bp_is_active( 'activity' ) || empty( $members_template->member->latest_update ) || !$update = maybe_unserialize( $members_template->member->latest_update ) ) return false; $update_content = apply_filters( 'bp_get_activity_latest_update_excerpt', sprintf( _x( '- "%s "', 'member latest update in member directory', 'buddypress' ), trim( strip_tags( bp_create_excerpt( $update['content'], $length ) ) ) ) ); // If $view_link is true and the text returned by bp_create_excerpt() is different from the original text (ie it's // been truncated), add the "View" link. if ( $view_link && ( $update_content != $update['content'] ) ) { $view = __( 'View', 'buddypress' ); $update_content .= '' . $view . ''; } return apply_filters( 'bp_get_member_latest_update', $update_content ); } function bp_member_profile_data( $args = '' ) { echo bp_get_member_profile_data( $args ); } function bp_get_member_profile_data( $args = '' ) { global $bp, $members_template; if ( !bp_is_active( 'xprofile' ) ) return false; // Declare local variables $data = false; $user_id = 0; // Guess at default $user_id if ( !empty( $members_template->member->id ) ) $user_id = $members_template->member->id; elseif ( !empty( $bp->displayed_user->id ) ) $user_id = $bp->displayed_user->id; $defaults = array( 'field' => false, // Field name 'user_id' => $user_id ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); // Populate the user if it hasn't been already. if ( empty( $members_template->member->profile_data ) && method_exists( 'BP_XProfile_ProfileData', 'get_all_for_user' ) ) $members_template->member->profile_data = BP_XProfile_ProfileData::get_all_for_user( $user_id ); // Get the field data if there is data to get if ( !empty( $members_template->member->profile_data ) ) $data = xprofile_format_profile_field( $members_template->member->profile_data[$field]['field_type'], $members_template->member->profile_data[$field]['field_data'] ); return apply_filters( 'bp_get_member_profile_data', $data ); } function bp_member_registered() { echo bp_get_member_registered(); } function bp_get_member_registered() { global $members_template; $registered = esc_attr( bp_core_get_last_activity( $members_template->member->user_registered, __( 'registered %s', 'buddypress' ) ) ); return apply_filters( 'bp_member_last_active', $registered ); } function bp_member_random_profile_data() { global $members_template; if ( bp_is_active( 'xprofile' ) ) { ?> member->id, true ); ?> name ) ?> value ) ?> '; if ( isset( $_REQUEST['letter'] ) ) echo ''; if ( isset( $_REQUEST['members_search'] ) ) echo ''; } function bp_directory_members_search_form() { global $bp; $default_search_value = bp_get_search_default_text( 'members' ); $search_value = !empty( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : $default_search_value; ?>
bp_nav global to render out the navigation within a BuddyPress install. * Each component adds to this navigation array within its own [component_name]setup_nav() function. * * This navigation array is the top level navigation, so it contains items such as: * [Blog, Profile, Messages, Groups, Friends] ... * * The function will also analyze the current component the user is in, to determine whether * or not to highlight a particular nav item. * * @package BuddyPress Core * @todo Move to a back-compat file? * @deprecated Does not seem to be called anywhere in the core * @global object $bp Global BuddyPress settings object */ function bp_get_loggedin_user_nav() { global $bp; // Loop through each navigation item foreach( (array) $bp->bp_nav as $nav_item ) { // If the current component matches the nav item id, then add a highlight CSS class. if ( !bp_is_directory() && $bp->active_components[$bp->current_component] == $nav_item['css_id'] ) $selected = ' class="current selected"'; else $selected = ''; /* If we are viewing another person (current_userid does not equal loggedin_user->id) then check to see if the two users are friends. if they are, add a highlight CSS class to the friends nav item if it exists. */ if ( !bp_is_my_profile() && $bp->displayed_user->id ) { $selected = ''; if ( bp_is_active( 'friends' ) ) { if ( $nav_item['css_id'] == $bp->friends->id ) { if ( friends_check_friendship( $bp->loggedin_user->id, $bp->displayed_user->id ) ) $selected = ' class="current selected"'; } } } // echo out the final list item echo apply_filters_ref_array( 'bp_get_loggedin_user_nav_' . $nav_item['css_id'], array( '