if (empty($PAGE->cm->context)) {
$PAGE->cm->context = get_context_instance(CONTEXT_MODULE, $PAGE->cm->instance);
}
- if (is_enrolled($PAGE->cm->context)) { // means enrolled users only
- $notenode = false;
- $helpbutton = false;
-
- $canmanage = has_capability('mod/forum:managesubscriptions', $PAGE->cm->context);
- $subscriptionmode = forum_get_forcesubscribed($forumobject);
- $cansubscribe = ($subscriptionmode != FORUM_FORCESUBSCRIBE && ($subscriptionmode != FORUM_DISALLOWSUBSCRIBE || $canmanage));
-
- if ($canmanage) {
- $mode = $forumnode->add(get_string('subscriptionmode', 'forum'), null, navigation_node::TYPE_CONTAINER);
-
- $allowchoice = $mode->add(get_string('subscriptionoptional', 'forum'), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'0')), navigation_node::TYPE_SETTING);
- $forceforever = $mode->add(get_string("subscriptionforced", "forum"), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'1')), navigation_node::TYPE_SETTING);
- $forceinitially = $mode->add(get_string("subscriptionauto", "forum"), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'2')), navigation_node::TYPE_SETTING);
- $disallowchoice = $mode->add(get_string('subscriptiondisabled', 'forum'), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'3')), navigation_node::TYPE_SETTING);
-
- switch ($subscriptionmode) {
- case FORUM_CHOOSESUBSCRIBE : // 0
- $allowchoice->action = null;
- $allowchoice->add_class('activesetting');
- break;
- case FORUM_FORCESUBSCRIBE : // 1
- $forceforever->action = null;
- $forceforever->add_class('activesetting');
- break;
- case FORUM_INITIALSUBSCRIBE : // 2
- $forceinitially->action = null;
- $forceinitially->add_class('activesetting');
- break;
- case FORUM_DISALLOWSUBSCRIBE : // 3
- $disallowchoice->action = null;
- $disallowchoice->add_class('activesetting');
- break;
- }
- } else {
+ // for some actions you need to be enrolled, beiing admin is not enough sometimes here
+ $enrolled = is_enrolled($PAGE->cm->context);
- switch ($subscriptionmode) {
- case FORUM_CHOOSESUBSCRIBE : // 0
- $notenode = $forumnode->add(get_string('subscriptionoptional', 'forum'));
- break;
- case FORUM_FORCESUBSCRIBE : // 1
- $notenode = $forumnode->add(get_string('subscriptionforced', 'forum'));
- break;
- case FORUM_INITIALSUBSCRIBE : // 2
- $notenode = $forumnode->add(get_string('subscriptionauto', 'forum'));
- break;
- case FORUM_DISALLOWSUBSCRIBE : // 3
- $notenode = $forumnode->add(get_string('subscriptiondisabled', 'forum'));
- break;
- }
+ $canmanage = has_capability('mod/forum:managesubscriptions', $PAGE->cm->context);
+ $subscriptionmode = forum_get_forcesubscribed($forumobject);
+ $cansubscribe = ($enrolled &&($subscriptionmode != FORUM_FORCESUBSCRIBE && ($subscriptionmode != FORUM_DISALLOWSUBSCRIBE || $canmanage)));
+
+ if ($canmanage) {
+ $mode = $forumnode->add(get_string('subscriptionmode', 'forum'), null, navigation_node::TYPE_CONTAINER);
+
+ $allowchoice = $mode->add(get_string('subscriptionoptional', 'forum'), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'0')), navigation_node::TYPE_SETTING);
+ $forceforever = $mode->add(get_string("subscriptionforced", "forum"), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'1')), navigation_node::TYPE_SETTING);
+ $forceinitially = $mode->add(get_string("subscriptionauto", "forum"), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'2')), navigation_node::TYPE_SETTING);
+ $disallowchoice = $mode->add(get_string('subscriptiondisabled', 'forum'), new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'mode'=>'3')), navigation_node::TYPE_SETTING);
+
+ switch ($subscriptionmode) {
+ case FORUM_CHOOSESUBSCRIBE : // 0
+ $allowchoice->action = null;
+ $allowchoice->add_class('activesetting');
+ break;
+ case FORUM_FORCESUBSCRIBE : // 1
+ $forceforever->action = null;
+ $forceforever->add_class('activesetting');
+ break;
+ case FORUM_INITIALSUBSCRIBE : // 2
+ $forceinitially->action = null;
+ $forceinitially->add_class('activesetting');
+ break;
+ case FORUM_DISALLOWSUBSCRIBE : // 3
+ $disallowchoice->action = null;
+ $disallowchoice->add_class('activesetting');
+ break;
}
- if ($cansubscribe) {
- if (forum_is_subscribed($USER->id, $forumobject)) {
- $linktext = get_string('unsubscribe', 'forum');
- } else {
- $linktext = get_string('subscribe', 'forum');
- }
- $url = new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id));
- $forumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
+ } else if ($enrolled) {
+
+ switch ($subscriptionmode) {
+ case FORUM_CHOOSESUBSCRIBE : // 0
+ $notenode = $forumnode->add(get_string('subscriptionoptional', 'forum'));
+ break;
+ case FORUM_FORCESUBSCRIBE : // 1
+ $notenode = $forumnode->add(get_string('subscriptionforced', 'forum'));
+ break;
+ case FORUM_INITIALSUBSCRIBE : // 2
+ $notenode = $forumnode->add(get_string('subscriptionauto', 'forum'));
+ break;
+ case FORUM_DISALLOWSUBSCRIBE : // 3
+ $notenode = $forumnode->add(get_string('subscriptiondisabled', 'forum'));
+ break;
}
+ }
- if (has_capability('mod/forum:viewsubscribers', $PAGE->cm->context)){
- $url = new moodle_url('/mod/forum/subscribers.php', array('id'=>$forumobject->id));
- $forumnode->add(get_string('showsubscribers', 'forum'), $url, navigation_node::TYPE_SETTING);
+ if ($cansubscribe) {
+ if (forum_is_subscribed($USER->id, $forumobject)) {
+ $linktext = get_string('unsubscribe', 'forum');
+ } else {
+ $linktext = get_string('subscribe', 'forum');
}
+ $url = new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id));
+ $forumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
+ }
- if (forum_tp_can_track_forums($forumobject)) {
- if (forum_tp_is_tracked($forumobject)) {
- $linktext = get_string('notrackforum', 'forum');
- } else {
- $linktext = get_string('trackforum', 'forum');
- }
- $url = new moodle_url('/mod/forum/settracking.php', array('id'=>$forumobject->id));
- $forumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
+ if (has_capability('mod/forum:viewsubscribers', $PAGE->cm->context)){
+ $url = new moodle_url('/mod/forum/subscribers.php', array('id'=>$forumobject->id));
+ $forumnode->add(get_string('showsubscribers', 'forum'), $url, navigation_node::TYPE_SETTING);
+ }
+
+ if ($enrolled && forum_tp_can_track_forums($forumobject)) {
+ if (forum_tp_is_tracked($forumobject)) {
+ $linktext = get_string('notrackforum', 'forum');
+ } else {
+ $linktext = get_string('trackforum', 'forum');
}
+ $url = new moodle_url('/mod/forum/settracking.php', array('id'=>$forumobject->id));
+ $forumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
}
- if (!empty($CFG->enablerssfeeds) && !empty($CFG->forum_enablerssfeeds) && $forumobject->rsstype && $forumobject->rssarticles) {
+ if ($enrolled && !empty($CFG->enablerssfeeds) && !empty($CFG->forum_enablerssfeeds) && $forumobject->rsstype && $forumobject->rssarticles) {
if (!function_exists('rss_get_url')) {
require_once("$CFG->libdir/rsslib.php");