From 37fcd4daee309698b6a2555f9b4df684e01ae7df Mon Sep 17 00:00:00 2001
From: Andy Hubert <andy.hubert@gmail.com>
Date: Wed, 1 Aug 2018 04:57:29 -0400
Subject: [PATCH] fix: Ensures statement duration isn't null (Thanks
 @AndyHubert). (#209)

---
 src/transformer/utils/get_attempt_duration.php | 9 +++++----
 src/transformer/utils/get_attempt_result.php   | 9 +++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/transformer/utils/get_attempt_duration.php b/src/transformer/utils/get_attempt_duration.php
index 366241c..55b1fe9 100644
--- a/src/transformer/utils/get_attempt_duration.php
+++ b/src/transformer/utils/get_attempt_duration.php
@@ -18,10 +18,11 @@ namespace src\transformer\utils;
 defined('MOODLE_INTERNAL') || die();
 
 function get_attempt_duration($attempt) {
-    if (isset($attempt->timefinish)) {
+    if (isset($attempt->timefinish) && isset($attempt->timestart)) {
         $seconds = $attempt->timefinish - $attempt->timestart;
-        return "PT".(string) $seconds."S";
-    } else {
-        return null;
+        if ($seconds > 0) {
+            return "PT".(string) $seconds."S";
+        }
     }
+    return null;
 }
diff --git a/src/transformer/utils/get_attempt_result.php b/src/transformer/utils/get_attempt_result.php
index faeec7e..08eb9c0 100644
--- a/src/transformer/utils/get_attempt_result.php
+++ b/src/transformer/utils/get_attempt_result.php
@@ -31,7 +31,7 @@ function get_attempt_result(array $config, $attempt, $gradeitem) {
     $success = $gradesum >= $passscore;
     $duration = get_attempt_duration($attempt);
 
-    return [
+    $result = [
         'score' => [
             'raw' => $rawscore,
             'min' => $minscore,
@@ -40,6 +40,11 @@ function get_attempt_result(array $config, $attempt, $gradeitem) {
         ],
         'completion' => $completed,
         'success' => $success,
-        'duration' => $duration,
     ];
+
+    if ($duration != null) {
+        $result['duration'] = $duration;
+    }
+
+    return $result;
 }
-- 
GitLab