diff --git a/mod/quiz/classes/structure.php b/mod/quiz/classes/structure.php index 968ad9cda51..f261ccce796 100644 --- a/mod/quiz/classes/structure.php +++ b/mod/quiz/classes/structure.php @@ -1853,12 +1853,18 @@ class structure { private function populate_question_sources(): void { global $DB; - $sql = 'SELECT c.id AS contextid, cm.id, cm.course - FROM {question_categories} qc - JOIN {context} c ON c.id = qc.contextid - JOIN {course_modules} cm ON cm.id = c.instanceid AND c.contextlevel = ' . CONTEXT_MODULE . ' - GROUP BY c.id, cm.id, cm.course'; - $this->questionsources = $DB->get_records_sql($sql); + $contextids = array_map(fn($question) => $question->contextid, $this->questions); + [$insql, $inparams] = $DB->get_in_or_equal(array_unique($contextids)); + + $sql = " + SELECT c.id as contextid, cm.id, cm.course + FROM {context} c + JOIN {course_modules} cm ON cm.id = c.instanceid AND c.contextlevel = ? + WHERE c.id {$insql} + "; + $params = array_merge([context_module::LEVEL], $inparams); + + $this->questionsources = $DB->get_records_sql($sql, $params); } /** diff --git a/mod/quiz/templates/question_slot.mustache b/mod/quiz/templates/question_slot.mustache index 9fd2beefb87..a6c4fb680b8 100644 --- a/mod/quiz/templates/question_slot.mustache +++ b/mod/quiz/templates/question_slot.mustache @@ -58,7 +58,7 @@ {{#issharedbank}}
{{/issharedbank}} diff --git a/mod/quiz/tests/behat/editing_add_from_question_bank.feature b/mod/quiz/tests/behat/editing_add_from_question_bank.feature index 6d2c7ef7325..33fb35b7a48 100644 --- a/mod/quiz/tests/behat/editing_add_from_question_bank.feature +++ b/mod/quiz/tests/behat/editing_add_from_question_bank.feature @@ -178,6 +178,7 @@ Feature: Adding questions to a quiz from the question bank And I click on "Select" "checkbox" in the "question 03 name" "table_row" And I click on "Add selected questions to the quiz" "button" And I should see "question 03 name" + And "Qbank 1 & < > " "text" should appear after "question 03 name" "text" @javascript Scenario: Validate the sorting while adding questions from question bank