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-11-15 11:06:00 +00:00
committed by Andrew Robert Nicols
parent 2450fc50ed
commit fc73d9e7b4
3 changed files with 24 additions and 2 deletions
+8 -1
View File
@@ -792,7 +792,14 @@ class restore_groups_structure_step extends restore_structure_step {
$data->groupingid = $this->get_new_parentid('grouping'); // Use new parentid
$data->groupid = $this->get_mappingid('group', $data->groupid); // Get from mappings
$DB->insert_record('groupings_groups', $data); // No need to set this mapping (no child info nor files)
$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)
}
}
protected function after_execute() {
+15
View File
@@ -6160,6 +6160,21 @@ FROM
upgrade_main_savepoint(true, 2011033004.09);
}
if ($oldversion < 2011033005.07) {
// 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, 2011033005.07);
}
return true;
}
+1 -1
View File
@@ -30,7 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$version = 2011033005.06; // 20110330 = branching date YYYYMMDD - do not modify!
$version = 2011033005.07; // 20110330 = branching date YYYYMMDD - do not modify!
// RR = release version - do not change in weeklies
// .XX = incremental changes