BP_Notifications_Notification::get_grouped_notifications_for_user( int $user_id )
Get a user’s unread notifications, grouped by component and action.
Description
Multiple notifications of the same type (those that share the same component_name and component_action) are collapsed for formatting as "You have 5 pending connection requests", etc. See bp_notifications_get_notifications_for_user(). For a full-fidelity list of user notifications, use bp_notifications_get_all_notifications_for_user().
Parameters
- $user_id
-
(Required) ID of the user whose notifications are being fetched.
Return
(array) Notifications items for formatting into a list.
Source
File: bp-notifications/classes/class-bp-notifications-notification.php
public static function get_grouped_notifications_for_user( $user_id ) {
global $wpdb;
// Load BuddyPress.
$bp = buddypress();
// SELECT.
$select_sql = "SELECT id, user_id, item_id, secondary_item_id, component_name, component_action, date_notified, is_new, COUNT(id) as total_count ";
// FROM.
$from_sql = "FROM {$bp->notifications->table_name} n ";
// WHERE.
$where_sql = self::get_where_sql( array(
'user_id' => $user_id,
'is_new' => 1,
'component_name' => bp_notifications_get_registered_components(),
), $select_sql, $from_sql );
// GROUP
$group_sql = "GROUP BY user_id, component_name, component_action";
// SORT
$order_sql = "ORDER BY date_notified desc";
// Concatenate query parts.
$sql = "{$select_sql} {$from_sql} {$where_sql} {$group_sql} {$order_sql}";
// Return the queried results.
return $wpdb->get_results( $sql );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 3.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.