echo '<a name="startofcontent"></a>';
if ($forum = forum_get_course_forum($course->id, 'social')) {
print_heading_block(get_string('socialheadline'));
- if (forum_is_forcesubscribed($forum->id)) {
- echo '<div class="subscribelink">'.get_string('everyoneissubscribed', 'forum').'</div>';
- } else if (forum_is_subscribed($USER->id, $forum->id)) {
- echo '<div class="subscribelink"><a href="../mod/forum/subscribe.php?id='.$forum->id.'">'.get_string('unsubscribe', 'forum').'</a></div>';
- } else {
- echo '<div class="subscribelink"><a href="../mod/forum/subscribe.php?id='.$forum->id.'">'.get_string('subscribe', 'forum').'</a></div>';
- }
-
+ $context = get_context_instance(CONTEXT_MODULE, get_coursemodule_from_instance('forum', $forum->id));
+ echo '<div class="subscribelink">', forum_get_subscribe_link($forum, $context), '</div>';
forum_print_latest_discussions($course, $forum, 10, 'plain', '', false);
} else {
$groupmode = NOGROUPS;
}
+ $cantaccessagroup = $groupmode and !has_capability('moodle/site:accessallgroups', $context) and !mygroupid($course->id);
// this is potentially wrong logic. could possibly check for if user has the right to hmmm
if ($groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $context)) {
$introoptions->para=false;
$forum->intro = shorten_text(trim(format_text($forum->intro, FORMAT_HTML, $introoptions)), $CFG->forum_shortpost);
- if ($forum->visible) {
- $forumlink = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
- $discussionlink = "<a href=\"view.php?f=$forum->id\">".$count."</a>";
+ $forumname = format_string($forum->name,true);;
+ if ($cantaccessagroup) {
+ $forumlink = $forumname;
+ $discussionlink = $count;
} else {
- $forumlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
- $discussionlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">".$count."</a>";
+ if ($forum->visible) {
+ $style = '';
+ } else {
+ $style = 'class="dimmed"';
+ }
+ $forumlink = "<a href=\"view.php?f=$forum->id\" $style>".format_string($forum->name,true)."</a>";
+ $discussionlink = "<a href=\"view.php?f=$forum->id\" $style>".$count."</a>";
}
$row = array ($forumlink, $forum->intro, $discussionlink);
}
if ($can_subscribe) {
- if (forum_is_forcesubscribed($forum->id)) {
- $sublink = $stryes;
- } else {
- if ($groupmode and !has_capability('moodle/site:accessallgroups', $context) and !mygroupid($course->id)) {
- $sublink = $strno; // Can't subscribe to a group forum (not in a group)
- $forumlink = format_string($forum->name,true);
- } else {
- if (forum_is_subscribed($USER->id, $forum->id)) {
- $subscribed = $stryes;
- $subtitle = get_string("unsubscribe", "forum");
- } else {
- $subscribed = $strno;
- $subtitle = get_string("subscribe", "forum");
- }
- if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE
- && !has_capability('mod/forum:managesubscriptions', $context)) {
- $sublink = '-';
- } else {
- $sublink = "<a title=\"$subtitle\" href=\"subscribe.php?id=$forum->id\">$subscribed</a>";
- }
- }
- }
- $row[] = $sublink;
+ $row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
+ 'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
+ 'cantsubscribe' => '-'), $cantaccessagroup);
}
//If this forum has RSS activated, calculate it
$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ $cantaccessagroup = $groupmode and !has_capability('moodle/site:accessallgroups', $context) and !mygroupid($course->id);
+
if ($groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $context)) {
$count = count_records("forum_discussions", "forum", "$forum->id", "groupid", $currentgroup);
} else {
$printsection = "";
}
- if ($forum->visible) {
- $forumlink = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
- $discussionlink = "<a href=\"view.php?f=$forum->id\">".$count."</a>";
+ $forumname = format_string($forum->name,true);;
+ if ($cantaccessagroup && $groupmode == SEPARATEGROUPS) {
+ $forumlink = $forumname;
+ $discussionlink = $count;
} else {
- $forumlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
- $discussionlink = "<a class=\"dimmed\" href=\"view.php?f=$forum->id\">".$count."</a>";
+ if ($forum->visible) {
+ $style = '';
+ } else {
+ $style = 'class="dimmed"';
+ }
+ $forumlink = "<a href=\"view.php?f=$forum->id\" $style>".format_string($forum->name,true)."</a>";
+ $discussionlink = "<a href=\"view.php?f=$forum->id\" $style>".$count."</a>";
}
$row = array ($printsection, $forumlink, $forum->intro, $discussionlink);
}
if ($can_subscribe) {
- if (forum_is_forcesubscribed($forum->id)) {
- $sublink = $stryes;
- } else {
- if ($groupmode and !has_capability('moodle/site:accessallgroups', $context)
- and !mygroupid($course->id)) {
- $sublink = $strno; // Can't subscribe to a group forum (not in a group)
- if ($groupmode == SEPARATEGROUPS) {
- $forumlink = format_string($forum->name,true);
- }
- } else {
- if (forum_is_subscribed($USER->id, $forum->id)) {
- $subscribed = $stryes;
- $subtitle = $strunsubscribe;
- } else {
- $subscribed = $strno;
- $subtitle = $strsubscribe;
- }
- $sublink = "<a title=\"$subtitle\" href=\"subscribe.php?id=$forum->id\">$subscribed</a>";
- }
- }
- $row[] = $sublink;
+ $row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
+ 'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
+ 'cantsubscribe' => '-'), $cantaccessagroup);
}
//If this forum has RSS activated, calculate it
return "<p>".get_string("nownotsubscribed", "forum", $info)."</p>";
}
+/**
+ * Generate and return the subscribe or unsubscribe link for a forum.
+ * @param object $forum the forum. Fields used are $forum->id and $forum->forcesubscribe.
+ * @param object $context the context object for this forum.
+ * @param array $messages text used for the link in its various states
+ * (subscribed, unsubscribed, forcesubscribed or cantsubscribe).
+ * Any strings not passed in are taken from the $defaultmessages array
+ * at the top of the function.
+ * @param
+ */
+function forum_get_subscribe_link($forum, $context, $messages = array(), $cantaccessagroup = false) {
+ global $CFG, $USER;
+ $defaultmessages = array(
+ 'subscribed' => get_string('unsubscribe', 'forum'),
+ 'unsubscribed' => get_string('subscribe', 'forum'),
+ 'cantaccessgroup' => get_string('no'),
+ 'forcesubscribed' => get_string('everyoneissubscribed', 'forum'),
+ 'cantsubscribe' => get_string('disallowsubscribe','forum')
+ );
+ $messages = $messages + $defaultmessages;
+
+ if (forum_is_forcesubscribed($forum->id)) {
+ return $messages['forcesubscribed'];
+ } else if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE && !has_capability('mod/forum:managesubscriptions', $context)) {
+ return $messages['cantsubscribe'];
+ } else if ($cantaccessagroup) {
+ return $messages['cantaccessgroup'];
+ } else {
+ if (forum_is_subscribed($USER->id, $forum->id)) {
+ $linktext = $messages['subscribed'];
+ $linktitle = get_string('subscribestopt', 'forum');
+ } else {
+ $linktext = $messages['unsubscribed'];
+ $linktitle = get_string('subscribestart', 'forum');
+ }
+ return '<a title="' . $linktitle . '" href="' . $CFG->wwwroot .
+ '/mod/forum/subscribe.php?id=' . $forum->id . '">' . $linktext . '</a>';
+ }
+}
/**
*