MDL-46442 mod_assign: Notify users when grades are changed

This commit is contained in:
Zachary Durber
2014-12-11 13:27:43 +08:00
parent dbe2143aba
commit b43cd17b0d
2 changed files with 13 additions and 2 deletions
+6 -2
View File
@@ -1775,13 +1775,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;
}
@@ -6422,6 +6423,9 @@ 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) {
if (isset($formdata->sendstudentnotifications)) {
$this->notify_grade_modified($grade, $formdata->sendstudentnotifications);
}
$this->notify_grade_modified($grade);
}
}
+7
View File
@@ -780,6 +780,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() {