MDL-78025 quiz: fix the quiz_questions_in_use logic

This commit is contained in:
Tim Hunt 2023-04-25 18:11:57 +01:00
parent 4a9c0b1410
commit 384ab12c55

View File

@ -1432,25 +1432,15 @@ function quiz_get_post_actions() {
}
/**
* Standard callback used by questions_in_use.
*
* @param array $questionids of question ids.
* @return bool whether any of these questions are used by any instance of this module.
*/
function quiz_questions_in_use($questionids) {
global $DB;
list($test, $params) = $DB->get_in_or_equal($questionids);
$params['component'] = 'mod_quiz';
$params['questionarea'] = 'slot';
$sql = "SELECT qs.id
FROM {quiz_slots} qs
JOIN {question_references} qr ON qr.itemid = qs.id
JOIN {question_bank_entries} qbe ON qbe.id = qr.questionbankentryid
JOIN {question_versions} qv ON qv.questionbankentryid = qbe.id
WHERE qv.questionid $test
AND qr.component = ?
AND qr.questionarea = ?";
return $DB->record_exists_sql($sql, $params) || question_engine::questions_in_use(
$questionids, new qubaid_join('{quiz_attempts} quiza',
'quiza.uniqueid', 'quiza.preview = 0'));
return question_engine::questions_in_use($questionids,
new qubaid_join('{quiz_attempts} quiza', 'quiza.uniqueid',
'quiza.preview = 0'));
}
/**