Better handling for guest in forums MDL-7125
This commit is contained in:
+8
-2
@@ -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;
|
||||
|
||||
+7
-1
@@ -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)) {
|
||||
|
||||
@@ -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"]);
|
||||
|
||||
+1
-1
@@ -153,7 +153,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
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)) {
|
||||
|
||||
Reference in New Issue
Block a user