From: moodler Date: Thu, 24 Apr 2003 08:45:27 +0000 (+0000) Subject: New feature to allow teachers to move a discussion from one forum X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=1fc49f0019b07a3eb34e8e34d1308ab0413a44ac;p=moodle.git New feature to allow teachers to move a discussion from one forum to another. A simple popup menu now appears when teachers view any discussion. Includes a new log entry to log when a discussion is moved. --- diff --git a/lang/en/forum.php b/lang/en/forum.php index 5d2b0a7ad8..a39b79acf6 100644 --- a/lang/en/forum.php +++ b/lang/en/forum.php @@ -54,6 +54,7 @@ $string['modeflatnewestfirst'] = "Display replies flat, with newest first"; $string['modenested'] = "Display replies in nested form"; $string['modethreaded'] = "Display replies in threaded form"; $string['more'] = "more"; +$string['movethisdiscussionto'] = "Move this discussion to ... "; $string['namenews'] = "News forum"; $string['namesocial'] = "Social forum"; $string['nameteacher'] = "Teacher forum"; diff --git a/mod/forum/db/mysql.php b/mod/forum/db/mysql.php index 4381eff1d6..347849df96 100644 --- a/mod/forum/db/mysql.php +++ b/mod/forum/db/mysql.php @@ -4,6 +4,8 @@ function forum_upgrade($oldversion) { // This function does anything necessary to upgrade // older versions to match current functionality + global $CFG; + if ($oldversion < 2002073008) { execute_sql("DELETE FROM modules WHERE name = 'discuss' "); execute_sql("ALTER TABLE `discuss` RENAME `forum_discussions` "); @@ -56,6 +58,9 @@ function forum_upgrade($oldversion) { execute_sql("ALTER TABLE `forum_subscriptions` CHANGE `user` `userid` INT(10) UNSIGNED DEFAULT '0' NOT NULL "); } + if ($oldversion < 2003042402) { + execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('forum', 'move discussion', 'forum_discussions', 'name')"); + } return true; } diff --git a/mod/forum/db/mysql.sql b/mod/forum/db/mysql.sql index 9131f4e813..e5bda210d4 100644 --- a/mod/forum/db/mysql.sql +++ b/mod/forum/db/mysql.sql @@ -90,6 +90,7 @@ INSERT INTO prefix_log_display VALUES ('forum', 'update', 'forum', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'add discussion', 'forum_discussions', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'add post', 'forum_posts', 'subject'); INSERT INTO prefix_log_display VALUES ('forum', 'update post', 'forum_posts', 'subject'); +INSERT INTO prefix_log_display VALUES ('forum', 'move discussion', 'forum_discussions', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'view subscribers', 'forum', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'view discussion', 'forum_discussions', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'view forum', 'forum', 'name'); diff --git a/mod/forum/db/postgres7.php b/mod/forum/db/postgres7.php index eb40f2fa0e..71e4f6700f 100644 --- a/mod/forum/db/postgres7.php +++ b/mod/forum/db/postgres7.php @@ -6,6 +6,10 @@ function forum_upgrade($oldversion) { global $CFG; + if ($oldversion < 2003042402) { + execute_sql("INSERT INTO {$CFG->prefix}log_display VALUES ('forum', 'move discussion', 'forum_discussions', 'name')"); + } + return true; } diff --git a/mod/forum/db/postgres7.sql b/mod/forum/db/postgres7.sql index e19bb371b4..90ca99219a 100644 --- a/mod/forum/db/postgres7.sql +++ b/mod/forum/db/postgres7.sql @@ -83,6 +83,7 @@ INSERT INTO prefix_log_display VALUES ('forum', 'update', 'forum', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'add discussion', 'forum_discussions', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'add post', 'forum_posts', 'subject'); INSERT INTO prefix_log_display VALUES ('forum', 'update post', 'forum_posts', 'subject'); +INSERT INTO prefix_log_display VALUES ('forum', 'move discussion', 'forum_discussions', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'view subscribers', 'forum', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'view discussion', 'forum_discussions', 'name'); INSERT INTO prefix_log_display VALUES ('forum', 'view forum', 'forum', 'name'); diff --git a/mod/forum/discuss.php b/mod/forum/discuss.php index 41b560fadc..f8abf1ae98 100644 --- a/mod/forum/discuss.php +++ b/mod/forum/discuss.php @@ -9,6 +9,7 @@ require_variable($d); // Discussion ID optional_variable($parent); // If set, then display this post and all children. optional_variable($mode); // If set, changes the layout of the thread + optional_variable($move); // If set, moves this discussion to another forum if (! $discussion = get_record("forum_discussions", "id", $d)) { error("Discussion ID was incorrect or no longer exists"); @@ -18,19 +19,38 @@ error("Course ID is incorrect - discussion is faulty"); } - if (! $forum = get_record("forum", "id", $discussion->forum)) { - notify("Bad forum ID stored in this discussion"); + if ($course->category) { + require_login($course->id); + } + + if (!empty($move)) { + if (!isteacher($course->id)) { + error("Only teachers can do that!"); + } + if ($forum = get_record("forum", "id", $move)) { + set_field("forum_discussions", "forum", $forum->id, "id", $discussion->id); + $discussion->forum = $forum->id; + add_to_log($course->id, "forum", "move discussion", "discuss.php?d=$discussion->id", "$discussion->id"); + } else { + error("You can't move to that forum - it doesn't exist!"); + } + } + + if (empty($forum)) { + if (! $forum = get_record("forum", "id", $discussion->forum)) { + notify("Bad forum ID stored in this discussion"); + } } if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { //notify("Bad coursemodule for this discussion"); // Only affects navmenu } - if ($course->category) { - require_login($course->id); + $logparameters = "d=$discussion->id"; + if ($parent) { + $logparameters .= "&parent=$parent"; } - - add_to_log($course->id, "forum", "view discussion", "discuss.php?".$_SERVER["QUERY_STRING"], "$discussion->id"); + add_to_log($course->id, "forum", "view discussion", "discuss.php?$logparameters", "$discussion->id"); unset($SESSION->fromdiscussion); @@ -68,6 +88,23 @@ "$navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm)); } + if (isteacher($course->id)) { // Popup menu to allow discussions to be moved to other forums + if ($forums = get_all_instances_in_course("forum", $course->id, "cw.section ASC")) { + foreach ($forums as $courseforum) { + if ($courseforum->id != $forum->id) { + $url = "discuss.php?d=$discussion->id&move=$courseforum->id"; + $forummenu[$url] = $courseforum->name; + } + } + if (!empty($forummenu)) { + echo "
"; + echo popup_form("$CFG->wwwroot/mod/forum/", $forummenu, "forummenu", "", + get_string("movethisdiscussionto", "forum"), "", "", true); + echo "
"; + } + } + } + forum_print_discussion($course, $forum, $discussion, $post, $displaymode); print_footer($course); diff --git a/mod/forum/mod.html b/mod/forum/mod.html index b2c7fab8d8..e840988408 100644 --- a/mod/forum/mod.html +++ b/mod/forum/mod.html @@ -9,7 +9,7 @@ $form->intro = ""; } if (empty($form->open)) { - $form->open = ""; + $form->open = 2; } if (empty($form->assessed)) { $form->assessed = ""; diff --git a/mod/forum/version.php b/mod/forum/version.php index 303c372616..a30e2d961a 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2002122300; +$module->version = 2003042402; $module->cron = 60; ?>