BP_Activity_Activity::get_activity_data( array $activity_ids = array() )
Convert activity IDs to activity objects, as expected in template loop.
Description
Parameters
- $activity_ids
-
(Optional) Array of activity IDs.
Default value: array()
Return
(array)
Source
File: bp-activity/classes/class-bp-activity-activity.php
protected static function get_activity_data( $activity_ids = array() ) {
global $wpdb;
// Bail if no activity ID's passed.
if ( empty( $activity_ids ) ) {
return array();
}
// Get BuddyPress.
$bp = buddypress();
$activities = array();
$uncached_ids = bp_get_non_cached_ids( $activity_ids, 'bp_activity' );
// Prime caches as necessary.
if ( ! empty( $uncached_ids ) ) {
// Format the activity ID's for use in the query below.
$uncached_ids_sql = implode( ',', wp_parse_id_list( $uncached_ids ) );
// Fetch data from activity table, preserving order.
$queried_adata = $wpdb->get_results( "SELECT * FROM {$bp->activity->table_name} WHERE id IN ({$uncached_ids_sql})");
// Put that data into the placeholders created earlier,
// and add it to the cache.
foreach ( (array) $queried_adata as $adata ) {
wp_cache_set( $adata->id, $adata, 'bp_activity' );
}
}
// Now fetch data from the cache.
foreach ( $activity_ids as $activity_id ) {
// Integer casting.
$activity = wp_cache_get( $activity_id, 'bp_activity' );
if ( ! empty( $activity ) ) {
$activity->id = (int) $activity->id;
$activity->user_id = (int) $activity->user_id;
$activity->item_id = (int) $activity->item_id;
$activity->secondary_item_id = (int) $activity->secondary_item_id;
$activity->hide_sitewide = (int) $activity->hide_sitewide;
$activity->mptt_left = (int) $activity->mptt_left;
$activity->mptt_right = (int) $activity->mptt_right;
$activity->is_spam = (int) $activity->is_spam;
}
$activities[] = $activity;
}
// Then fetch user data.
$user_query = new BP_User_Query( array(
'user_ids' => wp_list_pluck( $activities, 'user_id' ),
'populate_extras' => false,
) );
// Associated located user data with activity items.
foreach ( $activities as $a_index => $a_item ) {
$a_user_id = intval( $a_item->user_id );
$a_user = isset( $user_query->results[ $a_user_id ] ) ? $user_query->results[ $a_user_id ] : '';
if ( !empty( $a_user ) ) {
$activities[ $a_index ]->user_email = $a_user->user_email;
$activities[ $a_index ]->user_nicename = $a_user->user_nicename;
$activities[ $a_index ]->user_login = $a_user->user_login;
$activities[ $a_index ]->display_name = $a_user->display_name;
}
}
return $activities;
}
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.