MDL-83345 reportbuilder: upgrade step to migrate existing filter data.

This commit is contained in:
Paul Holden 2024-10-24 11:59:11 +01:00
parent f7e0e8cd96
commit 8c1a4093b3
No known key found for this signature in database
GPG Key ID: A81A96D6045F6164
2 changed files with 36 additions and 1 deletions

View File

@ -1268,5 +1268,40 @@ function xmldb_main_upgrade($oldversion) {
upgrade_main_savepoint(true, 2024112900.01);
}
if ($oldversion < 2024112900.02) {
// Structure to collect current user filter preferences.
$userfilterdata = [];
$select = $DB->sql_like('name', '?');
$params = [$DB->sql_like_escape('reportbuilder-report-') . '%'];
$preferences = $DB->get_records_select('user_preferences', $select, $params, 'userid, name');
foreach ($preferences as $preference) {
preg_match('/^reportbuilder-report-(?<reportid>\d+)-/', $preference->name, $matches);
$userfilterdata[$preference->userid][$matches['reportid']][] = $preference->value;
}
// Migrate user filter preferences to new schema (combining previously chunked values due to size limitation).
foreach ($userfilterdata as $userid => $reportfilterdata) {
foreach ($reportfilterdata as $reportid => $filterdata) {
$DB->insert_record('reportbuilder_user_filter', (object) [
'reportid' => $reportid,
'filterdata' => implode('', $filterdata),
'usercreated' => $userid,
'usermodified' => $userid,
'timecreated' => time(),
'timemodified' => time(),
]);
}
}
// Clean up old user filter preferences.
$DB->delete_records_select('user_preferences', $select, $params);
// Main savepoint reached.
upgrade_main_savepoint(true, 2024112900.02);
}
return true;
}

View File

@ -29,7 +29,7 @@
defined('MOODLE_INTERNAL') || die();
$version = 2024112900.01; // YYYYMMDD = weekly release date of this DEV branch.
$version = 2024112900.02; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.
$release = '5.0dev (Build: 20241129)'; // Human-friendly version name