BP_User_Query::do_user_ids_query()
Query for IDs of users that match the query parameters.
Description
Perform a database query to specifically get only user IDs, using existing query variables set previously in the constructor.
Also used to quickly perform user total counts.
Source
File: bp-core/classes/class-bp-user-query.php
public function do_user_ids_query() {
global $wpdb;
// If counting using SQL_CALC_FOUND_ROWS, set it up here.
if ( 'sql_calc_found_rows' == $this->query_vars['count_total'] ) {
$this->uid_clauses['select'] = str_replace( 'SELECT', 'SELECT SQL_CALC_FOUND_ROWS', $this->uid_clauses['select'] );
}
if ( is_array( $this->uid_clauses['orderby'] ) ) {
$orderby_multiple = array();
foreach ( $this->uid_clauses['orderby'] as $part ) {
$orderby_multiple[] = $part[0] . ' ' . $part[1];//column_name DESC/ASC
}
$this->uid_clauses['orderby'] = "ORDER BY " . implode( ', ', $orderby_multiple );
$this->uid_clauses['order'] = "";
}
// Get the specific user ids.
$this->user_ids = $wpdb->get_col( "{$this->uid_clauses['select']} {$this->uid_clauses['where']} {$this->uid_clauses['orderby']} {$this->uid_clauses['order']} {$this->uid_clauses['limit']}" );
// Get the total user count.
if ( 'sql_calc_found_rows' == $this->query_vars['count_total'] ) {
/**
* Filters the found user SQL statements before query.
*
* If "sql_calc_found_rows" is the provided count_total query var
* then the value will be "SELECT FOUND_ROWS()". Otherwise it will
* use a "SELECT COUNT()" query statement.
*
* @since BuddyPress 1.7.0
*
* @param string $value SQL statement to select FOUND_ROWS().
* @param BP_User_Query $this Current BP_User_Query instance.
*/
$this->total_users = $wpdb->get_var( apply_filters( 'bp_found_user_query', "SELECT FOUND_ROWS()", $this ) );
} elseif ( 'count_query' == $this->query_vars['count_total'] ) {
$count_select = preg_replace( '/^SELECT.*?FROM (\S+) u/', "SELECT COUNT(u.{$this->uid_name}) FROM $1 u", $this->uid_clauses['select'] );
/** This filter is documented in bp-core/classes/class-bp-user-query.php */
$this->total_users = $wpdb->get_var( apply_filters( 'bp_found_user_query', "{$count_select} {$this->uid_clauses['where']}", $this ) );
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.7.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.