Expanded forum_add_user_default_subscriptions() for more contexts

Added    forum_remove_user_subscriptions()
This commit is contained in:
moodler 2006-09-13 06:40:30 +00:00
parent d74067e8e7
commit 8d630fda5a

View 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) {