Merge branch 'MDL-79708-403' of https://github.com/ilyatregubov/moodle into MOODLE_403_STABLE

This commit is contained in:
Shamim Rezaie
2024-01-03 00:11:33 +11:00
4 changed files with 48 additions and 2 deletions
+22
View File
@@ -3682,5 +3682,27 @@ privatefiles,moodle|/user/files.php';
// Automatically generated Moodle v4.3.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2023100902.01) {
$sqllike = $DB->sql_like('filtercondition', '?');
$params[] = '%includesubcategories%';
$sql = "SELECT qsr.* FROM {question_set_references} qsr WHERE $sqllike";
$results = $DB->get_recordset_sql($sql, $params);
foreach ($results as $result) {
$filtercondition = json_decode($result->filtercondition);
if (isset($filtercondition->filter->category->includesubcategories)) {
$filtercondition->filter->category->filteroptions =
['includesubcategories' => $filtercondition->filter->category->includesubcategories];
unset($filtercondition->filter->category->includesubcategories);
$result->filtercondition = json_encode($filtercondition);
$DB->update_record('question_set_references', $result);
}
}
$results->close();
upgrade_main_savepoint(true, 2023100902.01);
}
return true;
}
@@ -16,6 +16,8 @@
namespace mod_quiz;
use core_question\question_reference_manager;
defined('MOODLE_INTERNAL') || die();
global $CFG;
@@ -558,6 +560,12 @@ class quiz_question_restore_test extends \advanced_testcase {
$this->assertArrayHasKey('filter', $filterconditions);
$this->assertArrayHasKey('category', $filterconditions['filter']);
$this->assertArrayHasKey('qtagids', $filterconditions['filter']);
$this->assertArrayHasKey('filteroptions', $filterconditions['filter']['category']);
$this->assertArrayHasKey('includesubcategories', $filterconditions['filter']['category']['filteroptions']);
// MDL-79708: Bad filter conversion check.
$this->assertArrayNotHasKey('includesubcategories', $filterconditions['filter']['category']);
$this->assertArrayNotHasKey('questioncategoryid', $filterconditions);
$this->assertArrayNotHasKey('tags', $filterconditions);
$expectedtags = \core_tag_tag::get_by_name_bulk(1, ['foo', 'bar']);
@@ -567,6 +575,18 @@ class quiz_question_restore_test extends \advanced_testcase {
$this->assertEquals($expectedcategory->id, $filterconditions['filter']['category']['values'][0]);
$expectedcat = implode(',', [$expectedcategory->id, $expectedcategory->contextid]);
$this->assertEquals($expectedcat, $filterconditions['cat']);
// MDL-79708: Try to convert already converted filter.
$filterconditionsold = $filterconditions;
$filterconditions = question_reference_manager::convert_legacy_set_reference_filter_condition($filterconditions);
// Check that the filtercondition didn't change.
$this->assertEquals($filterconditionsold, $filterconditions);
// MDL-79708: Try to convert a filter with previously bad conversion.
$filterconditions['filter']['category']['includesubcategories'] = 0;
unset($filterconditions['filter']['category']['filteroptions']);
$filterconditions = question_reference_manager::convert_legacy_set_reference_filter_condition($filterconditions);
$this->assertEquals($filterconditionsold, $filterconditions);
}
}
}
@@ -94,7 +94,7 @@ class question_reference_manager {
$filtercondition['filter']['category'] = [
'jointype' => \qbank_managecategories\category_condition::JOINTYPE_DEFAULT,
'values' => [$filtercondition['questioncategoryid']],
'includesubcategories' => $filtercondition['includingsubcategories'],
'filteroptions' => ['includesubcategories' => $filtercondition['includingsubcategories']],
];
unset($filtercondition['questioncategoryid']);
unset($filtercondition['includingsubcategories']);
@@ -119,6 +119,10 @@ class question_reference_manager {
$filtercondition['qpage'] = 0;
$filtercondition['qperpage'] = 100;
$filtercondition['jointype'] = \core\output\datafilter::JOINTYPE_ALL;
} else if (isset($filtercondition['filter']['category']['includesubcategories'])) {
$filtercondition['filter']['category']['filteroptions'] =
['includesubcategories' => $filtercondition['filter']['category']['includesubcategories']];
unset($filtercondition['filter']['category']['includesubcategories']);
}
return $filtercondition;
}
+1 -1
View File
@@ -29,7 +29,7 @@
defined('MOODLE_INTERNAL') || die();
$version = 2023100902.00; // 20231009 = branching date YYYYMMDD - do not modify!
$version = 2023100902.01; // 20231009 = branching date YYYYMMDD - do not modify!
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.
$release = '4.3.2 (Build: 20231222)'; // Human-friendly version name