messages_format_notifications( string $action, int $item_id, int $secondary_item_id, int $total_items, string $format = 'string' )
Format notifications for the Messages component.
Description
Parameters
- $action
-
(Required) The kind of notification being rendered.
- $item_id
-
(Required) The primary item id.
- $secondary_item_id
-
(Required) The secondary item id.
- $total_items
-
(Required) The total number of messaging-related notifications waiting for the user.
- $format
-
(Optional) Return value format. 'string' for BuddyBar-compatible notifications; 'array' for WP Toolbar. Default: 'string'.
Default value: 'string'
Return
(string|array) Formatted notifications.
Source
File: bp-messages/bp-messages-notifications.php
function messages_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
$total_items = (int) $total_items;
$text = '';
$link = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/inbox' );
$title = __( 'Messages', 'buddyboss' );
$amount = 'single';
if ( 'new_message' === $action ) {
if ( $total_items > 1 ) {
$amount = 'multiple';
$text = sprintf( __( 'You have %d new messages', 'buddyboss' ), $total_items );
} else {
// Get message thread ID.
$message = new BP_Messages_Message( $item_id );
$thread_id = $message->thread_id;
$link = ( ! empty( $thread_id ) )
? bp_get_message_thread_view_link( $thread_id )
: false;
if ( ! empty( $secondary_item_id ) ) {
$text = sprintf( __( '%s sent you a new private message', 'buddyboss' ), bp_core_get_user_displayname( $secondary_item_id ) );
} else {
$text = sprintf( _n( 'You have %s new private message', 'You have %s new private messages', $total_items, 'buddyboss' ), bp_core_number_format( $total_items ) );
}
}
if ( 'string' === $format ) {
if ( ! empty( $link ) ) {
$return = '<a href="' . esc_url( $link ) . '">' . esc_html( $text ) . '</a>';
} else {
$return = esc_html( $text );
}
/**
* Filters the new message notification text before the notification is created.
*
* This is a dynamic filter. Possible filter names are:
* - 'bp_messages_multiple_new_message_notification'.
* - 'bp_messages_single_new_message_notification'.
*
* @param string $return Notification text.
* @param int $total_items Number of messages referred to by the notification.
* @param string $text The raw notification test (ie, not wrapped in a link).
* @param int $item_id ID of the associated item.
* @param int $secondary_item_id ID of the secondary associated item.
*/
$return = apply_filters( 'bp_messages_' . $amount . '_new_message_notification', $return, (int) $total_items, $text, $link, $item_id, $secondary_item_id );
} else {
/** This filter is documented in bp-messages/bp-messages-notifications.php */
$return = apply_filters( 'bp_messages_' . $amount . '_new_message_notification', array(
'text' => $text,
'link' => $link
), $link, (int) $total_items, $text, $link, $item_id, $secondary_item_id );
}
// Custom notification action for the Messages component
} else {
if ( 'string' === $format ) {
$return = $text;
} else {
$return = array(
'text' => $text,
'link' => $link
);
}
/**
* Backcompat for plugins that used to filter bp_messages_single_new_message_notification
* for their custom actions. These plugins should now use 'bp_messages_' . $action . '_notification'
*/
if ( has_filter( 'bp_messages_single_new_message_notification' ) ) {
if ( 'string' === $format ) {
/** This filter is documented in bp-messages/bp-messages-notifications.php */
$return = apply_filters( 'bp_messages_single_new_message_notification', $return, (int) $total_items, $text, $link, $item_id, $secondary_item_id );
// Notice that there are seven parameters instead of six? Ugh...
} else {
/** This filter is documented in bp-messages/bp-messages-notifications.php */
$return = apply_filters( 'bp_messages_single_new_message_notification', $return, $link, (int) $total_items, $text, $link, $item_id, $secondary_item_id );
}
}
/**
* Filters the custom action notification before the notification is created.
*
* This is a dynamic filter based on the message notification action.
*
* @since BuddyPress 2.6.0
*
* @param array $value An associative array containing the text and the link of the notification
* @param int $item_id ID of the associated item.
* @param int $secondary_item_id ID of the secondary associated item.
* @param int $total_items Number of messages referred to by the notification.
* @param string $format Return value format. 'string' for BuddyBar-compatible
* notifications; 'array' for WP Toolbar. Default: 'string'.
*/
$return = apply_filters( "bp_messages_{$action}_notification", $return, $item_id, $secondary_item_id, $total_items, $format );
}
/**
* Fires right before returning the formatted message notifications.
*
* @since BuddyPress 1.0.0
*
* @param string $action The type of message notification.
* @param int $item_id The primary item ID.
* @param int $secondary_item_id The secondary item ID.
* @param int $total_items Total amount of items to format.
*/
do_action( 'messages_format_notifications', $action, $item_id, $secondary_item_id, $total_items );
return $return;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.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.