From 3388a4f59e1fb86291d0e5ba6c475febf7356307 Mon Sep 17 00:00:00 2001 From: Eric Merrill Date: Wed, 30 Jul 2014 15:22:44 -0400 Subject: [PATCH] MDL-46620 messages Make sure full message is used for read marking message_mark_message_read needs to have the full message object, otherwise data will be lost. --- lib/moodlelib.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 6018d1a726c..258e28d5813 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -8762,8 +8762,7 @@ function message_popup_window() { } // There are unread messages so now do a more complex but slower query. - $namefields = get_all_user_name_fields(true, 'u'); - $messagesql = "SELECT m.id, m.smallmessage, m.fullmessageformat, m.notification, m.useridto, m.useridfrom, $namefields, c.blocked + $messagesql = "SELECT m.id, c.blocked FROM {message} m JOIN {message_working} mw ON m.id=mw.unreadmessageid JOIN {message_processors} p ON mw.processorid=p.id @@ -8780,13 +8779,15 @@ function message_popup_window() { $messagesql .= 'AND m.timecreated > :lastpopuptime'; } - $messageusers = $DB->get_records_sql($messagesql, array('userid' => $USER->id, 'lastpopuptime' => $USER->message_lastpopup)); + $waitingmessages = $DB->get_records_sql($messagesql, array('userid' => $USER->id, 'lastpopuptime' => $USER->message_lastpopup)); $validmessages = 0; - foreach($messageusers as $message) { - if ($message->blocked) { + foreach ($waitingmessages as $messageinfo) { + if ($messageinfo->blocked) { // Message is from a user who has since been blocked so just mark it read. - message_mark_message_read($message, time()); + // Get the full message to mark as read. + $messageobject = $DB->get_record('message', array('id' => $messageinfo->id)); + message_mark_message_read($messageobject, time()); } else { $validmessages++; }