BP_Group_Member_Query::get_gm_ids_ordered_by_activity( BP_User_Query $query, array $gm_ids = array() )
Sort user IDs by how recently they have generated activity within a given group.
Description
Parameters
- $query
-
(Required) BP_User_Query object.
- $gm_ids
-
(Optional) array of group member ids.
Default value: array()
Return
(array)
Source
File: bp-groups/classes/class-bp-group-member-query.php
public function get_gm_ids_ordered_by_activity( $query, $gm_ids = array() ) {
global $wpdb;
if ( empty( $gm_ids ) ) {
return $gm_ids;
}
if ( ! bp_is_active( 'activity' ) ) {
return $gm_ids;
}
$activity_table = buddypress()->activity->table_name;
$sql = array(
'select' => "SELECT user_id, max( date_recorded ) as date_recorded FROM {$activity_table}",
'where' => array(),
'groupby' => 'GROUP BY user_id',
'orderby' => 'ORDER BY date_recorded',
'order' => 'DESC',
);
$sql['where'] = array(
'user_id IN (' . implode( ',', wp_parse_id_list( $gm_ids ) ) . ')',
'item_id = ' . absint( $query->query_vars['group_id'] ),
$wpdb->prepare( "component = %s", buddypress()->groups->id ),
);
$sql['where'] = 'WHERE ' . implode( ' AND ', $sql['where'] );
$group_user_ids = $wpdb->get_results( "{$sql['select']} {$sql['where']} {$sql['groupby']} {$sql['orderby']} {$sql['order']}" );
return wp_list_pluck( $group_user_ids, 'user_id' );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.1.0 | 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.