From a4b10a5244df069f292d34a68b8c78897970ca27 Mon Sep 17 00:00:00 2001 From: Zachary Durber Date: Tue, 2 Dec 2014 09:42:13 +0800 Subject: [PATCH] MDL-46442 mod_assign: Notify users when grades are changed --- mod/assign/locallib.php | 7 ++++--- mod/assign/tests/locallib_test.php | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 0c022876362..360d485f72a 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -1810,13 +1810,14 @@ class assign { * Mark in the database that this grade record should have an update notification sent by cron. * * @param stdClass $grade a grade record keyed on id + * @param bool $mailedoverride when true, flag notification to be sent again. * @return bool true for success */ - public function notify_grade_modified($grade) { + public function notify_grade_modified($grade, $mailedoverride = false) { global $DB; $flags = $this->get_user_flags($grade->userid, true); - if ($flags->mailed != 1) { + if ($flags->mailed != 1 || $mailedoverride) { $flags->mailed = 0; } @@ -6557,7 +6558,7 @@ class assign { // Note the default if not provided for this option is true (e.g. webservices). // This is for backwards compatibility. if (!isset($formdata->sendstudentnotifications) || $formdata->sendstudentnotifications) { - $this->notify_grade_modified($grade); + $this->notify_grade_modified($grade, true); } } diff --git a/mod/assign/tests/locallib_test.php b/mod/assign/tests/locallib_test.php index 94d10fdfe54..861bd39bdb6 100644 --- a/mod/assign/tests/locallib_test.php +++ b/mod/assign/tests/locallib_test.php @@ -887,6 +887,13 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase { $this->assertEquals(2, count($messages)); $this->assertEquals(1, $messages[0]->notification); $this->assertEquals($assign->get_instance()->name, $messages[0]->contexturlname); + + // Regrading a grade causes a notification to the user. + $data->sendstudentnotifications = true; + $assign->testable_apply_grade_to_user($data, $this->students[0]->id, 0); + assign::cron(); + $messages = $sink->get_messages(); + $this->assertEquals(3, count($messages)); } public function test_is_graded() {