Merge branch 'MDL-30328' of git://github.com/scriby/moodle
[moodle.git] / mod / lti / servicelib.php
index 6b2578d..e23188c 100644 (file)
@@ -67,7 +67,15 @@ function lti_parse_grade_replace_message($xml) {
     $resultjson = json_decode((string)$node);
 
     $node = $xml->imsx_POXBody->replaceResultRequest->resultRecord->result->resultScore->textString;
-    $grade = floatval((string)$node);
+
+    $score = (string) $node;
+    if ( ! is_numeric($score) ) {
+        throw new Exception('Score must be numeric');
+    }
+    $grade = floatval($score);
+    if ( $grade < 0.0 || $grade > 1.0 ) {
+        throw new Exception('Score not between 0.0 and 1.0');
+    }
 
     $parsed = new stdClass();
     $parsed->gradeval = $grade * 100;
@@ -164,6 +172,7 @@ function lti_read_grade($ltiinstance, $userid) {
     if (isset($grades) && isset($grades->items[0]) && is_array($grades->items[0]->grades)) {
         foreach ($grades->items[0]->grades as $agrade) {
             $grade = $agrade->grade;
+            $grade = $grade / 100.0;
             break;
         }
     }
@@ -212,3 +221,4 @@ function lti_verify_sourcedid($ltiinstance, $parsed) {
         throw new Exception('SourcedId hash not valid');
     }
 }
+