BP_Core_Whos_Online_Widget::widget( array $args, array $instance )
Display the Who’s Online widget.
Description
See also
- WP_Widget::widget(): for description of parameters.
Parameters
- $args
-
(Required) Widget arguments.
- $instance
-
(Required) Widget settings, as saved by the user.
Source
File: bp-members/classes/class-bp-core-whos-online-widget.php
public function widget( $args, $instance ) { global $members_template; // Get widget settings. $settings = $this->parse_settings( $instance ); /** * Filters the title of the Who's Online widget. * * @since BuddyPress 1.8.0 * @since BuddyPress 2.3.0 Added 'instance' and 'id_base' to arguments passed to filter. * * @param string $title The widget title. * @param array $settings The settings for the particular instance of the widget. * @param string $id_base Root ID for all widgets of this type. */ $title = apply_filters( 'widget_title', $settings['title'], $settings, $this->id_base ); //echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title']; // Setup args for querying members. $members_args = array( 'user_id' => 0, 'type' => 'online', 'per_page' => $settings['max_members'], 'max' => $settings['max_members'], 'populate_extras' => true, 'search_terms' => false, ); $total_online = 0; if ( function_exists( 'bp_get_total_online_member_count' ) ){ $total_online = bp_get_total_online_member_count(); } $refresh_online_users = '<a href="" class="bs-widget-reload bs-heartbeat-reload hide" title="reload"><i class="bb-icon-spin6"></i></a>'; echo $args['before_widget'] . $args['before_title'] . $title . $refresh_online_users . $args['after_title']; // Back up global. $old_members_template = $members_template; $separator = apply_filters( 'bp_members_online_widget_separator', '|' ); ?> <div class="item-options" id="who-online-members-list-options"> <a href="javascript:void(0);" id="online-members" data-content="boss_whos_online_widget_heartbeat"> <?php esc_html_e( 'Online', 'buddyboss' ); ?> <span class="widget-num-count"><?php esc_html_e( $total_online, 'buddyboss'); ?></span> </a> <?php if ( bp_is_active( 'friends' ) ) : $count = 0; if ( bp_is_active( 'friends' ) ) { $personal_friend_comma_separated_string = bp_get_friend_ids( bp_loggedin_user_id() ); if ( false !== $personal_friend_comma_separated_string ) { $friend_array = explode( ',', $personal_friend_comma_separated_string ); } $count = is_array( $friend_array ) ? count( $friend_array ) : 0; } ?> <span class="bp-separator" role="separator"><?php echo esc_html( $separator ); ?></span> <a href="javascript:void(0);" id="connection-members" data-content="boss_whos_online_widget_connections"> <?php esc_html_e( 'Connections', 'buddyboss' ); ?> <span class="widget-num-count"><?php esc_html_e( $count, 'buddyboss'); ?></span> </a> <?php endif; ?> </div> <div class="widget-content" id="boss_whos_online_widget_heartbeat" data-max="<?php echo $settings['max_members']; ?>"> <?php if ( bp_has_members( $members_args ) ) : ?> <div class="avatar-block"> <?php while ( bp_members() ) : bp_the_member(); ?> <div class="item-avatar"> <a href="<?php bp_member_permalink(); ?>" class="bp-tooltip" data-bp-tooltip-pos="up" data-bp-tooltip="<?php bp_member_name(); ?>"><?php bp_member_avatar(); ?><span class="member-status online"></span></a> </div> <?php endwhile; ?> </div> <?php if ( $members_template->total_member_count < $total_online ){ ?> <div class="more-block"><a href="<?php bp_members_directory_permalink(); ?>" class="count-more">More<i class="bb-icon-angle-right"></i></a></div> <?php } ?> <?php else: ?> <div class="widget-error"> <?php esc_html_e( 'There are no users currently online', 'buddyboss' ); ?> </div> <?php endif; ?> </div> <div class="widget-content" id="boss_whos_online_widget_connections" data-max="<?php echo $settings['max_members']; ?>"> <?php if ( is_user_logged_in() && bp_has_members( 'user_id=' . bp_loggedin_user_id().'&per_page='.$settings['max_members'].'&max='.$settings['max_members'].'&search_terms='.false.'&populate_extras='.true ) ) : ?> <div class="avatar-block"> <?php while ( bp_members() ) : bp_the_member(); ?> <div class="item-avatar"> <a href="<?php bp_member_permalink(); ?>" class="bp-tooltip" data-bp-tooltip-pos="up" data-bp-tooltip="<?php bp_member_name(); ?>"><?php bp_member_avatar(); ?><?php $current_time = current_time( 'mysql', 1 ); $diff = strtotime( $current_time ) - strtotime( $members_template->member->last_activity ); if ( $diff < 300 ) { // 5 minutes = 5 * 60 ?> <span class="member-status online"></span> <?php } ?></a> </div> <?php endwhile; ?> </div> <?php if ( $members_template->total_member_count > (int)$settings['max_members'] ){ ?> <div class="more-block"><a href="<?php bp_members_directory_permalink(); ?>" class="count-more">More<i class="bb-icon-angle-right"></i></a></div> <?php } ?> <?php else: ?> <div class="widget-error"> <?php esc_html_e( 'Sorry, no members were found.', 'buddyboss' ); ?> </div> <?php endif; ?> </div> <?php echo $args['after_widget']; // Restore the global. $members_template = $old_members_template; }
Changelog
Version | Description |
---|---|
BuddyPress 1.0.3 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.