MDL-47390 mod_forum: Correct check for groups when subscribing

This commit is contained in:
Andrew Nicols 2014-10-31 08:54:02 +08:00
parent 4e3af3cf42
commit 2a9f525bcf

View File

@ -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);