]> git.mjollnir.org Git - moodle.git/commitdiff
Better handling for guest in forums MDL-7125
authormoodler <moodler>
Mon, 23 Oct 2006 04:55:20 +0000 (04:55 +0000)
committermoodler <moodler>
Mon, 23 Oct 2006 04:55:20 +0000 (04:55 +0000)
mod/forum/lib.php
mod/forum/post.php
mod/forum/subscribe.php
mod/forum/view.php

index fe4155359a34d460ac84426bae87dfd88c0e1654..cb65d62c292973f8ad177a977be2a7e8b8b0f831 100644 (file)
@@ -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;
index b5e86fb8cc67e412e63beb5b3abf465e11957565..c11e6b6121cbe39474001bbd4987306d8ca866ae 100644 (file)
         $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)) {
index 21439127a1c75b70cd632382594b85fdde4036a8..7768f31ea4250d963d967baf6e4ad7aa65b45684 100644 (file)
     $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"]);
index 73a89d99fab19eb3302d29ff86f6f2c20c351d69..b230929ebadcab8e2136b837a9a09052774acb2a 100644 (file)
         }
     }
 
-    if (!empty($USER->id)) {
+    if (!empty($USER->id) && !has_capability('moodle/legacy:guest', $context, NULL, false)) {
         echo '<td align="right" class="subscription">';
         $SESSION->fromdiscussion = "$FULLME";
         if (forum_is_forcesubscribed($forum->id)) {