From 2a9f525bcf97510d8aa5064a32f1f35c85471bd5 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Fri, 31 Oct 2014 08:54:02 +0800 Subject: [PATCH] MDL-47390 mod_forum: Correct check for groups when subscribing --- mod/forum/subscribe.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mod/forum/subscribe.php b/mod/forum/subscribe.php index b55616ac8c1..6ae657148cf 100644 --- a/mod/forum/subscribe.php +++ b/mod/forum/subscribe.php @@ -73,7 +73,11 @@ if (isset($cm->groupmode) && empty($course->groupmodeforce)) { } else { $groupmode = $course->groupmode; } -if ($groupmode && !\mod_forum\subscriptions::is_subscribed($user->id, $forum, null, $cm) && !has_capability('moodle/site:accessallgroups', $context)) { + +$issubscribed = \mod_forum\subscriptions::is_subscribed($user->id, $forum, $discussionid, $cm); + +// For a user to subscribe when a groupmode is set, they must have access to at least one group. +if ($groupmode && !$issubscribed && !has_capability('moodle/site:accessallgroups')) { if (!groups_get_all_groups($course->id, $USER->id)) { print_error('cannotsubscribe', 'forum'); } @@ -142,7 +146,7 @@ $info = new stdClass(); $info->name = fullname($user); $info->forum = format_string($forum->name); -if (\mod_forum\subscriptions::is_subscribed($user->id, $forum, $discussionid, $cm)) { +if ($issubscribed) { if (is_null($sesskey)) { // we came here via link in email $PAGE->set_title($course->shortname); $PAGE->set_heading($course->fullname);