From 9b6034bc770a668e30bc471498a0122e701ca3f2 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Tue, 26 Mar 2019 10:07:49 +0800 Subject: [PATCH] MDL-64017 message_email: populate new DB table when required --- message/output/email/message_output_email.php | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/message/output/email/message_output_email.php b/message/output/email/message_output_email.php index 1a7a222d33b..5dc5bdfb5e9 100644 --- a/message/output/email/message_output_email.php +++ b/message/output/email/message_output_email.php @@ -37,7 +37,7 @@ class message_output_email extends message_output { * @param object $eventdata the event data submitted by the message sender plus $eventdata->savedmessageid */ function send_message($eventdata) { - global $CFG; + global $CFG, $DB; // skip any messaging suspended and deleted users if ($eventdata->userto->auth === 'nologin' or $eventdata->userto->suspended or $eventdata->userto->deleted) { @@ -90,8 +90,25 @@ class message_output_email extends message_output { } } - $result = email_to_user($recipient, $eventdata->userfrom, $eventdata->subject, $eventdata->fullmessage, - $eventdata->fullmessagehtml, $attachment, $attachname, true, $replyto, $replytoname); + // We email messages from private conversations straight away, but for group we add them to a table to be sent later. + $emailuser = true; + if (!$eventdata->notification) { + if ($eventdata->conversationtype == \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP) { + $emailuser = false; + } + } + + if ($emailuser) { + $result = email_to_user($recipient, $eventdata->userfrom, $eventdata->subject, $eventdata->fullmessage, + $eventdata->fullmessagehtml, $attachment, $attachname, true, $replyto, $replytoname); + } else { + $messagetosend = new stdClass(); + $messagetosend->useridfrom = $eventdata->userfrom->id; + $messagetosend->useridto = $recipient->id; + $messagetosend->conversationid = $eventdata->convid; + $messagetosend->messageid = $eventdata->savedmessageid; + $result = $DB->insert_record('message_email_messages', $messagetosend, false); + } // Remove an attachment file if any. if (!empty($attachment) && file_exists($attachment)) {