bp_notifications_get_notifications_for_user( int $user_id, string $format = 'string' )
Get notifications for a specific user.
Description
Parameters
- $user_id
-
(Required) ID of the user whose notifications are being fetched.
- $format
-
(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
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | 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.