* @return bool whether any of these questions are used by any instance of this module.
*/
function quiz_questions_in_use($questionids) {
- global $DB;
+ global $DB, $CFG;
+ require_once($CFG->libdir . '/questionlib.php');
list($test, $params) = $DB->get_in_or_equal($questionids);
return $DB->record_exists_select('quiz_question_instances',
- 'question ' . $test, $params);
+ 'question ' . $test, $params) || question_engine::questions_in_use(
+ $questionids, new qubaid_join($CFG->prefix . 'quiz_attempts quiza',
+ 'quiza.uniqueid', 'quiza.preview = 0'));
}
/**
/**
* @param array $questionids of question ids.
- * @return bool whether any of these questions are being used by the question engine.
+ * @param qubaid_condition $qubaids ids of the usages to consider.
+ * @return boolean whether any of these questions are being used by any of
+ * those usages.
*/
- public function questions_in_use(array $questionids) {
+ public function questions_in_use(array $questionids, qubaid_condition $qubaids) {
list($test, $params) = $this->db->get_in_or_equal($questionids);
return $this->db->record_exists_select('question_attempts',
- 'questionid ' . $test, $params);
+ 'questionid ' . $test . ' AND questionusageid ' .
+ $qubaids->usage_id_in(), $params + $qubaids->usage_id_in_params());
}
}
/**
* @param array $questionids of question ids.
- * @return bool whether any of these questions are being used by the question engine.
+ * @param qubaid_condition $qubaids ids of the usages to consider.
+ * @return boolean whether any of these questions are being used by any of
+ * those usages.
*/
- public static function questions_in_use(array $questionids) {
+ public static function questions_in_use(array $questionids, qubaid_condition $qubaids = null) {
+ if (is_null($qubaids)) {
+ return false;
+ }
$dm = new question_engine_data_mapper();
- return $dm->questions_in_use($questionids);
+ return $dm->questions_in_use($questionids, $qubaids);
}
/**