bp_notifications_get_notifications_for_user( int $user_id, string $format = 'string' )
Get notifications for a specific user.
Description
Parameters
- $user_id
-
(int) (Required) ID of the user whose notifications are being fetched.
- $format
-
(string) (Optional) Format of the returned values. 'string' returns HTML, while 'object' returns a structured object for parsing.
Default value: 'string'
Return
(mixed) Object or array on success, false on failure.
Source
File: bp-notifications/bp-notifications-functions.php
function bp_notifications_get_notifications_for_user( $user_id, $format = 'string' ) { $bp = buddypress(); $notifications = bp_notifications_get_grouped_notifications_for_user( $user_id ); // Calculate a renderable output for each notification type. foreach ( $notifications as $notification_item ) { $component_name = $notification_item->component_name; // We prefer that extended profile component-related notifications use // the component_name of 'xprofile'. However, the extended profile child // object in the $bp object is keyed as 'profile', which is where we need // to look for the registered notification callback. if ( 'xprofile' == $notification_item->component_name ) { $component_name = 'profile'; } // Callback function exists. if ( isset( $bp->{$component_name}->notification_callback ) && is_callable( $bp->{$component_name}->notification_callback ) ) { // Function should return an object. if ( 'object' === $format ) { // Retrieve the content of the notification using the callback. $content = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, 'array', $notification_item->id ); // Create the object to be returned. $notification_object = $notification_item; // Minimal backpat with non-compatible notification // callback functions. if ( is_string( $content ) ) { $notification_object->content = $content; $notification_object->href = bp_loggedin_user_domain(); } else { $notification_object->content = $content['text']; $notification_object->href = $content['link']; } $renderable[] = $notification_object; // Return an array of content strings. } else { $content = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, 'string', $notification_item->id ); $renderable[] = $content; } // @deprecated format_notification_function - 1.5 } elseif ( isset( $bp->{$component_name}->format_notification_function ) && function_exists( $bp->{$component_name}->format_notification_function ) ) { $renderable[] = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count ); // Allow non BuddyPress components to hook in. } else { // The array to reference with apply_filters_ref_array(). $ref_array = array( $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, $format, $notification_item->component_action, // Duplicated so plugins can check the canonical action name. $component_name, $notification_item->id, ); // Function should return an object. if ( 'object' === $format ) { /** * Filters the notification content for notifications created by plugins. * If your plugin extends the {@link BP_Component} class, you should use the * 'notification_callback' parameter in your extended * {@link BP_Component::setup_globals()} method instead. * * @since BuddyPress 1.9.0 * @since BuddyPress 2.6.0 Added $component_action_name, $component_name, $id as parameters. * * @param string $content Component action. Deprecated. Do not do checks against this! Use * the 6th parameter instead - $component_action_name. * @param int $item_id Notification item ID. * @param int $secondary_item_id Notification secondary item ID. * @param int $action_item_count Number of notifications with the same action. * @param string $format Format of return. Either 'string' or 'object'. * @param string $component_action_name Canonical notification action. * @param string $component_name Notification component ID. * @param int $id Notification ID. * * @return string|array If $format is 'string', return a string of the notification content. * If $format is 'object', return an array formatted like: * array( 'text' => 'CONTENT', 'link' => 'LINK' ) */ $content = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array ); // Create the object to be returned. $notification_object = $notification_item; // Minimal backpat with non-compatible notification // callback functions. if ( is_string( $content ) ) { $notification_object->content = $content; $notification_object->href = bp_loggedin_user_domain(); } else { $notification_object->content = $content['text']; $notification_object->href = $content['link']; } $renderable[] = $notification_object; // Return an array of content strings. } else { /** This filters is documented in bp-notifications/bp-notifications-functions.php */ $renderable[] = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array ); } } } // If renderable is empty array, set to false. if ( empty( $renderable ) ) { $renderable = false; } /** * Filters the final array of notifications to be displayed for a user. * * @since BuddyPress 1.6.0 * * @param array|bool $renderable Array of notifications to render or false if no notifications. * @param int $user_id ID of the user whose notifications are being displayed. * @param string $format Display format requested for the notifications. */ return apply_filters( 'bp_core_get_notifications_for_user', $renderable, $user_id, $format ); }
Changelog
Version | Description |
---|---|
BuddyPress 1.9.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.