$DB->update_record($this->get_table_name(), $grade);
- // Update in the gradebook.
+ // Update in the gradebook (note that 'cmidnumber' is required in order to update grades).
$mapper = forum_container::get_legacy_data_mapper_factory()->get_forum_data_mapper();
- forum_update_grades($mapper->to_legacy_object($this->forum), $grade->userid);
+ $forumrecord = $mapper->to_legacy_object($this->forum);
+ $forumrecord->cmidnumber = $this->forum->get_course_module_record()->idnumber;
+
+ forum_update_grades($forumrecord, $grade->userid);
return true;
}
function forum_update_grades($forum, $userid = 0): void {
global $CFG, $DB;
require_once($CFG->libdir.'/gradelib.php');
- $cm = get_coursemodule_from_instance('forum', $forum->id);
- $forum->cmidnumber = $cm->idnumber;
$ratings = null;
if ($forum->assessed) {
require_once($CFG->dirroot.'/rating/lib.php');
+ $cm = get_coursemodule_from_instance('forum', $forum->id);
+
$rm = new rating_manager();
$ratings = $rm->get_user_grades((object) [
'component' => 'mod_forum',