From d84da076cc6f6e855b36940ae1547e4396031f70 Mon Sep 17 00:00:00 2001 From: skodak Date: Sun, 31 Aug 2008 19:59:57 +0000 Subject: [PATCH] MDL-15580 fixed several problems in 18 groups upgrade - removing duplicates in groups_members and fixing handling of $result; this does not fix already upgraded sites, sorry --- group/db/upgrade.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/group/db/upgrade.php b/group/db/upgrade.php index 290683bb40c..52afd81ee8f 100644 --- a/group/db/upgrade.php +++ b/group/db/upgrade.php @@ -69,6 +69,17 @@ function install_group_db() { /// 5) Add one UNIQUE index on groups_members (groupid, userid) + // first remove duplicates + $sql = "SELECT cm1.id + FROM {$CFG->prefix}groups_members cm1, {$CFG->prefix}groups_members cm2 + WHERE cm1.groupid = cm2.groupid AND cm1.userid = cm2.userid AND cm1.id <> cm2.id + ORDER BY cm1.id DESC"; + + while ($duplicates = get_records_sql($sql, 0, 1)) { + $first = reset($duplicates); + delete_records('groups_members', 'id', $first->id); + } + /// Define index groupid-courseid (unique) to be added to groups_members $table = new XMLDBTable('groups_members'); $index = new XMLDBIndex('groupid-courseid'); @@ -174,20 +185,20 @@ function install_group_db() { $rec->action = 'view'; $rec->mtable = 'groups'; $rec->field = 'name'; - $result = insert_record('log_display', $rec); + $result = $result && insert_record('log_display', $rec); } /// 11) PERFORM ALL THE NEEDED MOVEMENTS OF DATA $db->debug = false; // suppressing because there can be too many /// a) get the current groups, foreach one add an entry in groups_courses_groups - if ($oldgroups = get_records('groups')) { + if ($result and $oldgroups = get_records('groups')) { foreach ($oldgroups as $oldgroup) { $rec = new Object(); $rec->courseid = $oldgroup->courseid; $rec->groupid = $oldgroup->id; $rec->timeadded = $oldgroup->timemodified; // I think this is not needed since the field is gone? - insert_record('groups_courses_groups', $rec); + $result = $result && insert_record('groups_courses_groups', $rec); } } $db->debug = true;