From 9eeb49b24e9fe6ac1b30f48941007b21c1eb40f7 Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 19 Mar 2008 22:39:19 +0000 Subject: [PATCH] MDL-13899 improved submission and grading date hack; merged from MOODLE_19_STABLE --- lib/grade/grade_item.php | 57 +++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index 9863ed8893..cada105197 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -1143,7 +1143,7 @@ class grade_item extends grade_object { function set_sortorder($sortorder) { if ($this->sortorder == $sortorder) { return; - } + } $this->sortorder = $sortorder; $this->update(); } @@ -1263,7 +1263,7 @@ class grade_item extends grade_object { // return all children excluding category items $sql = "SELECT gi.id FROM {$CFG->prefix}grade_items gi - WHERE $gtypes + WHERE $gtypes $outcomes_sql AND gi.categoryid IN ( SELECT gc.id @@ -1407,15 +1407,15 @@ class grade_item extends grade_object { } if (empty($grade->id)) { - $grade->timecreated = null; // no submission yet - $grade->timemodified = time(); // overridden flag might take over, but anyway + $grade->timecreated = null; // hack alert - date submitted - no submission yet + $grade->timemodified = time(); // hack alert - date graded $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) { - $grade->timemodified = time(); // overridden flag might take over, but anyway + $grade->timemodified = time(); // hack alert - date graded $result = $grade->update($source); } else { // no grade change @@ -1485,16 +1485,6 @@ class grade_item extends grade_object { $grade->usermodified = $usermodified; } - // TODO: hack alert - create new fields for these - - $grade->timecreated = $datesubmitted; - - if (empty($dategraded)) { - $grade->timemodified = time(); - } else { - $grade->timemodified = $dategraded; - } - if ($grade->is_locked()) { // do not update locked grades at all return false; @@ -1527,6 +1517,11 @@ class grade_item extends grade_object { $grade->rawgrade = $rawgrade; } + // empty feedback means no feedback at all + if ($feedback === '') { + $feedback = null; + } + // do we have comment from teacher? if ($feedback !== false and !$grade->is_overridden()) { $grade->feedback = $feedback; @@ -1538,9 +1533,32 @@ class grade_item extends grade_object { $grade->finalgrade = $this->adjust_raw_grade($grade->rawgrade, $grade->rawgrademin, $grade->rawgrademax); } - if (is_null($grade->rawgrade) and is_null($grade->feedback)) { - $grade->timemodified = null; //TODO: dategraded hack - feedback counts as grading too ;-) + // TODO: hack alert - create new fields for these in 2.0 + $oldgrade->timecreated = $grade->timecreated; + $oldgrade->timemodified = $grade->timemodified; + + $grade->timecreated = $datesubmitted; + + if ($grade->is_overridden()) { + // keep original graded date - update_final_grade() sets this for overridden grades + + } else if (is_null($grade->rawgrade) and is_null($grade->feedback)) { + // no grade and feedback means no grading yet + $grade->timemodified = null; + + } else if (!empty($dategraded)) { + // fine - module sends info when graded (yay!) + $grade->timemodified = $dategraded; + + } else if (grade_floats_different($grade->finalgrade, $oldgrade->finalgrade) + or $grade->feedback !== $oldgrade->feedback) { + // guess - if either grade or feedback changed set new graded date + $grade->timemodified = time(); + + } else { + //keep original graded date } + // end of hack alert if (empty($grade->id)) { $result = (boolean)$grade->insert($source); @@ -1551,7 +1569,10 @@ class grade_item extends grade_object { or grade_floats_different($grade->rawgrademax, $oldgrade->rawgrademax) or $grade->rawscaleid != $oldgrade->rawscaleid or $grade->feedback !== $oldgrade->feedback - or $grade->feedbackformat != $oldgrade->feedbackformat) { + or $grade->feedbackformat != $oldgrade->feedbackformat + or $grade->timecreated != $oldgrade->timecreated // part of hack above + or $grade->timemodified != $oldgrade->timemodified // part of hack above + ) { $result = $grade->update($source); } else { return $result; -- 2.39.5