diff --git a/mod/quiz/editlib.php b/mod/quiz/editlib.php index feb74b70b88..acd51d0208b 100644 --- a/mod/quiz/editlib.php +++ b/mod/quiz/editlib.php @@ -90,7 +90,7 @@ function quiz_delete_empty_page($layout, $index) { */ function quiz_add_quiz_question($id, &$quiz, $page = 0) { global $DB; - $questions = explode(',', $quiz->questions); + $questions = explode(',', quiz_clean_layout($quiz->questions)); if (in_array($id, $questions)) { return false; } @@ -101,7 +101,7 @@ function quiz_add_quiz_question($id, &$quiz, $page = 0) { $end = end($breaks); $last = prev($breaks); $last = $last ? $last : -1; - if (!$quiz->questionsperpage || (($end - $last -1) < $quiz->questionsperpage)) { + if (!$quiz->questionsperpage || (($end - $last - 1) < $quiz->questionsperpage)) { array_pop($questions); } } diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index 07fbc6e9cbe..42a6f66a01c 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -301,7 +301,7 @@ function quiz_number_of_pages($layout) { * @return integer The number of questions in the quiz. */ function quiz_number_of_questions_in_quiz($layout) { - $layout = quiz_questions_in_quiz($layout); + $layout = quiz_questions_in_quiz(quiz_clean_layout($layout)); $count = substr_count($layout, ','); if ($layout !== '') { $count++; diff --git a/mod/quiz/simpletest/testlocallib.php b/mod/quiz/simpletest/testlocallib.php index 60cd6e4a7d6..7f93b89431d 100644 --- a/mod/quiz/simpletest/testlocallib.php +++ b/mod/quiz/simpletest/testlocallib.php @@ -48,6 +48,7 @@ class quiz_locallib_test extends UnitTestCase { $this->assertEqual(quiz_number_of_questions_in_quiz('1,2,3,0'), 3); $this->assertEqual(quiz_number_of_questions_in_quiz('1,2,3,0'), 3); $this->assertEqual(quiz_number_of_questions_in_quiz('0,1,0,0,2,0'), 2); + $this->assertEqual(quiz_number_of_questions_in_quiz('10,,0,0'), 1); } function test_quiz_clean_layout() {