require_once("../../config.php");
require_once("lib.php");
- $d = required_param('d', PARAM_INT); // Discussion ID
- $parent = optional_param('parent', 0, PARAM_INT); // If set, then display this post and all children.
- $mode = optional_param('mode', 0, PARAM_INT); // If set, changes the layout of the thread
- $move = optional_param('move', 0, PARAM_INT); // If set, moves this discussion to another forum
- $mark = optional_param('mark', 0, PARAM_INT); // Used for tracking read posts if user initiated.
- $postid = optional_param('postid', 0, PARAM_INT); // Used for tracking read posts if user initiated.
+ $d = required_param('d', PARAM_INT); // Discussion ID
+ $parent = optional_param('parent', 0, PARAM_INT); // If set, then display this post and all children.
+ $mode = optional_param('mode', 0, PARAM_INT); // If set, changes the layout of the thread
+ $move = optional_param('move', 0, PARAM_INT); // If set, moves this discussion to another forum
+ $fromforum = optional_param('fromforum', 0, PARAM_INT); // Needs to be set when we want to move a discussion.
+ $mark = optional_param('mark', 0, PARAM_INT); // Used for tracking read posts if user initiated.
+ $postid = optional_param('postid', 0, PARAM_INT); // Used for tracking read posts if user initiated.
if (!$discussion = get_record("forum_discussions", "id", $d)) {
error("Discussion ID was incorrect or no longer exists");
if (!empty($move)) {
+
+ if (!$sourceforum = get_record('forum', 'id', $fromforum)) {
+ error('Cannot find which forum this discussion is being moved from');
+ }
+ if ($sourceforum->type == 'single') {
+ error('Cannot move discussion from a simple single discussion forum');
+ }
+
require_capability('mod/forum:movediscussions', $modcontext);
if ($forum = get_record("forum", "id", $move)) {
add_to_log($course->id, "forum", "move discussion", "discuss.php?d=$discussion->id", "$discussion->id");
}
$discussionmoved = true;
+
require_once('rsslib.php');
require_once($CFG->libdir.'/rsslib.php');
// Delete the RSS files for the 2 forums because we want to force
// the regeneration of the feeds since the discussions have been
// moved.
- if (!forum_rss_delete_file($forum) || !forum_rss_delete_file($fromforum)) {
+ if (!forum_rss_delete_file($forum) || !forum_rss_delete_file($sourceforum)) {
notify('Could not purge the cached RSS feeds for the source and/or'.
'destination forum(s) - check your file permissionsforums');
}
}
$section = $courseforum->section;
if ($courseforum->id != $forum->id) {
- $url = "discuss.php?d=$discussion->id&move=$courseforum->id";
+ $url = "discuss.php?d=$discussion->id&fromforum=$discussion->forum&move=$courseforum->id";
$forummenu[$url] = format_string($courseforum->name,true);
}
}
choose_from_menu($scale, $postid, $rating->rating, "$strrate...");
}
-function forum_print_mode_form($discussion, $mode) {
+/**
+ * Print the drop down that allows the user to select how they want to have
+ * the discussion displayed.
+ * @param $id - forum id if $forumtype is 'single',
+ * discussion id for any other forum type
+ * @param $mode - forum layout mode
+ * @param $forumtype - optional
+ */
+function forum_print_mode_form($id, $mode, $forumtype='') {
GLOBAL $FORUM_LAYOUT_MODES;
echo "<div align=\"center\">";
- popup_form("discuss.php?d=$discussion&mode=", $FORUM_LAYOUT_MODES, "mode", $mode, "");
+ if ($forumtype == 'single') {
+ popup_form("view.php?f=$id&mode=", $FORUM_LAYOUT_MODES, "mode", $mode, "");
+ } else {
+ popup_form("discuss.php?d=$id&mode=", $FORUM_LAYOUT_MODES, "mode", $mode, "");
+ }
echo "</div>\n";
}
return $status;
}
+
+ // Given a forum object, deletes the RSS file
+ function forum_rss_delete_file($forum) {
+ global $CFG;
+ $rssfile = rss_file_name('forum', $forum);
+ if (file_exists($rssfile)) {
+ return unlink($rssfile);
+ } else {
+ return true;
+ }
+ }
+
+
function forum_rss_newstuff($forum, $time) {
// If there is new stuff in the forum since $time then this returns
// true. Otherwise it returns false.
require_course_login($course, true, $cm);
-
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
/// Print header.
"$navigation ".format_string($forum->name), "", "", true, $buttontext, navmenu($course, $cm));
-
-/// Check whether the user should be able to view this forum.
- $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-
+/// Some capability checks.
if (empty($cm->visible) and !has_capability('moodle/course:viewhiddenactivities', $context)) {
notice(get_string("activityiscurrentlyhidden"));
}
-/// Print settings and things in a table across the top
+/// Print settings and things across the top
+
+ // If it's a simple single discussion forum, we need to print the display
+ // mode control.
+ if ($forum->type == 'single') {
+ if (! $discussion = get_record("forum_discussions", "forum", $forum->id)) {
+ if ($discussions = get_records("forum_discussions", "forum", $forum->id, "timemodified ASC")) {
+ $discussion = array_pop($discussions);
+ }
+ }
+ if ($discussion) {
+ if ($mode) {
+ set_user_preference("forum_displaymode", $mode);
+ }
+ $displaymode = get_user_preferences("forum_displaymode", $CFG->forum_displaymode);
+ forum_print_mode_form($forum->id, $displaymode, $forum->type);
+ }
+ }
+
echo '<table width="100%" border="0" cellpadding="3" cellspacing="0"><tr valign="top">';
/// 2 ways to do this, 1. we can changed the setup_and_print_groups functions