diff --git a/course/topics.php b/course/topics.php
index 912bcdabbd7..42ea9fc1a26 100644
--- a/course/topics.php
+++ b/course/topics.php
@@ -82,9 +82,13 @@
} else {
$admindata[]="id&edit=on\">Turn editing on";
}
+ if ($teacherforum = get_course_teacher_forum($course->id)) {
+ $admindata[]="id\">Teacher Forum...";
+ $adminicon[]="
";
+ }
$admindata[]="id\">Course settings...";
- $adminicon[]="
";
+ $adminicon[]="
";
$admindata[]="id\">Logs...";
$adminicon[]="
";
$admindata[]="id\">Files...";
diff --git a/course/weeks.php b/course/weeks.php
index 506e4a0ee3f..870248b897a 100644
--- a/course/weeks.php
+++ b/course/weeks.php
@@ -73,6 +73,10 @@
$admindata[]="id&edit=on\">Turn editing on";
}
+ if ($teacherforum = get_course_teacher_forum($course->id)) {
+ $admindata[]="id\">Teacher Forum...";
+ $adminicon[]="
";
+ }
$admindata[]="id\">Course settings...";
$adminicon[]="
";
$admindata[]="id\">Logs...";
diff --git a/mod/forum/db/mysql.sql b/mod/forum/db/mysql.sql
index aecc2d1c2b7..9553e3b5f61 100644
--- a/mod/forum/db/mysql.sql
+++ b/mod/forum/db/mysql.sql
@@ -5,7 +5,7 @@
CREATE TABLE forum (
id int(10) unsigned NOT NULL auto_increment,
course int(10) unsigned NOT NULL default '0',
- type enum('discussion','news','general','social','eachuser') NOT NULL default 'general',
+ type enum('discussion','news','general','social','eachuser','teacher') NOT NULL default 'general',
name varchar(255) NOT NULL default '',
intro tinytext NOT NULL,
open tinyint(1) unsigned NOT NULL default '0',
diff --git a/mod/forum/index.php b/mod/forum/index.php
index 99c887d38ed..c19ece59403 100644
--- a/mod/forum/index.php
+++ b/mod/forum/index.php
@@ -40,6 +40,11 @@
if ($forums = get_records("forum", "course", $id, "name ASC")) {
foreach ($forums as $forum) {
+ if ($forum->type == "teacher") {
+ if (!isteacher($course->id)) {
+ continue;
+ }
+ }
$count = count_records("discuss", "forum", "$forum->id");
if ($can_subscribe) {
diff --git a/mod/forum/lib.php b/mod/forum/lib.php
index 53631d6b71c..76b33ec4085 100644
--- a/mod/forum/lib.php
+++ b/mod/forum/lib.php
@@ -40,6 +40,8 @@ function user_can_post_discussion($forum) {
if ($forum->type == "eachuser") {
return (! user_has_posted_discussion($forum->id, $USER->id));
+ } else if ($forum->type == "teacher") {
+ return isteacher($forum->course);
} else if (isteacher($forum->course)) {
return true;
} else {
@@ -113,6 +115,23 @@ function get_course_discussion_forum($courseid) {
}
}
+function get_course_teacher_forum($courseid) {
+ if ($forum = get_record_sql("SELECT * from forum WHERE course = '$courseid' AND type = 'teacher'")) {
+ return $forum;
+ } else {
+ // Doesn't exist, so create one now.
+ $forum->course = $courseid;
+ $forum->type = "teacher";
+ $forum->name = "Teacher Forum";
+ $forum->intro= "For teacher-only notes and discussion";
+ $forum->open = 0;
+ $forum->assessed = 0;
+ $forum->timemodified = time();
+ $forum->id = insert_record("forum", $forum);
+ return get_record_sql("SELECT * from forum WHERE id = '$forum->id'");
+ }
+}
+
function print_forum_latest_topics($forum_id=0, $forum_numtopics=5, $forum_style="plain", $forum_sort="DESC") {
global $CFG, $USER;
diff --git a/mod/forum/subscribe.php b/mod/forum/subscribe.php
index 987b20bf0c4..926213b8164 100644
--- a/mod/forum/subscribe.php
+++ b/mod/forum/subscribe.php
@@ -25,6 +25,13 @@
require_login();
}
+ if ($forum->type == "teacher") {
+ if (!isteacher($course->id)) {
+ error("You must be a $course->teacher to subscribe to this forum");
+ }
+ }
+
+
$returnto = go_back_to("index.php?id=$course->id");
if ( is_subscribed($USER->id, $forum->id) ) {
diff --git a/mod/forum/view.php b/mod/forum/view.php
index e4329e49d64..2106c88cd7b 100644
--- a/mod/forum/view.php
+++ b/mod/forum/view.php
@@ -38,6 +38,13 @@
id\">Forums ->";
}
+ if ($forum->type == "teacher") {
+ if (!isteacher($course->id)) {
+ error("You must be a $course->teacher to view this forum");
+ }
+ }
+
+
add_to_log($course->id, "forum", "view forum", "view.php?f=$forum->id", "$forum->id");
print_header("$course->shortname: $forum->name", "$course->fullname",