diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index 55c724010b3..fcd70f8a560 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -1368,12 +1368,12 @@ function quiz_get_flag_option($attempt, $context) { function quiz_attempt_state($quiz, $attempt) { if ($attempt->state == quiz_attempt::IN_PROGRESS) { return mod_quiz_display_options::DURING; + } else if ($quiz->timeclose && time() >= $quiz->timeclose) { + return mod_quiz_display_options::AFTER_CLOSE; } else if (time() < $attempt->timefinish + 120) { return mod_quiz_display_options::IMMEDIATELY_AFTER; - } else if (!$quiz->timeclose || time() < $quiz->timeclose) { - return mod_quiz_display_options::LATER_WHILE_OPEN; } else { - return mod_quiz_display_options::AFTER_CLOSE; + return mod_quiz_display_options::LATER_WHILE_OPEN; } } diff --git a/mod/quiz/tests/locallib_test.php b/mod/quiz/tests/locallib_test.php index 760e6a5fc52..8fa40e6c516 100644 --- a/mod/quiz/tests/locallib_test.php +++ b/mod/quiz/tests/locallib_test.php @@ -58,10 +58,13 @@ class mod_quiz_locallib_testcase extends advanced_testcase { public function quiz_attempt_state_data_provider() { return [ [quiz_attempt::IN_PROGRESS, null, null, mod_quiz_display_options::DURING], - [quiz_attempt::FINISHED, -10, null, mod_quiz_display_options::IMMEDIATELY_AFTER], + [quiz_attempt::FINISHED, -90, null, mod_quiz_display_options::IMMEDIATELY_AFTER], [quiz_attempt::FINISHED, -7200, null, mod_quiz_display_options::LATER_WHILE_OPEN], [quiz_attempt::FINISHED, -7200, 3600, mod_quiz_display_options::LATER_WHILE_OPEN], + [quiz_attempt::FINISHED, -30, 30, mod_quiz_display_options::IMMEDIATELY_AFTER], + [quiz_attempt::FINISHED, -90, -30, mod_quiz_display_options::AFTER_CLOSE], [quiz_attempt::FINISHED, -7200, -3600, mod_quiz_display_options::AFTER_CLOSE], + [quiz_attempt::FINISHED, -90, -3600, mod_quiz_display_options::AFTER_CLOSE], [quiz_attempt::ABANDONED, -10000000, null, mod_quiz_display_options::LATER_WHILE_OPEN], [quiz_attempt::ABANDONED, -7200, 3600, mod_quiz_display_options::LATER_WHILE_OPEN], [quiz_attempt::ABANDONED, -7200, -3600, mod_quiz_display_options::AFTER_CLOSE],