Merge branch 'MDL-79708-403' of https://github.com/ilyatregubov/moodle into MOODLE_403_STABLE
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user