MDL-36090 core_grade: added logging of overriding of student grades
This commit is contained in:
@@ -143,6 +143,9 @@ class restore_final_task extends restore_task {
|
||||
$rules[] = new restore_log_rule('course', 'report stats', 'report/stats/index.php?id={course}', '{course}');
|
||||
$rules[] = new restore_log_rule('course', 'view section', 'view.php?id={course}§ionid={course_section}', '{course_section}');
|
||||
|
||||
// module 'grade' rules
|
||||
$rules[] = new restore_log_rule('grade', 'update', 'report/grader/index.php?id={course}', null);
|
||||
|
||||
// module 'user' rules
|
||||
$rules[] = new restore_log_rule('user', 'view', 'view.php?id={user}&course={course}', '{user}');
|
||||
$rules[] = new restore_log_rule('user', 'change password', 'view.php?id={user}&course={course}', '{user}');
|
||||
|
||||
@@ -105,6 +105,9 @@ function make_log_url($module, $url) {
|
||||
case 'role':
|
||||
$url = '/'.$url;
|
||||
break;
|
||||
case 'grade':
|
||||
$url = "/grade/$url";
|
||||
break;
|
||||
default:
|
||||
$url = "/mod/$module/$url";
|
||||
break;
|
||||
|
||||
@@ -200,6 +200,18 @@ if ($mform->is_cancelled()) {
|
||||
$data->feedback = $old_grade_grade->feedback;
|
||||
$data->feedbackformat = $old_grade_grade->feedbackformat;
|
||||
}
|
||||
|
||||
// Only log a grade override if they actually changed the student grade.
|
||||
if ($data->finalgrade != $old_grade_grade->finalgrade) {
|
||||
$url = '/report/grader/index.php?id=' . $course->id;
|
||||
|
||||
$user = $DB->get_record('user', array('id'=>$data->userid), '*', MUST_EXIST);
|
||||
$fullname = fullname($user);
|
||||
|
||||
$info = "{$grade_item->itemname}: $fullname";
|
||||
add_to_log($course->id, 'grade', 'update', $url, $info);
|
||||
}
|
||||
|
||||
// update final grade or feedback
|
||||
// when we set override grade the first time, it happens here
|
||||
$grade_item->update_final_grade($data->userid, $data->finalgrade, 'editgrade', $data->feedback, $data->feedbackformat);
|
||||
@@ -213,6 +225,19 @@ if ($mform->is_cancelled()) {
|
||||
$data->overridden = 0; // checkbox unticked
|
||||
}
|
||||
$grade_grade->set_overridden($data->overridden);
|
||||
|
||||
if ($data->overridden == 0 && $data->overridden != $old_grade_grade->overridden) {
|
||||
// Log removing an override.
|
||||
// The addition of an override is logged above.
|
||||
// One or the other will happen but never both.
|
||||
$url = '/report/grader/index.php?id=' . $course->id;
|
||||
|
||||
$user = $DB->get_record('user', array('id'=>$data->userid), '*', MUST_EXIST);
|
||||
$fullname = fullname($user);
|
||||
|
||||
$info = "{$grade_item->itemname}: $fullname";
|
||||
add_to_log($course->id, 'grade', 'update', $url, $info);
|
||||
}
|
||||
}
|
||||
|
||||
if (has_capability('moodle/grade:manage', $context) or has_capability('moodle/grade:hide', $context)) {
|
||||
|
||||
@@ -118,6 +118,14 @@ switch ($action) {
|
||||
echo json_encode($json_object);
|
||||
die();
|
||||
} else {
|
||||
$url = '/report/grader/index.php?id=' . $course->id;
|
||||
|
||||
$user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
|
||||
$fullname = fullname($user);
|
||||
|
||||
$info = "{$grade_item->itemname}: $fullname";
|
||||
add_to_log($course->id, 'grade', 'update', $url, $info);
|
||||
|
||||
$json_object->gradevalue = $finalvalue;
|
||||
|
||||
if ($grade_item->update_final_grade($userid, $finalgrade, 'gradebook', $feedback, FORMAT_MOODLE)) {
|
||||
|
||||
@@ -297,6 +297,12 @@ class grade_report_grader extends grade_report {
|
||||
}
|
||||
}
|
||||
|
||||
$url = '/report/grader/index.php?id=' . $this->course->id;
|
||||
$fullname = fullname($this->users[$userid]);
|
||||
|
||||
$info = "{$gradeitem->itemname}: $fullname";
|
||||
add_to_log($this->course->id, 'grade', 'update', $url, $info);
|
||||
|
||||
$gradeitem->update_final_grade($userid, $finalgrade, 'gradebook', $feedback, FORMAT_MOODLE);
|
||||
|
||||
// We can update feedback without reloading the grade item as it doesn't affect grade calculations
|
||||
|
||||
Reference in New Issue
Block a user