MDL-67132 mod_lti: call grade api to trigger course total computation

This commit is contained in:
Claude Vervoort
2020-02-26 17:27:33 +01:00
committed by Eloy Lafuente (stronk7)
parent f05ff7a66d
commit dc39cee4f9
2 changed files with 17 additions and 19 deletions
+7 -4
View File
@@ -1723,7 +1723,10 @@ class grade_item extends grade_object {
* @param int $usermodified The ID of the user making the modification
* @return bool success
*/
public function update_final_grade($userid, $finalgrade=false, $source=NULL, $feedback=false, $feedbackformat=FORMAT_MOODLE, $usermodified=null) {
public function update_final_grade($userid, $finalgrade = false,
$source = null, $feedback = false,
$feedbackformat = FORMAT_MOODLE,
$usermodified = null, $timemodified = null) {
global $USER, $CFG;
$result = true;
@@ -1789,8 +1792,8 @@ class grade_item extends grade_object {
$gradechanged = false;
if (empty($grade->id)) {
$grade->timecreated = null; // hack alert - date submitted - no submission yet
$grade->timemodified = time(); // hack alert - date graded
$grade->timecreated = null; // Hack alert - date submitted - no submission yet.
$grade->timemodified = $timemodified ?: time(); // Hack alert - date graded.
$result = (bool)$grade->insert($source);
// If the grade insert was successful and the final grade was not null then trigger a user_graded event.
@@ -1814,7 +1817,7 @@ class grade_item extends grade_object {
return $result;
}
$grade->timemodified = time(); // hack alert - date graded
$grade->timemodified = $timemodified?:time(); // Hack alert - date graded.
$result = $grade->update($source);
// If the grade update was successful and the actual grade has changed then trigger a user_graded event.
@@ -381,23 +381,18 @@ class gradebookservices extends service_base {
$feedbackformat = FORMAT_PLAIN;
}
if (!$grade = \grade_grade::fetch(array('itemid' => $gradeitem->id, 'userid' => $userid))) {
$grade = new \grade_grade();
$grade->userid = $userid;
$grade->itemid = $gradeitem->id;
}
$grade->rawgrademax = $score->scoreMaximum;
$grade->timemodified = $timemodified;
$grade->feedbackformat = $feedbackformat;
$grade->feedback = $feedback;
if ($gradeitem->is_manual_item()) {
$grade->finalgrade = $finalgrade;
if (empty($grade->id)) {
$result = (bool)$grade->insert($source);
} else {
$result = $grade->update($source);
}
$result = $gradeitem->update_final_grade($userid, $finalgrade, null, $feedback, FORMAT_PLAIN, null, $timemodified);
} else {
if (!$grade = \grade_grade::fetch(array('itemid' => $gradeitem->id, 'userid' => $userid))) {
$grade = new \grade_grade();
$grade->userid = $userid;
$grade->itemid = $gradeitem->id;
}
$grade->rawgrademax = $score->scoreMaximum;
$grade->timemodified = $timemodified;
$grade->feedbackformat = $feedbackformat;
$grade->feedback = $feedback;
$grade->rawgrade = $finalgrade;
$status = \grade_update($source, $gradeitem->courseid,
$gradeitem->itemtype, $gradeitem->itemmodule,