-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
4.1.6
-
None
-
MOODLE_401_STABLE
using question categories with subcategories as sources lead to buggy query construction.
Following patch fix it...at least for millionnaire
diff --git a/locallib.php b/locallib.php
|
index 595bbd3026d5396f93378a5c29850560ea55adca..89d9d7f046a80d8bddab307888d443b91505627a 100644 |
--- a/locallib.php
|
+++ b/locallib.php
|
@@ -544,14 +544,16 @@ function game_questions_selectrandom( $game, $count=1) { |
// Include subcategories. |
if (game_get_moodle_version() >= '04.00') { |
$table .= ",{$CFG->prefix}question_bank_entries qbe,{$CFG->prefix}question_versions qv "; |
- $select = 'qbe.id=qv.questionbankentryid AND q.id=qv.questionid '. |
- ' AND qbe.questioncategoryid='.$game->questioncategoryid; |
+ $select = 'qbe.id=qv.questionbankentryid AND q.id=qv.questionid '; |
if ($game->subcategories) { |
$cats = question_categorylist( $game->questioncategoryid);
|
if (count( $cats) > 0) { |
- $select = 'qbe.questioncategoryid in ('.implode( ',', $cats).')'; |
+ $select .= 'AND qbe.questioncategoryid in ('.implode( ',', $cats).')'; |
}
|
}
|
+ else { |
+ $select .=' AND qbe.questioncategoryid='.$game->questioncategoryid; |
+ }
|
} else { |
$select = 'category='.$game->questioncategoryid; |
if ($game->subcategories) { |
diff --git a/millionaire/play.php b/millionaire/play.php
|
index c7befff128f77b4f811de65971c26c615e423cd6..41598fcde88767cd902eb5f2708d07629caa1eef 100644 |
--- a/millionaire/play.php
|
+++ b/millionaire/play.php
|
@@ -348,13 +348,16 @@ function game_millionaire_selectquestion( &$aanswer, $game, $attempt, &$milliona |
$select2 = ''; |
if (game_get_moodle_version() >= '04.00') { |
$table .= ",{$CFG->prefix}question_bank_entries qbe,{$CFG->prefix}question_versions qv "; |
- $select2 = 'qbe.id=qv.questionbankentryid AND q.id=qv.questionid AND qbe.questioncategoryid='.$game->questioncategoryid; |
+ $select2 = 'qbe.id=qv.questionbankentryid AND q.id=qv.questionid'; |
if ($game->subcategories) { |
$cats = question_categorylist( $game->questioncategoryid);
|
if (count( $cats) > 0) { |
- $select2 = ' qbe.questioncategoryid in ('.implode( ',', $cats).')'; |
+ $select2 .= ' AND qbe.questioncategoryid in ('.implode( ',', $cats).')'; |
}
|
}
|
+ else { |
+ $select2 .= ' AND qbe.questioncategoryid='.$game->questioncategoryid; |
+ }
|
} else { |
$select2 = 'category='.$game->questioncategoryid; |
if ($game->subcategories) { |