Merge from MOODLE_14_STABLE.

Student and teacher enrolments now unique + version bump

Made student and teacher enrolments unique, enforced at the database level. This patch also removes a cleanup job in moodle's cron that removed duplicate enrolments.

Merge of patchset  [email protected]/moodle--eduforge--1.3.3--patch-422
This commit is contained in:
martinlanghoff
2004-11-24 02:25:36 +00:00
parent a56f0d607b
commit b110348b71
6 changed files with 71 additions and 18 deletions
+37
View File
@@ -722,6 +722,43 @@ function main_upgrade($oldversion=0) {
execute_sql("UPDATE {$CFG->prefix}log_display SET field='firstname||\' \'||lastname' WHERE module='course' AND action='user report' AND mtable='user'");
}
if ($oldversion < 2004112400) {
/// Delete duplicate enrolments
/// and then tell the database course,userid is a unique combination
if ($users = get_records_select("user_students", "userid > 0 GROUP BY course, userid ".
"HAVING count(*) > 1", "", "max(id) as id, userid, course ,count(*)")) {
foreach ($users as $user) {
delete_records_select("user_students", "userid = '$user->userid' ".
"AND course = '$user->course' AND id <> '$user->id'");
}
}
flush();
// drop some indexes quietly -- they may or may not exist depending on what version
// the user upgrades from
execute_sql("DROP INDEX {$CFG->prefix}user_students_courseuserid_idx ", false);
execute_sql("DROP INDEX {$CFG->prefix}user_students_courseuserid_uk ", false);
modify_database('','CREATE UNIQUE INDEX prefix_user_students_courseuserid_uk ON prefix_user_students (course,userid);');
/// Delete duplicate teacher enrolments
/// and then tell the database course,userid is a unique combination
if ($users = get_records_select("user_teachers", "userid > 0 GROUP BY course, userid ".
"HAVING count(*) > 1", "", "max(id) as id, userid, course ,count(*)")) {
foreach ($users as $user) {
delete_records_select("user_teachers", "userid = '$user->userid' ".
"AND course = '$user->course' AND id <> '$user->id'");
}
}
flush();
// drop some indexes quietly -- they may or may not exist depending on what version
// the user upgrades from
execute_sql("DROP INDEX {$CFG->prefix}user_teachers_courseuserid_idx ", false);
execute_sql("DROP INDEX {$CFG->prefix}user_teachers_courseuserid_uk ", false);
modify_database('','CREATE UNIQUE INDEX prefix_user_teachers_courseuserid_uk ON prefix_user_teachers (course,userid);');
}
return $result;
}