MDL-29350 Prevent duplication of groupings when copying activities

This patch also includes a database upgrade to correct data produced as a
result of this bug.
This commit is contained in:
Henning Bostelmann 2011-09-13 01:11:19 +01:00 committed by Andrew Robert Nicols
parent 6be90ce05f
commit 6336bd914a
3 changed files with 24 additions and 2 deletions

View file

@ -802,8 +802,15 @@ class restore_groups_structure_step extends restore_structure_step {
$data->groupingid = $this->get_new_parentid('grouping'); // Use new parentid $data->groupingid = $this->get_new_parentid('grouping'); // Use new parentid
$data->groupid = $this->get_mappingid('group', $data->groupid); // Get from mappings $data->groupid = $this->get_mappingid('group', $data->groupid); // Get from mappings
$params = array();
$params['groupingid'] = $data->groupingid;
$params['groupid'] = $data->groupid;
if (!$DB->record_exists('groupings_groups', $params)) {
$DB->insert_record('groupings_groups', $data); // No need to set this mapping (no child info nor files) $DB->insert_record('groupings_groups', $data); // No need to set this mapping (no child info nor files)
} }
}
protected function after_execute() { protected function after_execute() {
// Add group related files, matching with "group" mappings // Add group related files, matching with "group" mappings

View file

@ -6916,6 +6916,21 @@ FROM
upgrade_main_savepoint(true, 2011110200.02); upgrade_main_savepoint(true, 2011110200.02);
} }
if ($oldversion < 2011111500.01) {
// Remove duplicate entries from groupings_groups table
$sql = 'SELECT MIN(id) AS firstid, groupingid, groupid FROM {groupings_groups} '.
'GROUP BY groupingid, groupid HAVING COUNT(id)>1';
$badrecs = $DB->get_records_sql($sql);
foreach ($badrecs as $badrec) {
$where = 'groupingid = ? and groupid = ? and id > ?';
$params = array($badrec->groupingid, $badrec->groupid, $badrec->firstid);
$DB->delete_records_select('groupings_groups', $where, $params);
}
// Main savepoint reached
upgrade_main_savepoint(true, 2011111500.01);
}
return true; return true;
} }

View file

@ -30,7 +30,7 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
$version = 2011111500.00; // YYYYMMDD = weekly release date of this DEV branch $version = 2011111500.01; // YYYYMMDD = weekly release date of this DEV branch
// RR = release increments - 00 in DEV branches // RR = release increments - 00 in DEV branches
// .XX = incremental changes // .XX = incremental changes