diff --git a/mod/forum/discuss.php b/mod/forum/discuss.php index 846171fb1a4..7dc852b981c 100644 --- a/mod/forum/discuss.php +++ b/mod/forum/discuss.php @@ -31,10 +31,9 @@ $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); $canviewdiscussion = has_capability('mod/forum:viewdiscussion', $modcontext); - if ($forum->type == "news") { - if (!($canviewdiscussion || $USER->id == $discussion->userid - || (($discussion->timestart == 0 || $discussion->timestart <= time()) + if (!($USER->id == $discussion->userid || (($discussion->timestart == 0 + || $discussion->timestart <= time()) && ($discussion->timeend == 0 || $discussion->timeend > time())))) { error('Discussion ID was incorrect or no longer exists', "$CFG->wwwroot/mod/forum/view.php?f=$forum->id"); } @@ -236,10 +235,16 @@ notify(get_string("discussionmoved", "forum", format_string($forum->name,true))); } + /// Print the actual discussion - $canrate = has_capability('mod/forum:rate', $modcontext); - forum_print_discussion($course, $forum, $discussion, $post, $displaymode, $canreply, $canrate); - + if (!$canviewdiscussion) { + notice(get_string('noviewdiscussionspermission', 'forum')); + } else { + $canrate = has_capability('mod/forum:rate', $modcontext); + forum_print_discussion($course, $forum, $discussion, $post, $displaymode, $canreply, $canrate); + } + print_footer($course); + -?> +?> \ No newline at end of file diff --git a/mod/forum/view.php b/mod/forum/view.php index 10878c57b26..5eac0fc9ac1 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -1,18 +1,22 @@ libdir/rsslib.php"); - $id = optional_param('id', 0, PARAM_INT); // Course Module ID - $f = optional_param('f', 0, PARAM_INT); // Forum ID - $mode = optional_param('mode', 0, PARAM_INT); // Display mode (for single forum) - $showall = optional_param('showall', '', PARAM_INT); // show all discussions on one page - $changegroup = optional_param('group', -1, PARAM_INT); // choose the current group - $page = optional_param('page', 0, PARAM_INT); // which page to show - $search = optional_param('search', ''); // search string + + $id = optional_param('id', 0, PARAM_INT); // Course Module ID + $f = optional_param('f', 0, PARAM_INT); // Forum ID + $mode = optional_param('mode', 0, PARAM_INT); // Display mode (for single forum) + $showall = optional_param('showall', '', PARAM_INT); // show all discussions on one page + $changegroup = optional_param('group', -1, PARAM_INT); // choose the current group + $page = optional_param('page', 0, PARAM_INT); // which page to show + $search = optional_param('search', ''); // search string + + if ($id) { + if (! $cm = get_coursemodule_from_id('forum', $id)) { error("Course Module ID was incorrect"); } @@ -22,13 +26,12 @@ if (! $forum = get_record("forum", "id", $cm->instance)) { error("Forum ID was incorrect"); } - $strforums = get_string("modulenameplural", "forum"); $strforum = get_string("modulename", "forum"); - $buttontext = update_module_button($cm->id, $course->id, $strforum); } else if ($f) { + if (! $forum = get_record("forum", "id", $f)) { error("Forum ID was incorrect or no longer exists"); } @@ -49,64 +52,66 @@ } } else { - error("Must specify a course module or a forum ID"); + error('Must specify a course module or a forum ID'); } if (!$buttontext) { $buttontext = forum_search_form($course, $search); } + require_course_login($course, true, $cm); + + +/// Print header. $navigation = "id\">$strforums ->"; + print_header_simple(format_string($forum->name), "", + "$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); - if (!has_capability('mod/forum:viewforum', $context)) { - error('You do not have the permission to view this forum'); + if (empty($cm->visible) and !has_capability('moodle/course:viewhiddenactivities', $context)) { + notice(get_string("activityiscurrentlyhidden")); } + if (!has_capability('mod/forum:viewforum', $context)) { + notice(get_string('noviewdiscussionspermission', 'forum')); + } + + $groupmode = groupmode($course, $cm); + $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); + + if ($groupmode and ($currentgroup === false) and + !has_capability('moodle/site:accessallgroups', $context)) { + notice(get_string('notingroup', 'forum')); + } + + + +/// Okay, we can show the discussions. Log the forum view. if ($cm->id) { add_to_log($course->id, "forum", "view forum", "view.php?id=$cm->id", "$forum->id", $cm->id); } else { add_to_log($course->id, "forum", "view forum", "view.php?f=$forum->id", "$forum->id"); } - print_header_simple(format_string($forum->name), "", - "$navigation ".format_string($forum->name), "", "", true, $buttontext, navmenu($course, $cm)); - - if (empty($cm->visible) and !has_capability('moodle/course:viewhiddenactivities', $context)) { - notice(get_string("activityiscurrentlyhidden")); - } - - - $groupmode = groupmode($course, $cm); - - $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup); - - if ($groupmode and ($currentgroup === false) and - !has_capability('moodle/site:accessallgroups', $context)) { - - print_heading(get_string("notingroup", "forum")); - print_footer($course); - exit; - } /// Print settings and things in a table across the top - echo '
'; - //print them in the menu + /// Print them in the menu print_group_menu($validgroups, $groupmode, $currentgroup, "view.php?id=$cm->id",0); echo ' | '; } - } + } if (!empty($USER->id)) { echo ''; @@ -196,7 +200,7 @@ echo ' | '; } - //If rss are activated at site and forum level and this forum has rss defined, show link + /// If rss are activated at site and forum level and this forum has rss defined, show link if (isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) && $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds && $forum->rsstype and $forum->rssarticles) { echo '
'; |