From 5f37b628ae6f794ef9263743d1c805327285679f Mon Sep 17 00:00:00 2001 From: mjollnir_ Date: Tue, 25 Jan 2005 04:33:02 +0000 Subject: [PATCH] Update for meta courses. New table renamed from meta_course to course_meta (and upgrade script provided in mysql.php and postgres7.php) and new field in course table renamed from meta_course to metacourse. Associated changes in code. Please test me! --- blocks/admin/block_admin.php | 2 +- course/edit.html | 8 ++++---- course/edit.php | 4 ++-- course/importstudents.php | 2 +- course/lib.php | 2 +- course/student.php | 2 +- lib/datalib.php | 4 ++-- lib/db/mysql.php | 17 +++++++++++++++++ lib/db/mysql.sql | 4 ++-- lib/db/postgres7.php | 15 +++++++++++++++ lib/db/postgres7.sql | 8 ++++---- lib/moodlelib.php | 30 +++++++++++++++--------------- version.php | 2 +- 13 files changed, 66 insertions(+), 34 deletions(-) diff --git a/blocks/admin/block_admin.php b/blocks/admin/block_admin.php index 2535fe2db3..986f338b81 100644 --- a/blocks/admin/block_admin.php +++ b/blocks/admin/block_admin.php @@ -104,7 +104,7 @@ class block_admin extends block_base { if (!$course->students) { $course->students = get_string('defaultcoursestudents'); } - if (!$course->meta_course) { + if (!$course->metacourse) { $this->content->items[]=''.$course->students.'...'; $this->content->icons[]=''; } diff --git a/course/edit.html b/course/edit.html index 317b5160cb..7d4f15eab9 100644 --- a/course/edit.html +++ b/course/edit.html @@ -15,8 +15,8 @@ if (!isset($form->enrolperiod)) { $form->enrolperiod = 0; } - if (!isset($form->meta_course)) { - $form->meta_course = 0; + if (!isset($form->metacourse)) { + $form->metacourse = 0; } ?>
@@ -265,9 +265,9 @@ if (empty($disable_meta)) { $meta[0] = get_string('no'); $meta[1] = get_string('yes'); - choose_from_menu($meta,"meta_course",$form->meta_course,"","",""); + choose_from_menu($meta,"metacourse",$form->metacourse,"","",""); } else { - echo ((empty($form->meta_course)) ? get_string("no") : get_string("yes")); + echo ((empty($form->metacourse)) ? get_string("no") : get_string("yes")); echo " - $disable_meta "; } ?>  diff --git a/course/edit.php b/course/edit.php index 83e728cedf..a0070b11f0 100644 --- a/course/edit.php +++ b/course/edit.php @@ -24,8 +24,8 @@ if (course_in_meta($course)) { $disable_meta = get_string('metaalreadyinmeta'); } - else if ($course->meta_course) { - if (count_records("meta_course","parent_course",$course->id) > 0) { + else if ($course->metacourse) { + if (count_records("course_meta","parent_course",$course->id) > 0) { $disable_meta = get_string('metaalreadyhascourses'); } } diff --git a/course/importstudents.php b/course/importstudents.php index 8ec7b12163..dfbee66204 100644 --- a/course/importstudents.php +++ b/course/importstudents.php @@ -23,7 +23,7 @@ require_login($course->id); - if (!$course->meta_course) { + if (!$course->metacourse) { redirect("$CFG->wwwroot/course/student.php?id=$course->id"); } diff --git a/course/lib.php b/course/lib.php index 2bcfa7aa35..22c6dee351 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1886,7 +1886,7 @@ function course_format_name ($course,$max=100) { * This function will return true if the given course is a child course at all */ function course_in_meta ($course) { - return record_exists("meta_course","child_course",$course->id); + return record_exists("course_meta","child_course",$course->id); } ?> diff --git a/course/student.php b/course/student.php index 666a640633..132a38a147 100644 --- a/course/student.php +++ b/course/student.php @@ -18,7 +18,7 @@ error("Course ID was incorrect (can't find it)"); } - if ($course->meta_course) { + if ($course->metacourse) { redirect("$CFG->wwwroot/course/importstudents.php?id=$course->id"); } diff --git a/lib/datalib.php b/lib/datalib.php index ab54b3d5bb..2d02df3277 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -1300,7 +1300,7 @@ function get_creators() { function get_courses_in_metacourse($metacourseid) { global $CFG; - $sql = "SELECT c.id,c.shortname,c.fullname FROM {$CFG->prefix}course c, {$CFG->prefix}meta_course mc WHERE mc.parent_course = $metacourseid + $sql = "SELECT c.id,c.shortname,c.fullname FROM {$CFG->prefix}course c, {$CFG->prefix}course_meta mc WHERE mc.parent_course = $metacourseid AND mc.child_course = c.id"; return get_records_sql($sql); @@ -1318,7 +1318,7 @@ function get_courses_notin_metacourse($metacourseid,$count=false) { else { $sql = "SELECT c.id,c.shortname,c.fullname"; } - $sql .= " FROM {$CFG->prefix}course c LEFT JOIN {$CFG->prefix}meta_course mc ON mc.child_course = c.id + $sql .= " FROM {$CFG->prefix}course c LEFT JOIN {$CFG->prefix}course_meta mc ON mc.child_course = c.id WHERE (mc.parent_course IS NULL OR mc.parent_course != $metacourseid) AND c.id != $metacourseid AND c.id != $site->id"; return get_records_sql($sql); diff --git a/lib/db/mysql.php b/lib/db/mysql.php index 6f19eb0720..f7ab81b8c0 100644 --- a/lib/db/mysql.php +++ b/lib/db/mysql.php @@ -1118,6 +1118,23 @@ function main_upgrade($oldversion=0) { table_column('course','','meta_course','integer','1','','0','not null'); } + if ($oldversion < 2005012501) { + execute_sql("DROP TABLE {$CFG->prefix}meta_course",false); // drop silently + execute_sql("ALTER TABLE {$CFG->prefix}course DROP COLUMN meta_course",false); // drop silently + + // add new table for meta courses. + modify_database("","CREATE TABLE `prefix_course_meta` ( + `id` int(1) unsigned NOT NULL auto_increment, + `parent_course` int(10) NOT NULL default 0, + `child_course` int(10) NOT NULL default 0, + PRIMARY KEY (`id`), + KEY `parent_course` (parent_course), + KEY `child_course` (child_course) + );"); + // add flag to course field + table_column('course','','metacourse','integer','1','','0','not null'); + } + return $result; } diff --git a/lib/db/mysql.sql b/lib/db/mysql.sql index 369c1cefd6..dc1db4c98f 100644 --- a/lib/db/mysql.sql +++ b/lib/db/mysql.sql @@ -59,7 +59,7 @@ CREATE TABLE `prefix_course` ( `cost` varchar(10) NOT NULL default '', `timecreated` int(10) unsigned NOT NULL default '0', `timemodified` int(10) unsigned NOT NULL default '0', - `meta_course` int(1) unsigned NOT NULL default '0', + `metacourse` int(1) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `category` (`category`), KEY `idnumber` (`idnumber`), @@ -551,7 +551,7 @@ CREATE TABLE `prefix_user_coursecreators` ( ) TYPE=MyISAM COMMENT='One record per course creator'; -CREATE TABLE `prefix_meta_course` ( +CREATE TABLE `prefix_course_meta` ( `id` int(1) unsigned NOT NULL auto_increment, `parent_course` int(10) NOT NULL default 0, `child_course` int(10) NOT NULL default 0, diff --git a/lib/db/postgres7.php b/lib/db/postgres7.php index a98b1d1f58..aac11d7983 100644 --- a/lib/db/postgres7.php +++ b/lib/db/postgres7.php @@ -890,6 +890,21 @@ function main_upgrade($oldversion=0) { table_column('course','','meta_course','integer','1','','0','not null'); } + if ($oldversion < 2005012501) { //fix table names for consistency + execute_sql("DROP TABLE {$CFG->prefix}meta_course",false); // drop silently + execute_sql("ALTER TABLE {$CFG->prefix}course DROP COLUMN meta_course",false); // drop silently + + modify_database("","CREATE TABLE prefix_course_meta ( + id SERIAL primary key, + parent_course integer NOT NULL, + child_course integer NOT NULL + );"); + + modify_database("","CREATE INDEX prefix_course_meta_parent_idx ON prefix_course_meta (parent_course);"); + modify_database("","CREATE INDEX prefix_course_meta_child_idx ON prefix_course_meta (child_course);"); + table_column('course','','metacourse','integer','1','','0','not null'); + } + return $result; } diff --git a/lib/db/postgres7.sql b/lib/db/postgres7.sql index 9cf09a459c..e2707caa41 100644 --- a/lib/db/postgres7.sql +++ b/lib/db/postgres7.sql @@ -37,7 +37,7 @@ CREATE TABLE prefix_course ( cost varchar(10) NOT NULL default '', timecreated integer NOT NULL default '0', timemodified integer NOT NULL default '0', - meta_course integer NOT NULL default '0' + metacourse integer NOT NULL default '0' ); CREATE UNIQUE INDEX prefix_course_category_sortorder_uk ON prefix_course (category,sortorder); @@ -381,14 +381,14 @@ CREATE TABLE prefix_user_coursecreators ( userid int8 NOT NULL default '0' ); -CREATE TABLE prefix_meta_course ( +CREATE TABLE prefix_course_meta ( id SERIAL primary key, parent_course integer NOT NULL, child_course integer NOT NULL ); -CREATE INDEX prefix_meta_course_parent_idx ON prefix_meta_course (parent_course); -CREATE INDEX prefix_meta_course_child_idx ON prefix_meta_course (child_course); +CREATE INDEX prefix_course_meta_parent_idx ON prefix_course_meta (parent_course); +CREATE INDEX prefix_course_meta_child_idx ON prefix_course_meta (child_course); INSERT INTO prefix_log_display VALUES ('user', 'view', 'user', 'firstname||\' \'||lastname'); INSERT INTO prefix_log_display VALUES ('course', 'user report', 'user', 'firstname||\' \'||lastname'); diff --git a/lib/moodlelib.php b/lib/moodlelib.php index f09dea45a5..308d82919e 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -1045,7 +1045,7 @@ function sync_metacourses() { global $CFG; - if (!$courses = get_records_sql("SELECT DISTINCT parent_course,1 FROM {$CFG->prefix}meta_course")) { + if (!$courses = get_records_sql("SELECT DISTINCT parent_course,1 FROM {$CFG->prefix}course_meta")) { return; } @@ -1068,7 +1068,7 @@ function sync_metacourse($metacourseid) { } - if (count_records('meta_course','parent_course',$metacourseid) == 0) { // if there are no child courses for this meta course, nuke the enrolments + if (count_records('course_meta','parent_course',$metacourseid) == 0) { // if there are no child courses for this meta course, nuke the enrolments if ($enrolments = get_records('user_students','course',$metacourseid,'','userid,1')) { foreach ($enrolments as $enrolment) { unenrol_student($enrolment->userid,$metacourseid); @@ -1080,7 +1080,7 @@ function sync_metacourse($metacourseid) { // this will return a list of userids from user_student for enrolments in the metacourse that shouldn't be there. $sql = "SELECT DISTINCT parent.userid,1 - FROM {$CFG->prefix}meta_course meta + FROM {$CFG->prefix}course_meta meta JOIN {$CFG->prefix}user_students parent ON meta.parent_course = parent.course AND meta.parent_course = $metacourseid @@ -1097,7 +1097,7 @@ function sync_metacourse($metacourseid) { // this will return a list of userids that need to be enrolled in the metacourse $sql = "SELECT DISTINCT child.userid,1 - FROM {$CFG->prefix}meta_course meta + FROM {$CFG->prefix}course_meta meta JOIN {$CFG->prefix}user_students child ON meta.child_course = child.course AND meta.parent_course = $metacourseid @@ -1115,7 +1115,7 @@ function sync_metacourse($metacourseid) { if ($enrolments = get_records('user_students','course',$metacourseid,'','id,userid')) { foreach ($enrolments as $enrol) { if ($maxmin = get_record_sql("SELECT min(timestart) AS timestart, max(timeend) AS timeend - FROM mdl_user_students u JOIN mdl_meta_course mc ON u.course = mc.child_course WHERE userid = $enrol->userid + FROM mdl_user_students u JOIN {$CFG->prefix}course_meta mc ON u.course = mc.child_course WHERE userid = $enrol->userid AND mc.parent_course = $metacourseid")) { $enrol->timestart = $maxmin->timestart; $enrol->timeend = $maxmin->timeend; @@ -1139,10 +1139,10 @@ function add_to_metacourse ($metacourseid, $courseid) { return false; } - if (!$record = get_record("meta_course","parent_course",$metacourseid,"child_course",$courseid)) { + if (!$record = get_record("course_meta","parent_course",$metacourseid,"child_course",$courseid)) { $rec->parent_course = $metacourseid; $rec->child_course = $courseid; - if (!insert_record('meta_course',$rec)) { + if (!insert_record('course_meta',$rec)) { return false; } return sync_metacourse($metacourseid); @@ -1156,7 +1156,7 @@ function add_to_metacourse ($metacourseid, $courseid) { */ function remove_from_metacourse($metacourseid, $courseid) { - if (delete_records('meta_course','parent_course',$metacourseid,'child_course',$courseid)) { + if (delete_records('course_meta','parent_course',$metacourseid,'child_course',$courseid)) { return sync_metacourse($metacourseid); } return false; @@ -1763,7 +1763,7 @@ function enrol_student($userid, $courseid, $timestart=0, $timeend=0, $enrol='man return false; } // enrol the student in any parent meta courses... - if ($parents = get_records('meta_course','child_course',$courseid)) { + if ($parents = get_records('course_meta','child_course',$courseid)) { foreach ($parents as $parent) { enrol_student($userid, $parent->parent_course,$timestart,$timeend,$enrol); } @@ -1811,7 +1811,7 @@ function unenrol_student($userid, $courseid=0) { } } // enrol the student in any parent meta courses... - if ($parents = get_records('meta_course','child_course',$courseid)) { + if ($parents = get_records('course_meta','child_course',$courseid)) { foreach ($parents as $parent) { unenrol_student($userid, $parent->parent_course); } @@ -2143,20 +2143,20 @@ function remove_course_contents($courseid, $showfeedback=true) { $result = false; } - if ($course->meta_course) { - delete_records("meta_course","parent_course",$course->id); + if ($course->metacourse) { + delete_records("course_meta","parent_course",$course->id); sync_metacourse($course->id); // have to do it here so the enrolments get nuked. sync_metacourses won't find it without the id. if ($showfeedback) { - notify("$strdeleted meta_course"); + notify("$strdeleted course_meta"); } } else { - if ($parents = get_records("meta_course","child_course",$course->id)) { + if ($parents = get_records("course_meta","child_course",$course->id)) { foreach ($parents as $parent) { remove_from_metacourse($parent->parent_course,$parent->child_course); // this will do the unenrolments as well. } if ($showfeedback) { - notify("$strdeleted meta_course"); + notify("$strdeleted course_meta"); } } } diff --git a/version.php b/version.php index bf9a923e82..44bb0129b6 100644 --- a/version.php +++ b/version.php @@ -6,7 +6,7 @@ // This is compared against the values stored in the database to determine // whether upgrades should be performed (see lib/db/*.php) - $version = 2005012500; // YYYYMMDD = date of first major branch release 1.4 + $version = 2005012501; // YYYYMMDD = date of first major branch release 1.4 // XY = increments within a single day $release = '1.5 UNSTABLE DEVELOPMENT'; // Human-friendly version name -- 2.39.5