From c624f40635cf18ad5d70a9c89b933b26a7e6d596 Mon Sep 17 00:00:00 2001 From: fgo Date: Thu, 2 Oct 2025 11:02:48 +0200 Subject: [PATCH] MDL-86437 enrol_lti: Cast scoreGiven to float for LTI compliance scoreGiven was being passed as a string (e.g. "8.0"), which caused validation errors in some LMS implementations such as Rustici Engine. According to the LTI specification, scoreGiven must be numeric if present. Co-authored-by: Jake Dallimore --- enrol/lti/classes/local/ltiadvantage/task/sync_tool_grades.php | 1 + 1 file changed, 1 insertion(+) diff --git a/enrol/lti/classes/local/ltiadvantage/task/sync_tool_grades.php b/enrol/lti/classes/local/ltiadvantage/task/sync_tool_grades.php index 96e26afe1cc..5fddab5988c 100644 --- a/enrol/lti/classes/local/ltiadvantage/task/sync_tool_grades.php +++ b/enrol/lti/classes/local/ltiadvantage/task/sync_tool_grades.php @@ -122,6 +122,7 @@ class sync_tool_grades extends adhoc_task { mtrace("Skipping - Invalid grade $mtracecontent."); continue; } + $grade = floatval($grade); // Grade must be sent as a numeric value, not a string. if (empty($grademax)) { mtrace("Skipping - Invalid grademax $mtracecontent.");