bp_messages_screen_conversation_mark_notifications()
Mark new message notification when member reads a message thread directly.
Description
Source
File: bp-messages/bp-messages-notifications.php
function bp_messages_screen_conversation_mark_notifications() {
global $thread_template;
/*
* Only run on the logged-in user's profile.
* If an admin visits a thread, it shouldn't change the read status.
*/
if ( ! bp_is_my_profile() ) {
return;
}
// Get unread PM notifications for the user.
$new_pm_notifications = BP_Notifications_Notification::get( array(
'user_id' => bp_loggedin_user_id(),
'component_name' => buddypress()->messages->id,
'component_action' => 'new_message',
'is_new' => 1,
) );
$unread_message_ids = wp_list_pluck( $new_pm_notifications, 'item_id' );
// No unread PMs, so stop!
if ( empty( $unread_message_ids ) ) {
return;
}
// Get the unread message ids for this thread only.
$message_ids = array_intersect( $unread_message_ids, wp_list_pluck( $thread_template->thread->messages, 'id' ) );
// Mark each notification for each PM message as read.
foreach ( $message_ids as $message_id ) {
bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), (int) $message_id, buddypress()->messages->id, 'new_message' );
}
}
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.