From fdd629667e0723f66a87b82e8b1054c4f9d5a904 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Fri, 15 Jan 2016 14:55:20 +0000 Subject: [PATCH] MDL-52791 quiz editing: handle unknown question types --- mod/quiz/classes/structure.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/mod/quiz/classes/structure.php b/mod/quiz/classes/structure.php index a02fabe4051..36c34998de1 100644 --- a/mod/quiz/classes/structure.php +++ b/mod/quiz/classes/structure.php @@ -181,7 +181,7 @@ class structure { return false; } - if ($this->get_question_type_for_slot($slotnumber) == 'random') { + if (in_array($this->get_question_type_for_slot($slotnumber), array('random', 'missingtype'))) { return \question_engine::can_questions_finish_during_the_attempt( $this->quizobj->get_quiz()->preferredbehaviour); } @@ -190,14 +190,19 @@ class structure { return $this->slotsinorder[$slotnumber]->canfinish; } - $quba = \question_engine::make_questions_usage_by_activity('mod_quiz', $this->quizobj->get_context()); - $tempslot = $quba->add_question(\question_bank::load_question( - $this->slotsinorder[$slotnumber]->questionid)); - $quba->set_preferred_behaviour($this->quizobj->get_quiz()->preferredbehaviour); - $quba->start_all_questions(); + try { + $quba = \question_engine::make_questions_usage_by_activity('mod_quiz', $this->quizobj->get_context()); + $tempslot = $quba->add_question(\question_bank::load_question( + $this->slotsinorder[$slotnumber]->questionid)); + $quba->set_preferred_behaviour($this->quizobj->get_quiz()->preferredbehaviour); + $quba->start_all_questions(); - $this->slotsinorder[$slotnumber]->canfinish = $quba->can_question_finish_during_attempt($tempslot); - return $this->slotsinorder[$slotnumber]->canfinish; + $this->slotsinorder[$slotnumber]->canfinish = $quba->can_question_finish_during_attempt($tempslot); + return $this->slotsinorder[$slotnumber]->canfinish; + } catch (\Exception $e) { + // If the question fails to start, this should not block editing. + return false; + } } /** -- 2.43.0