BP_Group_Member_Query::populate_group_member_extras( BP_User_Query $query, string $user_ids_sql )
Fetch additional data required in bp_group_has_members() loops.
Description Description
Additional data fetched:
- is_banned
- date_modified
Parameters Parameters
- $query
-
(Required) BP_User_Query object. Because we're filtering the current object, we use $this inside of the method instead.
- $user_ids_sql
-
(Required) Sanitized, comma-separated string of the user ids returned by the main query.
Source Source
File: bp-groups/classes/class-bp-group-member-query.php
public function populate_group_member_extras( $query, $user_ids_sql ) { global $wpdb; $bp = buddypress(); $extras = $wpdb->get_results( $wpdb->prepare( "SELECT id, user_id, date_modified, is_admin, is_mod, comments, user_title, invite_sent, is_confirmed, inviter_id, is_banned FROM {$bp->groups->table_name_members} WHERE user_id IN ({$user_ids_sql}) AND group_id = %d", $this->query_vars['group_id'] ) ); foreach ( (array) $extras as $extra ) { if ( isset( $this->results[ $extra->user_id ] ) ) { // The user_id is provided for backward compatibility. $this->results[ $extra->user_id ]->user_id = (int) $extra->user_id; $this->results[ $extra->user_id ]->is_admin = (int) $extra->is_admin; $this->results[ $extra->user_id ]->is_mod = (int) $extra->is_mod; $this->results[ $extra->user_id ]->is_banned = (int) $extra->is_banned; $this->results[ $extra->user_id ]->date_modified = $extra->date_modified; $this->results[ $extra->user_id ]->user_title = $extra->user_title; $this->results[ $extra->user_id ]->comments = $extra->comments; $this->results[ $extra->user_id ]->invite_sent = (int) $extra->invite_sent; $this->results[ $extra->user_id ]->inviter_id = (int) $extra->inviter_id; $this->results[ $extra->user_id ]->is_confirmed = (int) $extra->is_confirmed; $this->results[ $extra->user_id ]->membership_id = (int) $extra->id; } } // Add accurate invitation info from the invitations table. $invites = groups_get_invites( array( 'user_id' => $user_ids_sql, 'item_id' => $this->query_vars['group_id'], 'type' => 'all', ) ); foreach ( $invites as $invite ) { if ( isset( $this->results[ $invite->user_id ] ) ) { $this->results[ $invite->user_id ]->comments = $invite->content; $this->results[ $invite->user_id ]->is_confirmed = 0; $this->results[ $invite->user_id ]->invitation_id = $invite->id; $this->results[ $invite->user_id ]->invite_sent = (int) $invite->invite_sent; $this->results[ $invite->user_id ]->inviter_id = $invite->inviter_id; // Backfill properties that are not being set above. if ( ! isset( $this->results[ $invite->user_id ]->user_id ) ) { $this->results[ $invite->user_id ]->user_id = $invite->user_id; } if ( ! isset( $this->results[ $invite->user_id ]->is_admin ) ) { $this->results[ $invite->user_id ]->is_admin = 0; } if ( ! isset( $this->results[ $invite->user_id ]->is_mod ) ) { $this->results[ $invite->user_id ]->is_mod = 0; } if ( ! isset( $this->results[ $invite->user_id ]->is_banned ) ) { $this->results[ $invite->user_id ]->is_banned = 0; } if ( ! isset( $this->results[ $invite->user_id ]->date_modified ) ) { $this->results[ $invite->user_id ]->date_modified = $invite->date_modified; } if ( ! isset( $this->results[ $invite->user_id ]->user_title ) ) { $this->results[ $invite->user_id ]->user_title = ''; } if ( ! isset( $this->results[ $invite->user_id ]->membership_id ) ) { $this->results[ $invite->user_id ]->membership_id = 0; } } } // Don't filter other BP_User_Query objects on the same page. remove_action( 'bp_user_query_populate_extras', array( $this, 'populate_group_member_extras' ), 10 ); }
Changelog Changelog
Version | Description |
---|---|
1.8.0 | Introduced. |