Skip to content

Commit

Permalink
MDL-29350 Prevent duplication of groupings when copying activities
Browse files Browse the repository at this point in the history
This patch also includes a database upgrade to correct data produced as a
result of this bug.
  • Loading branch information
bostelm authored and Andrew Robert Nicols committed Nov 15, 2011
1 parent 2450fc5 commit fc73d9e
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
9 changes: 8 additions & 1 deletion backup/moodle2/restore_stepslib.php
Expand Up @@ -792,7 +792,14 @@ public function process_grouping_group($data) {

$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() {
Expand Down
15 changes: 15 additions & 0 deletions lib/db/upgrade.php
Expand Up @@ -6160,6 +6160,21 @@ function xmldb_main_upgrade($oldversion) {
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;
}

Expand Down
2 changes: 1 addition & 1 deletion version.php
Expand Up @@ -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

Expand Down

0 comments on commit fc73d9e

Please sign in to comment.