]> git.mjollnir.org Git - moodle.git/commitdiff
More robust teacher adding/removing
authormoodler <moodler>
Sun, 17 Aug 2003 08:51:55 +0000 (08:51 +0000)
committermoodler <moodler>
Sun, 17 Aug 2003 08:51:55 +0000 (08:51 +0000)
course/teacher.php
lib/moodlelib.php

index 34dbed62d006416a0d96eefcad53dd1d1212d0ec..4da64353e21111b6ad449530001d844d27dddd87 100644 (file)
                redirect("teacher.php?id=$course->id", get_string("changessaved"));
        }
 
-
-/// Get all existing teachers for this course.
-    $teachers = get_course_teachers($course->id);
-
-
 /// Add a teacher if one is specified
 
     if (!empty($_GET['add'])) {
-           if (!isteacher($course->id)){
-                   error("You must be an administrator or teacher to modify this course.");
-        }
-
-        if (! $user = get_record("user", "id", $_GET['add'])) {
-            error("That teacher (id = $add) doesn't exist", "teacher.php?id=$course->id");
-        }
-
-        if (!empty($teachers)) {
-            foreach ($teachers as $tt) {
-                if ($tt->id == $user->id) {
-                    error("That user is already a teacher for this course.", "teacher.php?id=$course->id");
-                }
-            }
-        }
-
-        $teacher->userid   = $user->id;
-        $teacher->course = $course->id;
-        $teacher->editall = 1;
-        if (!empty($teachers)) {
-            $teacher->authority = 2;
-        } else {
-            $teacher->authority = 1;   // First teacher is the main teacher
-        }
-        $teacher->id = insert_record("user_teachers", $teacher);
-        if (empty($teacher->id)) {
+        if (! add_teacher($add, $course->id)) {
             error("Could not add that teacher to this course!");
         }
-        $user->authority = $teacher->authority;
-        $user->editall = $teacher->editall;
-        $teachers[] = $user;
-
     }
 
 /// Remove a teacher if one is specified.
 
     if (!empty($_GET['remove'])) {
-
-        if (!isteacher($course->id)){
-               error("You must be an administrator or teacher to modify this course.");
-               }
-        if (! $user = get_record("user", "id", $_GET['remove'])) {
-            error("That teacher (id = $remove) doesn't exist", "teacher.php?id=$course->id");
-        }
-        if (!empty($teachers)) {
-            foreach ($teachers as $key => $tt) {
-                if ($tt->id == $user->id) {
-                    remove_teacher($user->id, $course->id);
-                    unset($teachers[$key]);
-                }
-            }
+        if (! remove_teacher($remove, $course->id)) {
+            error("Could not add that teacher to this course!");
         }
     }
 
+/// Display all current teachers for this course.
+    $teachers = get_course_teachers($course->id);
+
     print_heading_with_help("$strexistingteachers $parateachers", "teachers");
 
     if (empty($teachers)) {
index e2ebed3acaa2df8b0e9bfc18e92413a66b54a3e2..7d5e7e4831e62aa018cba606f4d6442cd7a0c786 100644 (file)
@@ -613,25 +613,25 @@ function authenticate_user_login($username, $password) {
     }
 }
 
-
 function enrol_student($userid, $courseid) {
 /// Enrols a student in a given course
-    global $db;
 
     if (!record_exists("user_students", "userid", $userid, "course", $courseid)) {
-        $student->userid = $userid;
-        $student->course = $courseid;
-        $student->start = 0;
-        $student->end = 0;
-        $student->time = time();
-        return insert_record("user_students", $student);
+        if (record_exists("user", "id", $userid)) {
+            $student->userid = $userid;
+            $student->course = $courseid;
+            $student->start = 0;
+            $student->end = 0;
+            $student->time = time();
+            return insert_record("user_students", $student);
+        }
+        return false;
     }
     return true;
 }
 
 function unenrol_student($user, $course=0) {
 /// Unenrols a student from a given course
-    global $db;
 
     if ($course) {
         /// First delete any crucial stuff that might still send mail
@@ -648,30 +648,83 @@ function unenrol_student($user, $course=0) {
     }
 }
 
-function remove_teacher($user, $course=0) {
+function add_teacher($userid, $courseid) {
+/// Add a teacher to a given course
+
+    if (!record_exists("user_teachers", "userid", $userid, "course", $courseid)) {
+        if (record_exists("user", "id", $userid)) {
+            $teacher->userid = $userid;
+            $teacher->course = $courseid;
+            $teacher->editall = 1;
+            $teacher->role = "";
+            if (record_exists("user_teachers", "course", $courseid)) {
+                $teacher->authority = 2;
+            } else {
+                $teacher->authority = 1;
+            }
+            return insert_record("user_teachers", $teacher);
+        }
+        return false;
+    }
+    return true;
+}
+
+function remove_teacher($userid, $courseid=0) {
 /// Removes a teacher from a given course (or ALL courses)
 /// Does not delete the user account
-    global $db;
-
-    if ($course) {
+    if ($courseid) {
         /// First delete any crucial stuff that might still send mail
-        if ($forums = get_records("forum", "course", $course)) {
+        if ($forums = get_records("forum", "course", $courseid)) {
             foreach ($forums as $forum) {
-                delete_records("forum_subscriptions", "forum", $forum->id, "userid", $user);
+                delete_records("forum_subscriptions", "forum", $forum->id, "userid", $userid);
             }
         }
-        return delete_records("user_teachers", "userid", $user, "course", $course);
+        return delete_records("user_teachers", "userid", $userid, "course", $courseid);
     } else {
-        delete_records("forum_subscriptions", "userid", $user);
-        return delete_records("user_teachers", "userid", $user);
+        delete_records("forum_subscriptions", "userid", $userid);
+        return delete_records("user_teachers", "userid", $userid);
+    }
+}
+
+
+function add_creator($userid) {
+/// Add a creator to the site
+
+    if (!record_exists("user_admins", "userid", $userid)) {
+        if (record_exists("user", "id", $userid)) {
+            $creator->userid = $userid;
+            return insert_record("user_coursecreators", $creator);
+        }
+        return false;
+    }
+    return true;
+}
+
+function remove_creator($userid) {
+/// Removes a creator from a site
+    global $db;
+
+    return delete_records("user_coursecreators", "userid", $userid);
+}
+
+function add_admin($userid) {
+/// Add an admin to the site
+
+    if (!record_exists("user_admins", "userid", $userid)) {
+        if (record_exists("user", "id", $userid)) {
+            $admin->userid = $userid;
+            return insert_record("user_admins", $admin);
+        }
+        return false;
     }
+    return true;
 }
 
-function remove_admin($user) {
+function remove_admin($userid) {
 /// Removes an admin from a site
     global $db;
 
-    return delete_records("user_admins", "userid", $user);
+    return delete_records("user_admins", "userid", $userid);
 }