mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 04:52:36 +02:00
MDL-65976 completion: New course completion message provider
This commit is contained in:
parent
e049d30613
commit
417e5b9f84
@ -570,9 +570,13 @@ class core_badges_badgeslib_testcase extends advanced_testcase {
|
||||
$this->assertFalse($badge->is_issued($this->user->id));
|
||||
|
||||
// Mark course as complete.
|
||||
$sink = $this->redirectEmails();
|
||||
$sink = $this->redirectMessages();
|
||||
$ccompletion->mark_complete();
|
||||
$this->assertCount(1, $sink->get_messages());
|
||||
// Two messages are generated: One for the course completed and the other one for the badge awarded.
|
||||
$messages = $sink->get_messages();
|
||||
$this->assertCount(2, $messages);
|
||||
$this->assertEquals('badgerecipientnotice', $messages[0]->eventtype);
|
||||
$this->assertEquals('coursecompleted', $messages[1]->eventtype);
|
||||
$sink->close();
|
||||
|
||||
// Check if badge is awarded.
|
||||
|
@ -173,6 +173,36 @@ class completion_completion extends data_object {
|
||||
\core\event\course_completed::create_from_completion($data)->trigger();
|
||||
}
|
||||
|
||||
// Notify user.
|
||||
$course = get_course($data->course);
|
||||
$messagesubject = get_string('coursecompleted', 'completion');
|
||||
$a = [
|
||||
'coursename' => get_course_display_name_for_list($course),
|
||||
'courselink' => (string) new moodle_url('/course/view.php', array('id' => $course->id)),
|
||||
];
|
||||
$messagebody = get_string('coursecompletedmessage', 'completion', $a);
|
||||
$messageplaintext = html_to_text($messagebody);
|
||||
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->component = 'moodle';
|
||||
$eventdata->name = 'coursecompleted';
|
||||
$eventdata->userfrom = core_user::get_noreply_user();
|
||||
$eventdata->userto = $data->userid;
|
||||
$eventdata->notification = 1;
|
||||
$eventdata->subject = $messagesubject;
|
||||
$eventdata->fullmessage = $messageplaintext;
|
||||
$eventdata->fullmessageformat = FORMAT_HTML;
|
||||
$eventdata->fullmessagehtml = $messagebody;
|
||||
$eventdata->smallmessage = $messageplaintext;
|
||||
|
||||
if ($courseimage = \core_course\external\course_summary_exporter::get_course_image($course)) {
|
||||
$eventdata->customdata = [
|
||||
'notificationpictureurl' => $courseimage,
|
||||
];
|
||||
}
|
||||
message_send($eventdata);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
@ -122,6 +122,7 @@ $string['courseaggregation_any'] = 'ANY selected courses to be completed';
|
||||
$string['coursealreadycompleted'] = 'You have already completed this course';
|
||||
$string['coursecomplete'] = 'Course complete';
|
||||
$string['coursecompleted'] = 'Course completed';
|
||||
$string['coursecompletedmessage'] = '<p>Congratulations!</p><p>You just completed the following course: <a href="{$a->courselink}">{$a->coursename}</a>.</p>';
|
||||
$string['coursecompletion'] = 'Course completion';
|
||||
$string['coursecompletioncondition'] = 'Condition: {$a}';
|
||||
$string['coursegrade'] = 'Course grade';
|
||||
|
@ -1231,6 +1231,7 @@ $string['messageprovider:badgecreatornotice'] = 'Badge creator notifications';
|
||||
$string['messageprovider:badgerecipientnotice'] = 'Badge recipient notifications';
|
||||
$string['messageprovider:competencyplancomment'] = 'Comment posted on a learning plan';
|
||||
$string['messageprovider:competencyusercompcomment'] = 'Comment posted on a competency';
|
||||
$string['messageprovider:coursecompleted'] = 'Course completed';
|
||||
$string['messageprovider:courserequestapproved'] = 'Course creation request approval notification';
|
||||
$string['messageprovider:courserequested'] = 'Course creation request notification';
|
||||
$string['messageprovider:courserequestrejected'] = 'Course creation request rejection notification';
|
||||
|
@ -86,6 +86,9 @@ $messageproviders = array (
|
||||
),
|
||||
),
|
||||
|
||||
// Course completed. Requires course completion configured at course level. It does not work with just activity progress.
|
||||
'coursecompleted' => [],
|
||||
|
||||
// Badge award notification to a badge recipient.
|
||||
'badgerecipientnotice' => array (
|
||||
'defaults' => array(
|
||||
|
@ -978,6 +978,32 @@ class core_completionlib_testcase extends advanced_testcase {
|
||||
$this->assertEventLegacyData($data, $event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test course completed message.
|
||||
*/
|
||||
public function test_course_completed_message() {
|
||||
$this->setup_data();
|
||||
$this->setAdminUser();
|
||||
|
||||
$completionauto = array('completion' => COMPLETION_TRACKING_AUTOMATIC);
|
||||
$ccompletion = new completion_completion(array('course' => $this->course->id, 'userid' => $this->user->id));
|
||||
|
||||
// Mark course as complete and get the message.
|
||||
$sink = $this->redirectMessages();
|
||||
$ccompletion->mark_complete();
|
||||
$messages = $sink->get_messages();
|
||||
$sink->close();
|
||||
|
||||
$this->assertCount(1, $messages);
|
||||
$message = array_pop($messages);
|
||||
|
||||
$this->assertEquals(core_user::get_noreply_user()->id, $message->useridfrom);
|
||||
$this->assertEquals($this->user->id, $message->useridto);
|
||||
$this->assertEquals('coursecompleted', $message->eventtype);
|
||||
$this->assertEquals(get_string('coursecompleted', 'completion'), $message->subject);
|
||||
$this->assertContains($this->course->fullname, $message->fullmessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test course completed event.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user