From: moodler Date: Mon, 23 Oct 2006 04:55:20 +0000 (+0000) Subject: Better handling for guest in forums MDL-7125 X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=a321d42bcde5a384b73310d304b8a4095309f15d;p=moodle.git Better handling for guest in forums MDL-7125 --- diff --git a/mod/forum/lib.php b/mod/forum/lib.php index fe4155359a..cb65d62c29 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -2904,6 +2904,10 @@ function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode= return false; } + if (has_capability('moodle/legacy:guest', $context, NULL, false)) { // User is a guest here! + return false; + } + if ($forum->type == "eachuser") { return (!forum_user_has_posted_discussion($forum->id, $USER->id)); } else if ($currentgroup) { @@ -2935,9 +2939,11 @@ function forum_user_can_post($forum, $user=NULL) { $context = get_context_instance(CONTEXT_MODULE, $cm->id); if (isset($user)) { - $canreply = has_capability('mod/forum:replypost', $context, false, $user->id); + $canreply = has_capability('mod/forum:replypost', $context, $user->id, false) && + !has_capability('moodle/legacy:guest', $context, $user->id, false); } else { - $canreply = has_capability('mod/forum:replypost', $context, false); + $canreply = has_capability('mod/forum:replypost', $context, NULL, false) && + !has_capability('moodle/legacy:guest', $context, NULL, false); } return $canreply; diff --git a/mod/forum/post.php b/mod/forum/post.php index b5e86fb8cc..c11e6b6121 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -335,7 +335,13 @@ $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); if (! forum_user_can_post_discussion($forum)) { - error("Sorry, but you can not post a new discussion in this forum."); + if (has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) { // User is a guest here! + $SESSION->wantsurl = $FULLME; + $SESSION->enrolcancel = $_SERVER['HTTP_REFERER']; + redirect($CFG->wwwroot.'/course/enrol.php?id='.$course->id, get_string('youneedtoenrol')); + } else { + print_error('nopostforum', 'forum'); + } } if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { diff --git a/mod/forum/subscribe.php b/mod/forum/subscribe.php index 21439127a1..7768f31ea4 100644 --- a/mod/forum/subscribe.php +++ b/mod/forum/subscribe.php @@ -86,15 +86,18 @@ $info->name = fullname($user); $info->forum = format_string($forum->name); - if ( forum_is_subscribed($user->id, $forum->id) ) { - if (forum_unsubscribe($user->id, $forum->id) ) { + if (forum_is_subscribed($user->id, $forum->id)) { + if (forum_unsubscribe($user->id, $forum->id)) { add_to_log($course->id, "forum", "unsubscribe", "view.php?f=$forum->id", $forum->id, $cm->id); redirect($returnto, get_string("nownotsubscribed", "forum", $info), 1); } else { error("Could not unsubscribe you from that forum", $_SERVER["HTTP_REFERER"]); } - } else { // subscribe + } else if (has_capability('moodle/legacy:guest', $context, $user->id, false)) { // Guests can not subscribe + error("Guests can not subscribe to forums", $_SERVER["HTTP_REFERER"]); + + } else { // subscribe if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE && !has_capability('mod/forum:managesubscriptions', $context)) { error(get_string('disallowsubscribe'),$_SERVER["HTTP_REFERER"]); diff --git a/mod/forum/view.php b/mod/forum/view.php index 73a89d99fa..b230929eba 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -153,7 +153,7 @@ } } - if (!empty($USER->id)) { + if (!empty($USER->id) && !has_capability('moodle/legacy:guest', $context, NULL, false)) { echo ''; $SESSION->fromdiscussion = "$FULLME"; if (forum_is_forcesubscribed($forum->id)) {