From 7c36d6698218910862c17836b0f039e9a853b222 Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Thu, 4 Apr 2019 09:28:47 +0800 Subject: [PATCH 1/1] MDL-65191 core: shift badge_assemble_notification to badgeslib --- lib/badgeslib.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/badgeslib.php b/lib/badgeslib.php index d0c1931c428..e33d7d882ce 100644 --- a/lib/badgeslib.php +++ b/lib/badgeslib.php @@ -1532,3 +1532,50 @@ function badges_setup_backpack_js() { $PAGE->requires->js('/badges/backpack.js', true); } } + +/** + * Creates single message for all notification and sends it out + * + * @param object $badge A badge which is notified about. + */ +function badge_assemble_notification(stdClass $badge) { + global $DB; + + $userfrom = core_user::get_noreply_user(); + $userfrom->maildisplay = true; + + if ($msgs = $DB->get_records_select('badge_issued', 'issuernotified IS NULL AND badgeid = ?', array($badge->id))) { + // Get badge creator. + $creator = $DB->get_record('user', array('id' => $badge->creator), '*', MUST_EXIST); + $creatorsubject = get_string('creatorsubject', 'badges', $badge->name); + $creatormessage = ''; + + // Put all messages in one digest. + foreach ($msgs as $msg) { + $issuedlink = html_writer::link(new moodle_url('/badges/badge.php', array('hash' => $msg->uniquehash)), $badge->name); + $recipient = $DB->get_record('user', array('id' => $msg->userid), '*', MUST_EXIST); + + $a = new stdClass(); + $a->user = fullname($recipient); + $a->link = $issuedlink; + $creatormessage .= get_string('creatorbody', 'badges', $a); + $DB->set_field('badge_issued', 'issuernotified', time(), array('badgeid' => $msg->badgeid, 'userid' => $msg->userid)); + } + + // Create a message object. + $eventdata = new \core\message\message(); + $eventdata->courseid = SITEID; + $eventdata->component = 'moodle'; + $eventdata->name = 'badgecreatornotice'; + $eventdata->userfrom = $userfrom; + $eventdata->userto = $creator; + $eventdata->notification = 1; + $eventdata->subject = $creatorsubject; + $eventdata->fullmessage = format_text_email($creatormessage, FORMAT_HTML); + $eventdata->fullmessageformat = FORMAT_PLAIN; + $eventdata->fullmessagehtml = $creatormessage; + $eventdata->smallmessage = $creatorsubject; + + message_send($eventdata); + } +} -- 2.43.0