MDL-36090 core_grade: added logging of overriding of student grades

This commit is contained in:
Andrew Davis
2013-06-05 08:51:53 +08:00
parent b6f8a93642
commit afd2efc0e8
5 changed files with 45 additions and 0 deletions
@@ -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}&sectionid={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}');
+3
View File
@@ -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;
+25
View File
@@ -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)) {
+8
View File
@@ -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)) {
+6
View File
@@ -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