MDL-58278 mod_assign: Ignore send notify with mw

When marking workflow is on and the grade is not released we never send notifications anyway.
Instead of preventing the grading form from submitting (validation error) we silently ignore it.
This commit is contained in:
Damyon Wiese
2017-04-20 11:43:34 +08:00
parent 1034421264
commit f2a6b9cac9
3 changed files with 10 additions and 5 deletions
-5
View File
@@ -78,11 +78,6 @@ class mod_assign_grade_form extends moodleform {
$errors = parent::validation($data, $files);
$instance = $this->assignment->get_instance();
if ($instance->markingworkflow && !empty($data['sendstudentnotifications']) &&
$data['workflowstate'] != ASSIGN_MARKING_WORKFLOW_STATE_RELEASED) {
$errors['workflowstate'] = get_string('studentnotificationworkflowstateerror', 'assign');
}
// Advanced grading.
if (!array_key_exists('grade', $data)) {
return $errors;
+8
View File
@@ -7736,6 +7736,14 @@ class assign {
$feedbackmodified) {
$this->update_grade($grade, !empty($formdata->addattempt));
}
// We never send notifications if we have marking workflow and the grade is not released.
if ($this->get_instance()->markingworkflow &&
isset($formdata->workflowstate) &&
$formdata->workflowstate != ASSIGN_MARKING_WORKFLOW_STATE_RELEASED) {
$formdata->sendstudentnotifications = false;
}
// 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) {
+2
View File
@@ -1244,10 +1244,12 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
$data->grade = '50.0';
// This student will not receive notification.
$data->sendstudentnotifications = 1;
$data->workflowstate = ASSIGN_MARKING_WORKFLOW_STATE_READYFORRELEASE;
$assign->testable_apply_grade_to_user($data, $this->students[0]->id, 0);
// This student will receive notification.
$data->sendstudentnotifications = 1;
$data->workflowstate = ASSIGN_MARKING_WORKFLOW_STATE_RELEASED;
$assign->testable_apply_grade_to_user($data, $this->students[1]->id, 0);