mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 17:36:38 +02:00
MDL-47162 core_message: Add course id to message eventdata
This commit is contained in:
parent
577bd70d38
commit
cc350fd9c8
34 changed files with 345 additions and 76 deletions
|
@ -5475,7 +5475,8 @@ class assign {
|
|||
$assignmentname);
|
||||
}
|
||||
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->modulename = 'assign';
|
||||
$eventdata->userfrom = $userfrom;
|
||||
$eventdata->userto = $userto;
|
||||
|
|
|
@ -1246,6 +1246,39 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
|
|||
$this->assertEquals($assign->get_instance()->name, $messages[0]->contexturlname);
|
||||
}
|
||||
|
||||
public function test_cron_message_includes_courseid() {
|
||||
// First run cron so there are no messages waiting to be sent (from other tests).
|
||||
cron_setup_user();
|
||||
assign::cron();
|
||||
|
||||
// Now create an assignment.
|
||||
$this->setUser($this->editingteachers[0]);
|
||||
$assign = $this->create_instance(array('sendstudentnotifications' => 1));
|
||||
|
||||
// Simulate adding a grade.
|
||||
$this->setUser($this->teachers[0]);
|
||||
$data = new stdClass();
|
||||
$data->grade = '50.0';
|
||||
$assign->testable_apply_grade_to_user($data, $this->students[0]->id, 0);
|
||||
|
||||
$this->preventResetByRollback();
|
||||
$sink = $this->redirectEvents();
|
||||
|
||||
assign::cron();
|
||||
|
||||
$events = $sink->get_events();
|
||||
// Two messages are sent, one to student and one to teacher. This generates
|
||||
// four events:
|
||||
// core\event\message_sent
|
||||
// core\event\message_viewed
|
||||
// core\event\message_sent
|
||||
// core\event\message_viewed.
|
||||
$event = reset($events);
|
||||
$this->assertInstanceOf('\core\event\message_sent', $event);
|
||||
$this->assertEquals($assign->get_course()->id, $event->other['courseid']);
|
||||
$sink->close();
|
||||
}
|
||||
|
||||
public function test_is_graded() {
|
||||
$this->setUser($this->editingteachers[0]);
|
||||
$assign = $this->create_instance();
|
||||
|
|
|
@ -3027,7 +3027,8 @@ function feedback_send_email($cm, $feedback, $course, $user) {
|
|||
}
|
||||
|
||||
if ($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) {
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->name = 'submission';
|
||||
$eventdata->component = 'mod_feedback';
|
||||
$eventdata->userfrom = $user;
|
||||
|
@ -3036,10 +3037,14 @@ function feedback_send_email($cm, $feedback, $course, $user) {
|
|||
$eventdata->fullmessage = $posttext;
|
||||
$eventdata->fullmessageformat = FORMAT_PLAIN;
|
||||
$eventdata->fullmessagehtml = $posthtml;
|
||||
$eventdata->smallmessage = '';
|
||||
$eventdata->smallmessage = $postsubject;
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->contexturl = $info->url;
|
||||
$eventdata->contexturlname = $info->feedback;
|
||||
message_send($eventdata);
|
||||
} else {
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->name = 'submission';
|
||||
$eventdata->component = 'mod_feedback';
|
||||
$eventdata->userfrom = $teacher;
|
||||
|
@ -3048,7 +3053,10 @@ function feedback_send_email($cm, $feedback, $course, $user) {
|
|||
$eventdata->fullmessage = $posttext;
|
||||
$eventdata->fullmessageformat = FORMAT_PLAIN;
|
||||
$eventdata->fullmessagehtml = $posthtml;
|
||||
$eventdata->smallmessage = '';
|
||||
$eventdata->smallmessage = $postsubject;
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->contexturl = $info->url;
|
||||
$eventdata->contexturlname = $info->feedback;
|
||||
message_send($eventdata);
|
||||
}
|
||||
}
|
||||
|
@ -3097,7 +3105,8 @@ function feedback_send_email_anonym($cm, $feedback, $course) {
|
|||
$posthtml = '';
|
||||
}
|
||||
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->name = 'submission';
|
||||
$eventdata->component = 'mod_feedback';
|
||||
$eventdata->userfrom = $teacher;
|
||||
|
@ -3106,7 +3115,10 @@ function feedback_send_email_anonym($cm, $feedback, $course) {
|
|||
$eventdata->fullmessage = $posttext;
|
||||
$eventdata->fullmessageformat = FORMAT_PLAIN;
|
||||
$eventdata->fullmessagehtml = $posthtml;
|
||||
$eventdata->smallmessage = '';
|
||||
$eventdata->smallmessage = $postsubject;
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->contexturl = $info->url;
|
||||
$eventdata->contexturlname = $info->feedback;
|
||||
message_send($eventdata);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -97,7 +97,8 @@ if ($action == 'sendmessage' AND has_capability('moodle/course:bulkmessaging', $
|
|||
if (is_array($messageuser)) {
|
||||
foreach ($messageuser as $userid) {
|
||||
$senduser = $DB->get_record('user', array('id'=>$userid));
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->name = 'message';
|
||||
$eventdata->component = 'mod_feedback';
|
||||
$eventdata->userfrom = $USER;
|
||||
|
@ -106,7 +107,10 @@ if ($action == 'sendmessage' AND has_capability('moodle/course:bulkmessaging', $
|
|||
$eventdata->fullmessage = html_to_text($htmlmessage);
|
||||
$eventdata->fullmessageformat = FORMAT_PLAIN;
|
||||
$eventdata->fullmessagehtml = $htmlmessage;
|
||||
$eventdata->smallmessage = '';
|
||||
$eventdata->smallmessage = $subject;
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->contexturl = $link3;
|
||||
$eventdata->contexturlname = $feedback->name;
|
||||
$good = $good && message_send($eventdata);
|
||||
}
|
||||
if (!empty($good)) {
|
||||
|
|
|
@ -834,6 +834,7 @@ function forum_cron() {
|
|||
mtrace('Sending ', '');
|
||||
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->component = 'mod_forum';
|
||||
$eventdata->name = 'posts';
|
||||
$eventdata->userfrom = $userfrom;
|
||||
|
|
|
@ -252,6 +252,42 @@ class mod_forum_mail_testcase extends advanced_testcase {
|
|||
return $messages;
|
||||
}
|
||||
|
||||
public function test_cron_message_includes_courseid() {
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
// Create a course, with a forum.
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
|
||||
$options = array('course' => $course->id, 'forcesubscribe' => FORUM_FORCESUBSCRIBE);
|
||||
$forum = $this->getDataGenerator()->create_module('forum', $options);
|
||||
|
||||
// Create two users enrolled in the course as students.
|
||||
list($author, $recipient) = $this->helper_create_users($course, 2);
|
||||
|
||||
// Post a discussion to the forum.
|
||||
list($discussion, $post) = $this->helper_post_to_forum($forum, $author);
|
||||
|
||||
// Run cron and check that \core\event\message_sent contains the course id.
|
||||
// Close the message sink so that message_send is run.
|
||||
$this->helper->messagesink->close();
|
||||
|
||||
// Catch just the cron events. For each message sent two events are fired:
|
||||
// core\event\message_sent
|
||||
// core\event\message_viewed.
|
||||
$this->helper->eventsink = $this->redirectEvents();
|
||||
|
||||
forum_cron();
|
||||
|
||||
// Get the events and close the sink so that remaining events can be triggered.
|
||||
$events = $this->helper->eventsink->get_events();
|
||||
$this->helper->eventsink->close();
|
||||
|
||||
// Reset the message sink for other tests.
|
||||
$this->helper->messagesink = $this->redirectMessages();
|
||||
$event = reset($events);
|
||||
$this->assertEquals($course->id, $event->other['courseid']);
|
||||
}
|
||||
|
||||
public function test_forced_subscription() {
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
|
|
|
@ -257,13 +257,21 @@ switch ($mode) {
|
|||
$a->lesson = format_string($lesson->name, true);
|
||||
|
||||
// Fetch message HTML and plain text formats
|
||||
$b = new stdClass();
|
||||
$b->essay = format_string($pages[$attempt->pageid]->title, true);
|
||||
$b->lesson = $lesson->properties()->name;
|
||||
$b->course = $course->idnumber ? $course->idnumber : $course->fullname;
|
||||
$message = get_string('essayemailmessage2', 'lesson', $a);
|
||||
$plaintext = format_text_email($message, FORMAT_HTML);
|
||||
|
||||
// Subject
|
||||
$subject = get_string('essayemailsubject', 'lesson');
|
||||
|
||||
$eventdata = new stdClass();
|
||||
// Context url.
|
||||
$contexturl = new moodle_url('/grade/report/user/index.php', array('id' => $course->id));
|
||||
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $course->id;
|
||||
$eventdata->modulename = 'lesson';
|
||||
$eventdata->userfrom = $USER;
|
||||
$eventdata->userto = $users[$attempt->userid];
|
||||
|
@ -271,7 +279,8 @@ switch ($mode) {
|
|||
$eventdata->fullmessage = $plaintext;
|
||||
$eventdata->fullmessageformat = FORMAT_PLAIN;
|
||||
$eventdata->fullmessagehtml = $message;
|
||||
$eventdata->smallmessage = '';
|
||||
$eventdata->smallmessage = $smallmessage;
|
||||
$eventdata->contexturl = $contexturl;
|
||||
|
||||
// Required for messaging framework
|
||||
$eventdata->component = 'mod_lesson';
|
||||
|
|
|
@ -178,6 +178,7 @@ $string['eolstudentoutoftime'] = 'Attention: You ran out of time for this lesso
|
|||
$string['eolstudentoutoftimenoanswers'] = 'You did not answer any questions. You have received a 0 for this lesson.';
|
||||
$string['essay'] = 'Essay';
|
||||
$string['essayemailmessage2'] = '<p>Essay prompt: {$a->question}</p><p>Your response: <em>{$a->response}</em></p><p>Grader\'s comments: <em>{$a->comment}</em></p><p>You have received {$a->earned} out of {$a->outof} for this essay question.</p><p>Your grade for the {$a->lesson} lesson has been changed to {$a->newgrade}%.</p>';
|
||||
$string['essayemailmessage3'] = 'Your submission to {$a->lesson} essay {$a->essay} in {$a->course} has been graded.';
|
||||
$string['essayemailsubject'] = 'Grade available for lesson question';
|
||||
$string['essayresponses'] = 'Essay responses';
|
||||
$string['essays'] = 'Essays';
|
||||
|
|
|
@ -1487,7 +1487,8 @@ function quiz_send_confirmation($recipient, $a) {
|
|||
$a->userusername = $recipient->username;
|
||||
|
||||
// Prepare the message.
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $a->courseid;
|
||||
$eventdata->component = 'mod_quiz';
|
||||
$eventdata->name = 'confirmation';
|
||||
$eventdata->notification = 1;
|
||||
|
@ -1523,7 +1524,8 @@ function quiz_send_notification($recipient, $submitter, $a) {
|
|||
$a->userusername = $recipient->username;
|
||||
|
||||
// Prepare the message.
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $a->courseid;
|
||||
$eventdata->component = 'mod_quiz';
|
||||
$eventdata->name = 'submission';
|
||||
$eventdata->notification = 1;
|
||||
|
@ -1596,6 +1598,7 @@ function quiz_send_notification_messages($course, $quiz, $attempt, $context, $cm
|
|||
|
||||
$a = new stdClass();
|
||||
// Course info.
|
||||
$a->courseid = $course->id;
|
||||
$a->coursename = $course->fullname;
|
||||
$a->courseshortname = $course->shortname;
|
||||
// Quiz info.
|
||||
|
@ -1670,6 +1673,7 @@ function quiz_send_overdue_message($attemptobj) {
|
|||
|
||||
$a = new stdClass();
|
||||
// Course info.
|
||||
$a->courseid = $attemptobj->get_course()->id;
|
||||
$a->coursename = format_string($attemptobj->get_course()->fullname);
|
||||
$a->courseshortname = format_string($attemptobj->get_course()->shortname);
|
||||
// Quiz info.
|
||||
|
@ -1687,7 +1691,8 @@ function quiz_send_overdue_message($attemptobj) {
|
|||
$a->studentusername = $submitter->username;
|
||||
|
||||
// Prepare the message.
|
||||
$eventdata = new stdClass();
|
||||
$eventdata = new \core\message\message();
|
||||
$eventdata->courseid = $a->courseid;
|
||||
$eventdata->component = 'mod_quiz';
|
||||
$eventdata->name = 'attempt_overdue';
|
||||
$eventdata->notification = 1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue