]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-10588 - refactor the code for printing the 'subscribe/unsubscribe from this forum...
authortjhunt <tjhunt>
Tue, 24 Jul 2007 17:06:29 +0000 (17:06 +0000)
committertjhunt <tjhunt>
Tue, 24 Jul 2007 17:06:29 +0000 (17:06 +0000)
course/format/social/format.php
mod/forum/index.php
mod/forum/lib.php
mod/forum/view.php

index 1662888d43181fefbeb00369bbe395f1a34576e6..794ed73038ca37cf86f3d6f079a6135bb813fa0e 100644 (file)
     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 {
index c6bf70ca001d4d24115e71dfc12b1318201911e9..068bd218c83ea1fd81ee5026b8b8812555b7c0aa 100644 (file)
                 $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
index 2d1c34965b43dbbbd69973ecd16bb953d6216fdc..e97fc3cecf841c69e1dadb648f693a8a395daf02 100644 (file)
@@ -3214,6 +3214,45 @@ function forum_post_subscription($post) {
     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>';
+    }    
+}
 
 /**
  * 
index 50e8a9c4f1ca25b0712c807d22221bef436671ad..f3ddb46e38bbe8e0cb6657078dceea41a5d993ad 100644 (file)
                 echo '<span class="helplink">'.$streveryonecannowchoose.'</span>';
             }
 
-            if (forum_is_subscribed($USER->id, $forum->id)) {
-                $subtexttitle = get_string("subscribestop", "forum");
-                $subtext = get_string("unsubscribe", "forum");
-            } else {
-                $subtexttitle = get_string("subscribestart", "forum");
-                $subtext = get_string("subscribe", "forum");
-            }
-            echo "<br />";
-            echo "<span class=\"helplink\"><a title=\"$subtexttitle\" href=\"subscribe.php?id=$forum->id\">$subtext</a></span>";
+            echo '<br /><span class="helplink">', forum_get_subscribe_link($forum, $context, 
+                    array('forcesubscribed' => '', 'cantsubscribe' => '')), '</span>';
         }
 
         if (forum_tp_can_track_forums($forum) && ($forum->trackingtype == FORUM_TRACKING_OPTIONAL)) {