From 9e1dacc3c6ca9613f04af541d74adb5663fcb1ac Mon Sep 17 00:00:00 2001 From: Dongsheng Cai Date: Thu, 8 Apr 2021 22:38:42 +1000 Subject: [PATCH] MDL-69956 forum: throw exception when advanced grading is not ready --- .../classes/grades/grader/gradingpanel/external/fetch.php | 3 +++ .../classes/grades/grader/gradingpanel/external/fetch.php | 4 ++++ lang/en/grading.php | 1 + 3 files changed, 8 insertions(+) diff --git a/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php b/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php index 36823725920..79d678359b2 100644 --- a/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php +++ b/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php @@ -156,6 +156,9 @@ class fetch extends external_api { $hasgrade = $gradeitem->user_has_grade($gradeduser); $grade = $gradeitem->get_grade_for_user($gradeduser, $USER); $instance = $gradeitem->get_advanced_grading_instance($USER, $grade); + if (!$instance) { + throw new moodle_exception('error:gradingunavailable', 'grading'); + } $controller = $instance->get_controller(); $definition = $controller->get_definition(); $fillings = $instance->get_guide_filling(); diff --git a/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php b/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php index 8fee77f8e8a..49fa81d21a9 100644 --- a/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php +++ b/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php @@ -149,6 +149,10 @@ class fetch extends external_api { $hasgrade = $gradeitem->user_has_grade($gradeduser); $grade = $gradeitem->get_grade_for_user($gradeduser, $USER); $instance = $gradeitem->get_advanced_grading_instance($USER, $grade); + if (!$instance) { + throw new moodle_exception('error:gradingunavailable', 'grading'); + } + $controller = $instance->get_controller(); $definition = $controller->get_definition(); $fillings = $instance->get_rubric_filling(); diff --git a/lang/en/grading.php b/lang/en/grading.php index dd68d9100c2..68608868926 100644 --- a/lang/en/grading.php +++ b/lang/en/grading.php @@ -95,3 +95,4 @@ $string['templatetypeown'] = 'Own form'; $string['templatetypeshared'] = 'Shared template'; $string['templatesource'] = 'Location: {$a->component} ({$a->area})'; $string['error:notinrange'] = 'Invalid grade \'{$a->grade}\' provided. Grades must be between 0 and {$a->maxgrade}.'; +$string['error:gradingunavailable'] = 'The advanced grading method is not correctly set. Please check the whole forum grading options in the forum settings.';