]> git.mjollnir.org Git - moodle.git/commitdiff
New feature to allow teachers to move a discussion from one forum
authormoodler <moodler>
Thu, 24 Apr 2003 08:45:27 +0000 (08:45 +0000)
committermoodler <moodler>
Thu, 24 Apr 2003 08:45:27 +0000 (08:45 +0000)
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.

lang/en/forum.php
mod/forum/db/mysql.php
mod/forum/db/mysql.sql
mod/forum/db/postgres7.php
mod/forum/db/postgres7.sql
mod/forum/discuss.php
mod/forum/mod.html
mod/forum/version.php

index 5d2b0a7ad886fed780664649ee417a0f891f0f23..a39b79acf66b18726a951fa8b8657f735c7454f9 100644 (file)
@@ -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";
index 4381eff1d661ba2d0cd875f4cf8d1f06daa1f8e8..347849df963e4fe80a41415aff67c3a4001a6f7a 100644 (file)
@@ -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;
 
 }
index 9131f4e813530a3ae07d71f9dae0fda701e5f9ce..e5bda210d4925b7389726973fcda4005ba20a11f 100644 (file)
@@ -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');
index eb40f2fa0e3da9648be404f7d36c3b49c10f953f..71e4f6700f1cd1185250385d48359d53e098b019 100644 (file)
@@ -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;
 
 }
index e19bb371b4234f06121999f3dd8b4fab197436b0..90ca99219aa5deaa6d755586efb05d5fd1b5ac33 100644 (file)
@@ -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');
index 41b560fadce0e68e51730cd233cf5116b664c10c..f8abf1ae98edd58c79e41ab5c203c5502c427d9b 100644 (file)
@@ -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");
         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);
 
                  "$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 "<div align=\"right\">";
+                echo popup_form("$CFG->wwwroot/mod/forum/", $forummenu, "forummenu", "", 
+                                 get_string("movethisdiscussionto", "forum"), "", "", true);
+                echo "</div>";
+            }
+        }
+    }
+
     forum_print_discussion($course, $forum, $discussion, $post, $displaymode);
 
     print_footer($course);
index b2c7fab8d848affe85565b601fd92c014d627118..e84098840835b0e6aae972d1e228139934e42296 100644 (file)
@@ -9,7 +9,7 @@
         $form->intro = "";
     }
     if (empty($form->open)) {
-        $form->open = "";
+        $form->open = 2;
     }
     if (empty($form->assessed)) {
         $form->assessed = "";
index 303c37261662b4ca44e26ff5c90745a0ef33ae28..a30e2d961ad3961842c7877c63758ce0adbef3ca 100644 (file)
@@ -5,7 +5,7 @@
 //  This fragment is called by /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2002122300;
+$module->version  = 2003042402;
 $module->cron     = 60;
 
 ?>