diff --git a/mod/forum/lang/en/forum.php b/mod/forum/lang/en/forum.php
index 4ef1c54dbab..90b5e3fdd56 100644
--- a/mod/forum/lang/en/forum.php
+++ b/mod/forum/lang/en/forum.php
@@ -489,6 +489,7 @@ $string['unreadposts'] = 'Unread posts';
$string['unreadpostsnumber'] = '{$a} unread posts';
$string['unreadpostsone'] = '1 unread post';
$string['unsubscribe'] = 'Unsubscribe from this forum';
+$string['unsubscribediscussion'] = 'Unsubscribe from this discussion';
$string['unsubscribeall'] = 'Unsubscribe from all forums';
$string['unsubscribeallconfirm'] = 'You are subscribed to {$a} forums now. Do you really want to unsubscribe from all forums and disable forum auto-subscribe?';
$string['unsubscribealldone'] = 'All optional forum subscriptions were removed. You will still receive notifications from forums with forced subscription. To manage forum notifications go to Messaging in My Profile Settings.';
diff --git a/mod/forum/lib.php b/mod/forum/lib.php
index 1ecd6c33623..77d3de0b71f 100644
--- a/mod/forum/lib.php
+++ b/mod/forum/lib.php
@@ -1175,7 +1175,7 @@ function forum_make_mail_text($course, $cm, $forum, $discussion, $post, $userfro
$strforums = get_string('forums', 'forum');
- $canunsubscribe = ! \mod_forum\subscriptions::is_forcesubscribed($forum);
+ $canunsubscribe = !\mod_forum\subscriptions::is_forcesubscribed($forum);
$posttext = '';
@@ -1204,15 +1204,25 @@ function forum_make_mail_text($course, $cm, $forum, $discussion, $post, $userfro
$posttext .= "\n\n";
$posttext .= forum_print_attachments($post, $cm, "text");
- if (!$bare && $canreply) {
- $posttext .= "---------------------------------------------------------------------\n";
- $posttext .= get_string("postmailinfo", "forum", $shortname)."\n";
- $posttext .= "$CFG->wwwroot/mod/forum/post.php?reply=$post->id\n";
- }
- if (!$bare && $canunsubscribe) {
- $posttext .= "\n---------------------------------------------------------------------\n";
- $posttext .= get_string("unsubscribe", "forum");
- $posttext .= ": $CFG->wwwroot/mod/forum/subscribe.php?id=$forum->id\n";
+ if (!$bare) {
+ if ($canreply) {
+ $posttext .= "---------------------------------------------------------------------\n";
+ $posttext .= get_string("postmailinfo", "forum", $shortname)."\n";
+ $posttext .= "$CFG->wwwroot/mod/forum/post.php?reply=$post->id\n";
+ }
+
+ if ($canunsubscribe) {
+ if (\mod_forum\subscriptions::is_subscribed($userto->id, $forum, null, $cm)) {
+ // If subscribed to this forum, offer the unsubscribe link.
+ $posttext .= "\n---------------------------------------------------------------------\n";
+ $posttext .= get_string("unsubscribe", "forum");
+ $posttext .= ": $CFG->wwwroot/mod/forum/subscribe.php?id=$forum->id\n";
+ }
+ // Always offer the unsubscribe from discussion link.
+ $posttext .= "\n---------------------------------------------------------------------\n";
+ $posttext .= get_string("unsubscribediscussion", "forum");
+ $posttext .= ": $CFG->wwwroot/mod/forum/subscribe.php?d=$discussion->id\n";
+ }
}
$posttext .= "\n---------------------------------------------------------------------\n";
@@ -1283,7 +1293,15 @@ function forum_make_mail_html($course, $cm, $forum, $discussion, $post, $userfro
$footerlinks = array();
if ($canunsubscribe) {
- $footerlinks[] = '' . get_string('unsubscribe', 'forum') . '';
+ if (\mod_forum\subscriptions::is_subscribed($userto->id, $forum, null, $cm)) {
+ // If subscribed to this forum, offer the unsubscribe link.
+ $unsublink = new moodle_url('/mod/forum/subscribe.php', array('id' => $forum->id));
+ $footerlinks[] = html_writer::link($unsublink, get_string('unsubscribe', 'mod_forum'));
+ }
+ // Always offer the unsubscribe from discussion link.
+ $unsublink = new moodle_url('/mod/forum/subscribe.php', array('d' => $discussion->id));
+ $footerlinks[] = html_writer::link($unsublink, get_string('unsubscribediscussion', 'mod_forum'));
+
$footerlinks[] = '' . get_string('unsubscribeall', 'forum') . '';
}
$footerlinks[] = "" . get_string('digestmailpost', 'forum') . '';