]> git.mjollnir.org Git - moodle.git/commitdiff
Expanded forum_add_user_default_subscriptions() for more contexts
authormoodler <moodler>
Wed, 13 Sep 2006 06:40:30 +0000 (06:40 +0000)
committermoodler <moodler>
Wed, 13 Sep 2006 06:40:30 +0000 (06:40 +0000)
Added    forum_remove_user_subscriptions()

mod/forum/lib.php

index 694c64a07a1e707783bce2a8aab7ea23858c5ea6..a38259d8114491b6ec45eac350102abae66f5dcc 100644 (file)
@@ -3530,6 +3530,31 @@ function forum_add_user_default_subscriptions($userid, $context) {
 
     switch ($context->aggregatelevel) {
 
+        case CONTEXT_SYSTEM:   // For the whole site
+             if ($courses = get_record('course')) {
+                 foreach ($courses as $course) {
+                     $subcontext = get_context_instance(CONTEXT_COURSE, $course->id);
+                     forum_add_user_default_subscriptions($userid, $subcontext);
+                 }
+             }
+             break;
+
+        case CONTEXT_CATEGORY:   // For a whole category
+             if ($courses = get_record('course', 'category', $context->instanceid)) {
+                 foreach ($courses as $course) {
+                     $subcontext = get_context_instance(CONTEXT_COURSE, $course->id);
+                     forum_add_user_default_subscriptions($userid, $subcontext);
+                 }
+             }
+             if ($categories = get_record('course_categories', 'parent', $context->instanceid)) {
+                 foreach ($categories as $category) {
+                     $subcontext = get_context_instance(CONTEXT_CATEGORY, $category->id);
+                     forum_add_user_default_subscriptions($userid, $subcontext);
+                 }
+             }
+             break;
+    
+
         case CONTEXT_COURSE:   // For a whole course
              if ($course = get_record('course', 'id', $context->instanceid)) {
                  if ($forums = get_all_instances_in_course('forum', $course)) {
@@ -3564,6 +3589,62 @@ function forum_add_user_default_subscriptions($userid, $context) {
     return true;
 }
 
+
+function forum_remove_user_subscriptions($userid, $context) {
+/// Remove subscriptions for a user in a context
+
+    if (empty($context->aggregatelevel)) {
+        return false;
+    }
+
+    switch ($context->aggregatelevel) {
+
+        case CONTEXT_SYSTEM:   // For the whole site
+             if ($courses = get_record('course')) {
+                 foreach ($courses as $course) {
+                     $subcontext = get_context_instance(CONTEXT_COURSE, $course->id);
+                     forum_remove_user_subscriptions($userid, $subcontext);
+                 }
+             }
+             break;
+
+        case CONTEXT_CATEGORY:   // For a whole category
+             if ($courses = get_record('course', 'category', $context->instanceid)) {
+                 foreach ($courses as $course) {
+                     $subcontext = get_context_instance(CONTEXT_COURSE, $course->id);
+                     forum_remove_user_subscriptions($userid, $subcontext);
+                 }
+             }
+             if ($categories = get_record('course_categories', 'parent', $context->instanceid)) {
+                 foreach ($categories as $category) {
+                     $subcontext = get_context_instance(CONTEXT_CATEGORY, $category->id);
+                     forum_remove_user_subscriptions($userid, $subcontext);
+                 }
+             }
+             break;
+
+        case CONTEXT_COURSE:   // For a whole course
+             if ($course = get_record('course', 'id', $context->instanceid)) {
+                 if ($forums = get_all_instances_in_course('forum', $course)) {
+                     foreach ($forums as $forum) {
+                         forum_unsubscribe($userid, $forum->id);
+                     }
+                 }
+             }
+             break;
+         
+        case CONTEXT_MODULE:   // Just one forum
+             if ($cm = get_coursemodule_from_id('forum', $context->instanceid)) {
+                 if ($forum = get_record('forum', 'id', $cm->instance)) { 
+                     forum_unsubscribe($userid, $forum->id);
+                 }
+             }
+             break;
+    }
+
+    return true;
+}
+
 /// Functions to do with read tracking.
 
 function forum_tp_add_read_record($userid, $postid, $discussionid=-1, $forumid=-1) {