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.