From: skodak Date: Thu, 20 Sep 2007 07:43:57 +0000 (+0000) Subject: MDL-11357 removed _grade_updated() from activities and grade_item class X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=eedae98ef2eb4ec370e15c9f6597087117712c71;p=moodle.git MDL-11357 removed _grade_updated() from activities and grade_item class --- diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index 3e5e19d25a..51458308f7 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -1248,7 +1248,6 @@ class grade_item extends grade_object { * @param mixed $feedback teachers feedback as string - false means do not change * @param int $feedbackformat * @return boolean success - * TODO Allow for a change of feedback without a change of finalgrade. Currently I get notice about uninitialised $result */ function update_final_grade($userid, $finalgrade=false, $source=NULL, $note=NULL, $feedback=false, $feedbackformat=FORMAT_MOODLE, $usermodified=null) { global $USER, $CFG; @@ -1256,6 +1255,8 @@ class grade_item extends grade_object { $usermodified = $USER->id; } + $result = true; + // no grading used or locked if ($this->gradetype == GRADE_TYPE_NONE or $this->is_locked()) { return false; @@ -1273,37 +1274,24 @@ class grade_item extends grade_object { $locktime = $grade->get_locktime(); if ($locktime and $locktime < time()) { - // do not update grades that should be already locked and force regrade + // do not update grades that should be already locked, force regrade instead $this->force_regrading(); return false; } $oldgrade = new object(); $oldgrade->finalgrade = $grade->finalgrade; - $oldgrade->rawgrade = $grade->rawgrade; - $oldgrade->rawgrademin = $grade->rawgrademin; - $oldgrade->rawgrademax = $grade->rawgrademax; - $oldgrade->rawscaleid = $grade->rawscaleid; $oldgrade->overridden = $grade->overridden; - $override = false; - $functionname = null; - if ($finalgrade !== false or $feedback !== false) { if (($this->is_outcome_item() or $this->is_manual_item()) and !$this->is_calculated()) { // final grades updated only by user - no need for overriding - - } else if ($this->itemtype == 'mod' and $this->plusfactor == 0 and $this->multfactor == 1) { - // do not override grade if module can update own raw grade - require_once($CFG->dirroot.'/mod/'.$this->itemmodule.'/lib.php'); - $functionname = $this->itemmodule.'_grade_updated'; - if (!function_exists($functionname)) { - $override = true; - $functionname = null; - } + $grade->overridden = 0; } else { - $override = true; + if (!$grade->overridden) { + $grade->overridden = time(); + } } } @@ -1314,36 +1302,13 @@ class grade_item extends grade_object { $finalgrade = $finalgrade; } $grade->finalgrade = $finalgrade; - - if ($override) { - if (!$grade->overridden) { - $grade->overridden = time(); - } - - } else if ($this->is_raw_used()) { - // module which is not overridden - no factors used - $grade->rawgrade = $finalgrade; - // copy current grademin/max and scale - $grade->rawgrademin = $this->grademin; - $grade->rawgrademax = $this->grademax; - $grade->rawscaleid = $this->scaleid; - } } if (empty($grade->id)) { $result = (boolean)$grade->insert($source); - } else if ($grade->finalgrade !== $oldgrade->finalgrade - or $grade->rawgrade !== $oldgrade->rawgrade - or $grade->rawgrademin !== $oldgrade->rawgrademin - or $grade->rawgrademax !== $oldgrade->rawgrademax - or $grade->rawscaleid !== $oldgrade->rawscaleid - or $grade->overridden !== $oldgrade->overridden) { - + } else if ($grade->finalgrade !== $oldgrade->finalgrade or $grade->overridden !== $oldgrade->overridden) { $result = $grade->update($source); - - } else { - $result = true; } // do we have comment from teacher? @@ -1351,7 +1316,11 @@ class grade_item extends grade_object { $result = $grade->update_feedback($feedback, $feedbackformat, $usermodified); } - if ($this->is_course_item() and !$this->needsupdate) { + if (!$result) { + // something went wrong - better force final grade recalculation + $this->force_regrading(); + + } else if ($this->is_course_item() and !$this->needsupdate) { if (!grade_regrade_final_grades($this->courseid, $userid, $this)) { $this->force_regrading(); } @@ -1367,11 +1336,6 @@ class grade_item extends grade_object { } } - // inform modules, etc. if needed - if ($result and $functionname) { - $functionname($this->iteminstance, $this->itemnumber, $userid, $finalgrade, $feedback, $feedbackformat, $usermodified); - } - return $result; } diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 67dca3c565..22eb3e4359 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -2132,67 +2132,6 @@ function assignment_grade_item_delete($assignment) { return grade_update('mod/assignment', $assignment->courseid, 'mod', 'assignment', $assignment->id, 0, NULL, array('deleted'=>1)); } -/** - * Gradebook informs this module about new grade or feedback. - * - */ -function assignment_grade_updated($instance, $itemnumber, $userid, $gradevalue, $feedback, $feedbackformat, $usermodified) { - global $CFG, $USER; - - if (!$assignment = get_record('assignment', 'id', $instance)) { - return true; - } - if (! $course = get_record('course', 'id', $assignment->course)) { - return true; - } - if (! $cm = get_coursemodule_from_instance('assignment', $assignment->id, $course->id)) { - return true; - } - - // Load up the required assignment class - require_once($CFG->dirroot.'/mod/assignment/type/'.$assignment->assignmenttype.'/assignment.class.php'); - $assignmentclass = 'assignment_'.$assignment->assignmenttype; - $assignmentinstance = new $assignmentclass($cm->id, $assignment, $cm, $course); - - $old = $assignmentinstance->get_submission($userid, true); // Get or make one - $submission = new object(); - $submission->id = $old->id; - $submission->userid = $old->userid; - $submission->teacher = $usermodified; - - if ($gradevalue === false) { - $submission->grade = $old->grade; - } else if (is_null($gradevalue)) { - $submission->grade = -1; - } else { - $submission->grade = (int)$gradevalue; // round it for now - $submission->timemarked = time(); - } - - if ($feedback === false) { - $submission->submissioncomment = addslashes($old->submissioncomment); - $submission->format = $old->format; - } else { - $submission->submissioncomment = addslashes($feedback); - $submission->format = (int)$feedbackformat; - } - - if ($old->submissioncomment != $submission->submissioncomment or $old->grade != $submission->grade) { - - $submission->mailed = 0; // Make sure mail goes out (again, even) - - if (!update_record('assignment_submissions', $submission)) { - return false; - } - } - - // TODO: add proper logging - add_to_log($course->id, 'assignment', 'update grades', - 'submissions.php?id='.$assignment->id.'&user='.$submission->userid, $submission->userid, $cm->id); - - return true; -} - /** * Returns the users with data in one assignment (students and teachers) *