From 9e9192c7fc5eb95b6b848439e43e03a537b36b06 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Wed, 19 Dec 2018 12:08:27 +0800 Subject: [PATCH] Fixed issue when scales are used (#242) The grade item's type was being hard-coded to GRADE_TYPE_VALUE when this isn't always the case. --- classes/element_helper.php | 39 +++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/classes/element_helper.php b/classes/element_helper.php index 8788c73..1113aab 100644 --- a/classes/element_helper.php +++ b/classes/element_helper.php @@ -542,31 +542,44 @@ class element_helper { return false; } - $gradeitem = grade_get_grades($cm->course, 'mod', $module->name, $cm->instance, $userid); + $params = [ + 'itemtype' => 'mod', + 'itemmodule' => $module->name, + 'iteminstance' => $cm->instance, + 'courseid' => $cm->course, + 'itemnumber' => 0 + ]; + $gradeitem = \grade_item::fetch($params); if (empty($gradeitem)) { return false; } - $item = new \grade_item(); - $item->gradetype = GRADE_TYPE_VALUE; - $item->courseid = $cm->course; - $itemproperties = reset($gradeitem->items); - foreach ($itemproperties as $key => $value) { - $item->$key = $value; + $grade = grade_get_grades( + $cm->course, + 'mod', + $module->name, + $cm->instance, + $userid + ); + + if (!isset($grade->items[0]->grades[$userid])) { + return false; } - $objgrade = $item->grades[$userid]; + $gradebookgrade = $grade->items[0]->grades[$userid]; $dategraded = null; - if (!empty($objgrade->dategraded)) { - $dategraded = $objgrade->dategraded; + if (!empty($gradebookgrade->dategraded)) { + $dategraded = $gradebookgrade->dategraded; } + $displaygrade = grade_format_gradevalue($gradebookgrade->grade, $gradeitem, true, $gradeformat); + return new grade_information( - $item->name, - $objgrade->grade, - grade_format_gradevalue($objgrade->grade, $item, true, $gradeformat), + $gradeitem->get_name(), + $gradebookgrade->grade, + $displaygrade, $dategraded ); }