fixed problem with quickgrading overriding nonexistent grades with no grade
This commit is contained in:
+20
-20
@@ -171,31 +171,31 @@ class grade_report_grader extends grade_report {
|
||||
}
|
||||
}
|
||||
|
||||
// Get the grade object to compare old value with new value
|
||||
if ($grade = grade_grades::fetch(array('userid'=>$userid, 'itemid'=>$grade_item->id))) {
|
||||
if ($data_type == 'feedback') {
|
||||
if ($text = $grade->load_text()) {
|
||||
if ($text->feedback !== $postedvalue) {
|
||||
$feedback = $postedvalue;
|
||||
$feedbackformat = $text->feedbackformat; // keep original format or else we would have to do proper conversion (but it is not always possible)
|
||||
$needsupdate = true;
|
||||
}
|
||||
} else {
|
||||
// Get the grade object to compare old value with new value, the grade might not exist yet
|
||||
$grade = new grade_grades(array('userid'=>$userid, 'itemid'=>$grade_item->id));
|
||||
|
||||
if ($data_type == 'feedback') {
|
||||
if ($text = $grade->load_text()) {
|
||||
if ($text->feedback !== $postedvalue) {
|
||||
$feedback = $postedvalue;
|
||||
$feedbackformat = FORMAT_MOODLE; // this is the default format option everywhere else
|
||||
$feedbackformat = $text->feedbackformat; // keep original format or else we would have to do proper conversion (but it is not always possible)
|
||||
$needsupdate = true;
|
||||
}
|
||||
} else if (is_null($postedvalue)) {
|
||||
//nothing to do - grade does not have text or does not exist yet
|
||||
} else {
|
||||
$feedback = $postedvalue;
|
||||
$feedbackformat = FORMAT_MOODLE; // this is the default format option everywhere else
|
||||
$needsupdate = true;
|
||||
}
|
||||
|
||||
} else if ($data_type == 'grade') {
|
||||
if (!is_null($grade->finalgrade)) {
|
||||
$grade->finalgrade = (float)$grade->finalgrade;
|
||||
}
|
||||
if ($grade->finalgrade !== $finalgrade) {
|
||||
$needsupdate = true;
|
||||
}
|
||||
} else if ($data_type == 'grade') {
|
||||
if (!is_null($grade->finalgrade)) {
|
||||
$grade->finalgrade = (float)$grade->finalgrade;
|
||||
}
|
||||
if ($grade->finalgrade !== $finalgrade) {
|
||||
$needsupdate = true;
|
||||
}
|
||||
} else { // The grade_grades record doesn't yet exist
|
||||
$needsupdate = true;
|
||||
}
|
||||
|
||||
// we must not update all grades, only changed ones - we do not want to mark everything as overriden
|
||||
|
||||
@@ -137,6 +137,10 @@ class grade_grades extends grade_object {
|
||||
* @return object
|
||||
*/
|
||||
function load_text() {
|
||||
if (empty($this->id)) {
|
||||
return false; // text can not be attached to non existing grade
|
||||
}
|
||||
|
||||
if (empty($this->grade_grades_text->id)) {
|
||||
$this->grade_grades_text = grade_grades_text::fetch(array('gradeid'=>$this->id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user