BP_XProfile_Group::get_group_data( array $group_ids )
Get data about a set of groups, based on IDs.
Description
Parameters
- $group_ids
-
(Required) Array of IDs.
Return
(array)
Source
File: bp-xprofile/classes/class-bp-xprofile-group.php
protected static function get_group_data( $group_ids ) {
global $wpdb;
// Bail if no group IDs are passed.
if ( empty( $group_ids ) ) {
return array();
}
// Setup empty arrays.
$groups = array();
$uncached_gids = array();
// Loop through groups and look for cached & uncached data.
foreach ( $group_ids as $group_id ) {
// If cached data is found, use it.
$group_data = wp_cache_get( $group_id, 'bp_xprofile_groups' );
if ( false !== $group_data ) {
$groups[ $group_id ] = $group_data;
// Otherwise leave a placeholder so we don't lose the order.
} else {
$groups[ $group_id ] = '';
// Add to the list of items to be queried.
$uncached_gids[] = $group_id;
}
}
// Fetch uncached data from the DB if necessary.
if ( ! empty( $uncached_gids ) ) {
// Setup IN query for uncached group data.
$uncached_gids_sql = implode( ',', wp_parse_id_list( $uncached_gids ) );
// Get table name to query.
$table_name = buddypress()->profile->table_name_groups;
// Fetch data, preserving order.
$queried_gdata = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE id IN ({$uncached_gids_sql}) ORDER BY FIELD( id, {$uncached_gids_sql} )");
// Make sure query returned valid data.
if ( ! empty( $queried_gdata ) && ! is_wp_error( $queried_gdata ) ) {
// Put queried data into the placeholders created earlier,
// and add it to the cache.
foreach ( (array) $queried_gdata as $gdata ) {
// Add group to groups array.
$groups[ $gdata->id ] = $gdata;
// Cache previously uncached group data.
wp_cache_set( $gdata->id, $gdata, 'bp_xprofile_groups' );
}
}
}
// Integer casting.
foreach ( (array) $groups as $key => $data ) {
$groups[ $key ]->id = (int) $groups[ $key ]->id;
$groups[ $key ]->group_order = (int) $groups[ $key ]->group_order;
$groups[ $key ]->can_delete = (int) $groups[ $key ]->can_delete;
}
// Reset indexes & return.
return array_values( $groups );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.0.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.