mirror of
https://github.com/moodle/moodle.git
synced 2025-01-22 16:18:24 +01:00
9197e1472f
Still needs plenty of testing. There is no GUI yet for turning on the groupmode just for the forum (this will be on the course page) but you can put a 1 (visible) or 2 (separate) in the course_modules table.
146 lines
5.5 KiB
PHP
146 lines
5.5 KiB
PHP
<?PHP // $Id$
|
|
|
|
// Displays a post, and all the posts below it.
|
|
// If no post is given, displays all posts in a discussion
|
|
|
|
require_once("../../config.php");
|
|
require_once("lib.php");
|
|
|
|
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");
|
|
}
|
|
|
|
if (! $course = get_record("course", "id", $discussion->course)) {
|
|
error("Course ID is incorrect - discussion is faulty");
|
|
}
|
|
|
|
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)) {
|
|
if (!forum_move_attachments($discussion, $move)) {
|
|
notify("Errors occurred while moving attachment directories - check your file permissions");
|
|
}
|
|
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");
|
|
$discussionmoved = true;
|
|
} 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
|
|
}
|
|
|
|
$logparameters = "d=$discussion->id";
|
|
if ($parent) {
|
|
$logparameters .= "&parent=$parent";
|
|
}
|
|
add_to_log($course->id, "forum", "view discussion", "discuss.php?$logparameters", "$discussion->id");
|
|
|
|
unset($SESSION->fromdiscussion);
|
|
|
|
forum_set_display_mode($mode);
|
|
|
|
$displaymode = $USER->mode;
|
|
|
|
if ($parent) {
|
|
if (abs($USER->mode) == 1) { // If flat AND parent, then force nested display this time
|
|
$displaymode = 3;
|
|
}
|
|
} else {
|
|
$parent = $discussion->firstpost;
|
|
$navtail = "$discussion->name";
|
|
}
|
|
|
|
if (! $post = forum_get_post_full($parent)) {
|
|
error("Discussion no longer exists", "$CFG->wwwroot/mod/forum/view.php?f=$forum->id");
|
|
}
|
|
|
|
if (empty($navtail)) {
|
|
$navtail = "<A HREF=\"discuss.php?d=$discussion->id\">$discussion->name</A> -> $post->subject";
|
|
}
|
|
|
|
$navmiddle = "<A HREF=\"../forum/index.php?id=$course->id\">".get_string("forums", "forum")."</A> -> <A HREF=\"../forum/view.php?f=$forum->id\">$forum->name</A>";
|
|
|
|
$searchform = forum_print_search_form($course, "", true, "plain");
|
|
|
|
if ($course->category) {
|
|
print_header("$course->shortname: $discussion->name", "$course->fullname",
|
|
"<A HREF=../../course/view.php?id=$course->id>$course->shortname</A> ->
|
|
$navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm));
|
|
} else {
|
|
print_header("$course->shortname: $discussion->name", "$course->fullname",
|
|
"$navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm));
|
|
}
|
|
|
|
/// Check to see if groups are being used in this forum
|
|
/// If so, make sure the current person is allowed to see this discussion
|
|
|
|
$groupmode = groupmode($course, $cm);
|
|
|
|
if ($groupmode == SEPARATEGROUPS and !isteacheredit($course->id)) { // Groups must be kept separate
|
|
require_login();
|
|
if (!$toppost = get_record("forum_posts", "id", $discussion->firstpost)) {
|
|
error("Could not find the top post of the discussion");
|
|
}
|
|
if (!$group = user_group($course->id, $toppost->userid)) { // Find the topic's group
|
|
error("Could not find the appropriate group of this discussion");
|
|
}
|
|
if (mygroupid($course->id) != $group->id) {
|
|
print_heading("Sorry, you can't see this discussion because you are not in this group");
|
|
print_footer();
|
|
die;
|
|
}
|
|
}
|
|
|
|
|
|
echo "<table width=\"100%\"><tr><td width=\"33%\"> </td><td width=\"33%\">";
|
|
forum_print_mode_form($discussion->id, $displaymode);
|
|
echo "</td><td width=\"33%\">";
|
|
if (isteacher($course->id)) { // Popup menu to allow discussions to be moved to other forums
|
|
if ($forums = get_all_instances_in_course("forum", $course)) {
|
|
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>";
|
|
}
|
|
}
|
|
}
|
|
echo "</td></tr></table>";
|
|
|
|
if (isset($discussionmoved)) {
|
|
notify(get_string("discussionmoved", "forum", $forum->name));
|
|
}
|
|
|
|
forum_print_discussion($course, $forum, $discussion, $post, $displaymode);
|
|
|
|
print_footer($course);
|
|
|
|
?>
|