$USER->loggedin = true;
$USER->admin = true;
$USER->teacher["$course->id"] = true;
+
+ // This is also a good time to make the Guest User
+
+ $user = NULL;
+ $user->firstname = "Guest";
+ $user->lastname = "User";
+ $user->username = "guest"; // This user is identified by this
+ $user->password = md5("guest");
+ $user->email = "root@localhost";
+ $user->confirmed = 1;
+ $user->timemodified = time();
+
+ if (! $guest->user = insert_record("user", $user)) {
+ notify("Could not create guest user record !!!");
+ }
}
require_login();
</td>
</tr>
<tr valign=top>
- <td><P>Password:</td>
+ <td><P>Summary:</td>
+ <td><TEXTAREA NAME=summary COLS=50 ROWS=10 WRAP=virtual><? p($form->summary) ?></TEXTAREA>
+ <? formerr($err["summary"]) ?>
+ </td>
+</tr>
+<tr valign=top>
+ <td><P>Entry Key:</td>
<td><input type="text" name="password" size=25 value="<? p($form->password) ?>">
<? formerr($err["password"]) ?>
</td>
</tr>
<tr valign=top>
- <td><P>Summary:</td>
- <td><TEXTAREA NAME=summary COLS=50 ROWS=10 WRAP=virtual><? p($form->summary) ?></TEXTAREA>
- <? formerr($err["summary"]) ?>
+ <td><P>Open to guests?:</td>
+ <td><?
+ $choices["0"] = "No, only students are allowed";
+ $choices["1"] = "Yes, allow \"guest\" student in";
+ choose_from_menu ($choices, "guest", $form->guest, "") ?>
</td>
</tr>
<tr valign=top>
if ($password == $course->password) {
- if (! enrol_student_in_course($USER->id, $course->id)) {
- error("An error occurred while trying to enrol you.");
+ if (isguest()) {
+ add_to_log($course->id, "course", "guest", "view.php?id=$course->id", "$USER->id");
+ } else {
+ if (! enrol_student_in_course($USER->id, $course->id)) {
+ error("An error occurred while trying to enrol you.");
+ }
+ add_to_log($course->id, "course", "enrol", "view.php?id=$course->id", "$USER->id");
}
- add_to_log($course->id, "course", "enrol", "view.php?id=$course->id", "$USER->id");
$USER->student["$id"] = true;
}
if ($course->password == "") { // no password, so enrol
- if (! enrol_student_in_course($USER->id, $course->id)) {
- error("An error occurred while trying to enrol you.");
+
+ if (isguest()) {
+ add_to_log($course->id, "course", "guest", "view.php?id=$course->id", "$USER->id");
+ } else {
+ if (! enrol_student_in_course($USER->id, $course->id)) {
+ error("An error occurred while trying to enrol you.");
+ }
+ add_to_log($course->id, "course", "enrol", "view.php?id=$course->id", "$USER->id");
}
- add_to_log($course->id, "course", "enrol", "view.php?id=$course->id", "$USER->id");
-
$USER->student["$id"] = true;
if ($SESSION->wantsurl) {
if ($courses = get_records("course", "category", $cat, "fullname ASC")) {
- foreach ($courses as $key => $course) {
+ foreach ($courses as $course) {
print_course($course);
echo "<BR>\n";
}
print_simple_box_start("CENTER", "80%");
echo "<TABLE WIDTH=100%>";
- echo "<TR VALIGN=top><TD VALIGN=top WIDTH=50%>";
+ echo "<TR VALIGN=top>";
+ echo "<TD VALIGN=top WIDTH=50%>";
echo "<P><FONT SIZE=3><B><A HREF=\"view.php?id=$course->id\">$course->fullname</A></B></FONT></P>";
if ($teachers = get_records_sql("SELECT u.* FROM user u, user_teachers t
WHERE u.id = t.user AND t.course = '$course->id'
echo "$course->teacher: <A HREF=\"../user/view.php?id=$teacher->id&course=$site->id\">$teacher->firstname $teacher->lastname</A><BR>";
}
echo "</FONT></P>";
- }
- echo "</TD><TD VALIGN=top WIDTH=50%>";
- echo "<P><FONT SIZE=2>".text_to_html($course->summary)."</FONT></P>";
- echo "</TD></TR>";
- echo "</TABLE>";
+ }
+ if ($course->guest or ($course->password == "")) {
+ echo "<A TITLE=\"Guest user allowed\" HREF=\"view.php?id=$course->id\">";
+ echo "<IMG VSPACE=4 ALT=\"\" HEIGHT=16 WIDTH=16 BORDER=0 SRC=\"../user/user.gif\"></A> ";
+ }
+ if ($course->password) {
+ echo "<A TITLE=\"Requires a Course entry key\" HREF=\"view.php?id=$course->id\">";
+ echo "<IMG VSPACE=4 ALT=\"\" HEIGHT=16 WIDTH=16 BORDER=0 SRC=\"../pix/i/key.gif\"></A>";
+ }
+
+
+ echo "</TD><TD VALIGN=top WIDTH=50%>";
+ echo "<P><FONT SIZE=2>".text_to_html($course->summary)."</FONT></P>";
+ echo "</TD></TR>";
+ echo "</TABLE>";
- print_simple_box_end();
+ print_simple_box_end();
}
function print_headline($text, $size=2) {
# Table structure for table `course`
#
-CREATE TABLE course (
- id int(10) unsigned NOT NULL auto_increment,
- category int(10) unsigned NOT NULL default '0',
- password varchar(50) NOT NULL default '',
- fullname varchar(254) NOT NULL default '',
- shortname varchar(15) NOT NULL default '',
- summary text NOT NULL,
- format tinyint(4) NOT NULL default '1',
- teacher varchar(100) NOT NULL default 'Teacher',
- student varchar(100) NOT NULL default 'Student',
- startdate int(10) unsigned NOT NULL default '0',
- enddate int(10) unsigned NOT NULL default '0',
- timemodified int(10) unsigned NOT NULL default '0',
- PRIMARY KEY (id)
+CREATE TABLE `course` (
+ `id` int(10) unsigned NOT NULL auto_increment,
+ `category` int(10) unsigned NOT NULL default '0',
+ `password` varchar(50) NOT NULL default '',
+ `fullname` varchar(254) NOT NULL default '',
+ `shortname` varchar(15) NOT NULL default '',
+ `summary` text NOT NULL,
+ `format` tinyint(4) NOT NULL default '1',
+ `teacher` varchar(100) NOT NULL default 'Teacher',
+ `student` varchar(100) NOT NULL default 'Student',
+ `guest` tinyint(1) unsigned NOT NULL default '0',
+ `startdate` int(10) unsigned NOT NULL default '0',
+ `enddate` int(10) unsigned NOT NULL default '0',
+ `timemodified` int(10) unsigned NOT NULL default '0',
+ PRIMARY KEY (`id`)
) TYPE=MyISAM;
# --------------------------------------------------------
# Table structure for table `user_admins`
#
-CREATE TABLE user_admins (
- id int(10) unsigned NOT NULL auto_increment,
- user int(10) unsigned NOT NULL default '0',
- PRIMARY KEY (id),
- UNIQUE KEY id (id)
+CREATE TABLE `user_admins` (
+ `id` int(10) unsigned NOT NULL auto_increment,
+ `user` int(10) unsigned NOT NULL default '0',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `id` (`id`)
) TYPE=MyISAM COMMENT='One record per administrator user';
# --------------------------------------------------------
}
}
-function require_login($course=0) {
-// if they aren't already logged in, then send them off to login
-// $course is optional - if left out then it just requires that
-// that they have an account on the system.
+function require_login($courseid=0) {
+// This function checks that the current user is logged in, and optionally
+// whether they are "logged in" or allowed to be in a particular course.
+// If not, then it redirects them to the site login or course enrolment.
global $CFG, $SESSION, $USER, $FULLME, $HTTP_REFERER, $PHPSESSID;
+ // First check that the user is logged in to the site.
if (! (isset( $USER->loggedin ) && $USER->confirmed) ) {
$SESSION->wantsurl = $FULLME;
$SESSION->fromurl = $HTTP_REFERER;
redirect("$CFG->wwwroot/login/");
}
die;
-
- } else if ($course) {
- if (! ($USER->student[$course] || $USER->teacher[$course] || $USER->admin ) ) {
- if (!record_exists("course", "id", $course)) {
- error("That course doesn't exist");
- }
-
- $SESSION->wantsurl = $FULLME;
- redirect("$CFG->wwwroot/course/enrol.php?id=$course");
- die;
- }
}
+
+ // Next, check if the user can be in a particular course
+ if ($courseid) {
+ if ($USER->student[$courseid] || $USER->teacher[$courseid] || $USER->admin) {
+ update_user_in_db();
+ return; // user is a member of this course.
+ }
+ if (! $course = get_record("course", "id", $courseid)) {
+ error("That course doesn't exist");
+ }
+ if ($course->guest && ($USER->username == "guest")) {
+ update_user_in_db();
+ return; // user is a guest and this course allows guests
+ }
- update_user_in_db();
+ // Not allowed in the course, so see if they want to enrol
+
+ $SESSION->wantsurl = $FULLME;
+ redirect("$CFG->wwwroot/course/enrol.php?id=$courseid");
+ die;
+ }
}
return record_exists_sql("SELECT * FROM user_students WHERE user='$userid' AND course='$course'");
}
+function isguest($userid=0) {
+ global $USER;
+
+ if (!$userid) {
+ return ($USER->username == "guest");
+ }
+
+ return record_exists_sql("SELECT * FROM user WHERE user='$userid' AND username = 'guest' ");
+}
+
function reset_login_count() {
global $SESSION;
require_login($course->id);
+ if (isguest()) {
+ error("Guests are not allowed to edit journals", $HTTP_REFERER);
+ }
+
if (! $journal = get_record("journal", "id", $cm->instance)) {
error("Course module is incorrect");
}
require_login($course->id);
-
if (! $journal = get_record("journal", "id", $cm->instance)) {
error("Course module is incorrect");
}
if ($timenow > $timestart) {
-
print_simple_box_start("center");
if ($timenow < $timefinish) {
error("You are not supposed to use this script like that.");
}
+ if (isguest()) {
+ error("Guests are not allowed to answer surveys", $HTTP_REFERER);
+ }
+
require_variable($id); // Course Module ID
if (! $cm = get_record("course_modules", "id", $id)) {