From 6307509b363e6255f0c18818fd16f90d30f0104e Mon Sep 17 00:00:00 2001 From: Milton Reder Date: Wed, 23 Oct 2024 12:32:55 -0400 Subject: [PATCH] fix scoring for submission graded --- .../events/mod_assign/assignment_graded.php | 24 ++++++++----------- .../statements.json | 8 +++---- .../statements.json | 8 +++---- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/transformer/events/mod_assign/assignment_graded.php b/src/transformer/events/mod_assign/assignment_graded.php index 8494c1fd8..ae9f86bd0 100644 --- a/src/transformer/events/mod_assign/assignment_graded.php +++ b/src/transformer/events/mod_assign/assignment_graded.php @@ -62,6 +62,8 @@ function assignment_graded(array $config, \stdClass $event) { $scoreraw = (float) ($grade->grade ?: 0); $scoremin = (float) ($gradeitems->grademin ?: 0); $scoremax = (float) ($gradeitems->grademax ?: 0); + $validscore = ($scoremin <= $scoreraw && $scoreraw <= $scoremax) ? true : false; + $scorepass = (float) ($gradeitems->gradepass ?: null); $success = false; @@ -75,9 +77,6 @@ function assignment_graded(array $config, \stdClass $event) { 'verb' => utils\get_verb('scored', $config, $lang), 'object' => utils\get_activity\course_assignment($config, $event->contextinstanceid, $assignment->name, $lang), 'result' => [ - 'score' => [ - 'raw' => $scoreraw - ], 'completion' => true, 'success' => $success ], @@ -101,17 +100,14 @@ function assignment_graded(array $config, \stdClass $event) { $statement['result']['response'] = $gradecomment; } - // Only include min score if raw score is valid for that min. - if ($scoreraw >= $scoremin) { - $statement['result']['score']['min'] = $scoremin; - } - // Only include max score if raw score is valid for that max. - if ($scoreraw <= $scoremax) { - $statement['result']['score']['max'] = $scoremax; - } - // Calculate scaled score as the distance from zero towards the max (or min for negative scores). - if ($scoreraw >= 0) { - $statement['result']['score']['scaled'] = $scoreraw / $scoremax; + // only write a score if valid + if ($validscore) { + $statement['result']['score'] = [ + 'raw' => $scoreraw, + 'min' => $scoremin, + 'max' => $scoremax, + 'scaled' => utils\get_scaled_score($scoreraw, $scoremin, $scoremax), + ]; } return [$statement]; diff --git a/tests/mod_assign/assignment_graded/existing_assignment_graded_comment/statements.json b/tests/mod_assign/assignment_graded/existing_assignment_graded_comment/statements.json index 8023434de..4daa53f8f 100644 --- a/tests/mod_assign/assignment_graded/existing_assignment_graded_comment/statements.json +++ b/tests/mod_assign/assignment_graded/existing_assignment_graded_comment/statements.json @@ -24,10 +24,10 @@ }, "result": { "score": { - "raw": 1, - "min": 0, - "max": 2, - "scaled": 0.5 + "raw": 1.0, + "min": 0.0, + "max": 2.0, + "scaled": 0.0 }, "completion": true, "success": true, diff --git a/tests/mod_assign/assignment_graded/existing_assignment_graded_nocomment/statements.json b/tests/mod_assign/assignment_graded/existing_assignment_graded_nocomment/statements.json index 3553c54b1..2921992ba 100644 --- a/tests/mod_assign/assignment_graded/existing_assignment_graded_nocomment/statements.json +++ b/tests/mod_assign/assignment_graded/existing_assignment_graded_nocomment/statements.json @@ -24,10 +24,10 @@ }, "result": { "score": { - "raw": 1, - "min": 0, - "max": 2, - "scaled": 0.5 + "raw": 1.0, + "min": 0.0, + "max": 2.0, + "scaled": 0.0 }, "completion": true, "success": true