diff --git a/mod/forum/lang/en/forum.php b/mod/forum/lang/en/forum.php index 38770ae9405..a653ec382d6 100644 --- a/mod/forum/lang/en/forum.php +++ b/mod/forum/lang/en/forum.php @@ -105,6 +105,8 @@ $string['configshortpost'] = 'Any post under this length (in characters not incl $string['configtrackingtype'] = 'Default setting for read tracking.'; $string['configtrackreadposts'] = 'Set to \'yes\' if you want to track read/unread for each user.'; $string['configusermarksread'] = 'If \'yes\', the user must manually mark a post as read. If \'no\', when the post is viewed it is marked as read.'; +$string['confirmsubscribediscussion'] = 'Do you really want to subscribe to discussion \'{$a->discussion}\' in forum \'{$a->forum}\'?'; +$string['confirmunsubscribediscussion'] = 'Do you really want to unsubscribe from discussion \'{$a->discussion}\' in forum \'{$a->forum}\'?'; $string['confirmsubscribe'] = 'Do you really want to subscribe to forum \'{$a}\'?'; $string['confirmunsubscribe'] = 'Do you really want to unsubscribe from forum \'{$a}\'?'; $string['couldnotadd'] = 'Could not add your post due to an unknown error'; @@ -446,6 +448,7 @@ $string['smallmessage'] = '{$a->user} posted in {$a->forumname}'; $string['startedby'] = 'Started by'; $string['subject'] = 'Subject'; $string['subscribe'] = 'Subscribe to this forum'; +$string['subscribediscussion'] = 'Subscribe to this discussion'; $string['subscribeall'] = 'Subscribe everyone to this forum'; $string['subscribeenrolledonly'] = 'Sorry, only enrolled users are allowed to subscribe to forum post notifications.'; $string['subscribed'] = 'Subscribed'; diff --git a/mod/forum/lib.php b/mod/forum/lib.php index fc81e8757b7..9875ef85417 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -7055,6 +7055,11 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi $PAGE->cm->context = context_module::instance($PAGE->cm->instance); } + $params = $PAGE->url->params(); + if (!empty($params['d'])) { + $discussionid = $params['d']; + } + // for some actions you need to be enrolled, beiing admin is not enough sometimes here $enrolled = is_enrolled($PAGE->cm->context, $USER, '', false); $activeenrolled = is_enrolled($PAGE->cm->context, $USER, '', true); @@ -7110,13 +7115,28 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi } if ($cansubscribe) { - if (\mod_forum\subscriptions::is_subscribed($USER->id, $forumobject)) { + if (\mod_forum\subscriptions::is_subscribed($USER->id, $forumobject, null, $PAGE->cm)) { $linktext = get_string('unsubscribe', 'forum'); } else { $linktext = get_string('subscribe', 'forum'); } $url = new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'sesskey'=>sesskey())); $forumnode->add($linktext, $url, navigation_node::TYPE_SETTING); + + if (isset($discussionid)) { + if (\mod_forum\subscriptions::is_subscribed($USER->id, $forumobject, $discussionid, $PAGE->cm)) { + $linktext = get_string('unsubscribediscussion', 'forum'); + } else { + $linktext = get_string('subscribediscussion', 'forum'); + } + $url = new moodle_url('/mod/forum/subscribe.php', array( + 'id' => $forumobject->id, + 'sesskey' => sesskey(), + 'd' => $discussionid, + 'returnurl' => $PAGE->url->out(), + )); + $forumnode->add($linktext, $url, navigation_node::TYPE_SETTING); + } } if (has_capability('mod/forum:viewsubscribers', $PAGE->cm->context)){