adding capabilities
[moodle.git] / course / teacher.php
1 <?php // $Id$
2       // Admin-only script to assign teachers to courses
4     /// This page is deprecated
6     require_once("../config.php");
8     define("MAX_USERS_PER_PAGE", 50);
10     $id     = required_param('id', PARAM_INT);         // course id
11     $add    = optional_param('add', 0, PARAM_INT);
12     $remove = optional_param('remove', 0, PARAM_INT);
13     $search = optional_param('search', '', PARAM_RAW); // search string
15     require_login();
17     if (! $course = get_record("course", "id", $id)) {
18         error("Course ID was incorrect (can't find it)");
19     }
21     if (!(isteacheredit($course->id) and iscreator()) and 
22         !(isteacheredit($course->id) and !empty($CFG->teacherassignteachers) ) ) {
23         error("You must be an administrator or course creator to use this page.");
24     }
26     $strassignteachers = get_string("assignteachers");
27     $strcourses = get_string("courses");
28     $strteachers = get_string("teachers");
29     $stradministration = get_string("administration");
30     $strexistingteachers   = get_string("existingteachers");
31     $strnoexistingteachers = get_string("noexistingteachers");
32     $strpotentialteachers  = get_string("potentialteachers");
33     $strnopotentialteachers  = get_string("nopotentialteachers");
34     $straddteacher    = get_string("addteacher");
35     $strremoveteacher = get_string("removeteacher");
36     $strsearch        = get_string("search");
37     $strsearchresults  = get_string("searchresults");
38     $strsearchagain   = get_string("searchagain");
39     $strtoomanytoshow   = get_string("toomanytoshow");
40     $strname   = get_string("name");
41     $strorder   = get_string("order");
42     $strrole   = get_string("role");
43     $stredit   = get_string("editingteachershort");
44     $stryes   = get_string("yes");
45     $strno   = get_string("no");
47     if ($search) {
48         $searchstring = $strsearchagain;
49     } else {
50         $searchstring = $strsearch;
51     }
53     if ($course->teachers != $strteachers) {
54         $parateachers = " ($course->teachers)";
55     } else {
56         $parateachers = "";
57     }
60 /// If data submitted, then process and store.
62     if ($form = data_submitted() and confirm_sesskey()) {
63         unset ($form->sesskey);
64         $rank = array();
66         // Peel out all the data from variable names.
67         foreach ($form as $key => $val) {
68             if ($key <> "id") {
69                 $type = substr($key,0,1);
70                 $num  = substr($key,1);
71                 $rank[$num][$type] = $val;
72             }
73         }
75         foreach ($rank as $num => $vals) {
76             if (! $teacher = get_record("user_teachers", "course", "$course->id", "userid", "$num")) {
77                 error("No such teacher in course $course->shortname with user id $num");
78             }
79             $teacher->role = $vals['r'];
80             $teacher->authority = $vals['a'];
81             $teacher->editall = $vals['e'];
82             if (!update_record("user_teachers", $teacher)) {
83                 error("Could not update teacher entry id = $teacher->id");
84             }
85         }
86         redirect("teacher.php?id=$course->id", get_string("changessaved"));
87     }
90 /// Print headers
92     print_header("$course->shortname: $strassignteachers", 
93                  "$course->fullname", 
94                  "<a href=\"index.php\">$strcourses</a> -> ".
95                  "<a href=\"view.php?id=$course->id\">$course->shortname</a> -> ".
96                  "$strassignteachers", "");
98 /// Add a teacher if one is specified
100     if (!empty($add) and confirm_sesskey()) {
101         if (! add_teacher($add, $course->id)) {
102             error("Could not add that teacher to this course!");
103         }
104     }
106 /// Remove a teacher if one is specified.
107     
108     if (!empty($remove) and confirm_sesskey()) {
109         if (! remove_teacher($remove, $course->id)) {
110             error("Could not remove that teacher from this course!");
111         }
112     }
114 /// Display all current teachers for this course.
115     $teachers = get_course_teachers($course->id);
117     print_heading_with_help("$strexistingteachers $parateachers", "teachers");
119     if (empty($teachers)) {
120         echo "<p align=\"center\">$strnoexistingteachers</a>";
121         $teacherlist = "";
123     } else {
125         $table->head  = array ("", $strname, $strorder, $strrole, $stredit, "&nbsp;");
126         $table->align = array ("right", "left", "center", "center", "center", "center");
127         $table->size  = array ("35", "", "", "", "10", "");
128     
129         $ordermenu = NULL;
130         $ordermenu[0] = get_string("hide");
131         for ($i=1; $i<=8; $i++) {
132             $ordermenu[$i] = $i;
133         }
135         $editmenu = NULL;
136         $editmenu[0] = $strno;
137         $editmenu[1] = $stryes;
139         $teacherarray = array();
140     
141         echo "<form action=\"teacher.php\" method=\"post\">";
142         foreach ($teachers as $teacher) {
143             $teacherarray[] = $teacher->id;
144     
145             $picture = print_user_picture($teacher->id, $course->id, $teacher->picture, false, true);
146     
147             $authority = choose_from_menu ($ordermenu, "a$teacher->id", $teacher->authority, "", "", "", true);
149             if ($USER->id == $teacher->id) {
150                 $editall = "<input name=\"e$teacher->id\" type=\"hidden\" value=\"1\" />$stryes";
151             } else {
152                 $editall = choose_from_menu ($editmenu, "e$teacher->id", $teacher->editall, "", "", "", true);
153             }
154     
155             $removelink = "<a href=\"teacher.php?id=$course->id&amp;remove=$teacher->id&amp;sesskey=$USER->sesskey\">$strremoveteacher</a>";
157             if (!$teacher->role) {
158                 $teacher->role = $course->teacher;
159             }
160     
161             $table->data[] = array ($picture, fullname($teacher, true), $authority,
162                                     "<input type=\"text\" name=\"r$teacher->id\" value=\"$teacher->role\" size=\"30\" maxlength=\"40\" />",
163                                     $editall, $removelink);
164         }
165         $teacherlist = implode(",",$teacherarray);
166         unset($teacherarray);
168         print_table($table);
169         echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />";
170         echo "<input type=\"hidden\" name=\"sesskey\" value=\"$USER->sesskey\" />";
171         echo "<center><input type=\"submit\" value=\"".get_string("savechanges")."\" /> ";
172         echo "</center>";
173         echo "</form>";
174         echo "<br />";
175     }
178 /// Print list of potential teachers
180     print_heading("$strpotentialteachers $parateachers");
182     $usercount = get_users(false, $search, true, $teacherlist);
184     if ($usercount == 0) {
185         echo "<p align=\"center\">$strnopotentialteachers</p>";
187     } else if ($usercount > MAX_USERS_PER_PAGE) {
188         echo "<p align=\"center\">$strtoomanytoshow ($usercount) </p>";
190     } else {
192         if ($search != '') {
193             echo "<p align=\"center\">($strsearchresults : ".s($search, true).")</p>";
194         }
196         if (!$users = get_users(true, $search, true, $teacherlist)) {
197             error("Could not get users!");
198         }
200         unset($table);
201         $table->head  = array ("", get_string("name"), get_string("email"), "");
202         $table->align = array ("right", "left", "center", "center");
203         $table->size  = array ("35", "", "", "");
206         foreach ($users as $user) {
207             $addlink = "<a href=\"teacher.php?id=$course->id&amp;add=$user->id&amp;sesskey=$USER->sesskey\">$straddteacher</a>";
208             $picture = print_user_picture($user->id, $course->id, $user->picture, false, true);
209             $table->data[] = array ($picture, fullname($user, true), $user->email, $addlink);
210         }
211         print_table($table);
212     }
214     if (($search != '') or $usercount > MAX_USERS_PER_PAGE) {
215         echo "<center>";
216         echo "<form action=\"teacher.php\" method=\"get\">";
217         echo "<input type=\"hidden\" name=\"id\" value=\"$course->id\" />";
218         echo "<input type=\"text\" name=\"search\" size=\"20\" />";
219         echo "<input type=\"submit\" value=\"$searchstring\" />";
220         echo "</form>";
221         echo "</center>";
222     }
224     print_footer($course);
226 ?>