Index: lib/grade/grade_item.php =================================================================== RCS file: /cvsroot/moodle/moodle/lib/grade/grade_item.php,v retrieving revision 1.130.2.35 diff -u -r1.130.2.35 grade_item.php --- lib/grade/grade_item.php 3 Feb 2010 02:22:58 -0000 1.130.2.35 +++ lib/grade/grade_item.php 31 Mar 2010 10:49:08 -0000 @@ -1446,22 +1446,11 @@ // changed grade? if ($finalgrade !== false) { - if ($this->is_overridable_item()) { - $grade->overridden = time(); - } else { - $grade->overridden = 0; - } - $grade->finalgrade = $this->bounded_grade($finalgrade); } // do we have comment from teacher? if ($feedback !== false) { - if ($this->is_overridable_item_feedback()) { - // external items (modules, plugins) may have own feedback - $grade->overridden = time(); - } - $grade->feedback = $feedback; $grade->feedbackformat = $feedbackformat; } @@ -1469,14 +1458,21 @@ if (empty($grade->id)) { $grade->timecreated = null; // hack alert - date submitted - no submission yet $grade->timemodified = time(); // hack alert - date graded + if ($this->is_overridable_item()) { + $grade->overridden = time(); + } $result = (boolean)$grade->insert($source); } else if (grade_floats_different($grade->finalgrade, $oldgrade->finalgrade) or $grade->feedback !== $oldgrade->feedback or $grade->feedbackformat != $oldgrade->feedbackformat - or $grade->overridden != $oldgrade->overridden) { + or ($this->is_overridable_item() and !$oldgrade->overridden)) { $grade->timemodified = time(); // hack alert - date graded + if ($this->is_overridable_item()) { + $grade->overridden = time(); + } $result = $grade->update($source); + } else { // no grade change return $result;