From e084b2f98bfe2bf5c3ca54a36e733597382dc6b8 Mon Sep 17 00:00:00 2001 From: moodler Date: Sun, 3 Sep 2006 08:01:48 +0000 Subject: [PATCH] Replaced forum_get_user() with forum_add_user_default_subscriptions() --- mod/forum/lib.php | 54 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 7fa52e17c5..3570396c9e 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -3508,10 +3508,10 @@ function forum_update_subscriptions_button($courseid, $forumid) { global $CFG, $USER; if (!empty($USER->subscriptionsediting)) { - $string = get_string("turneditingoff"); + $string = get_string('turneditingoff'); $edit = "off"; } else { - $string = get_string("turneditingon"); + $string = get_string('turneditingon'); $edit = "on"; } return "
framename\" method=\"get\" action=\"$CFG->wwwroot/mod/forum/subscribers.php\">". @@ -3520,19 +3520,47 @@ function forum_update_subscriptions_button($courseid, $forumid) { "
"; } -function forum_add_user($userid, $courseid) { +function forum_add_user_default_subscriptions($userid, $context) { /// Add subscriptions for new users - if ($forums = get_records_select('forum', "course = '$courseid' AND forcesubscribe = '".FORUM_INITIALSUBSCRIBE."'")) { - foreach ($forums as $forum) { - if ($cm = get_coursemodule_from_id('forum', $forum->id)) { // TODO: get this data in the above query - if ($context = get_context_instance(CONTEXT_MODULE, $cm->id)) { - if (has_capability('mod/forum:viewforum', $context)) { - forum_subscribe($userid, $forum->id); - } - } - } - } + + if (empty($context->aggregatelevel)) { + return false; } + + switch ($context->aggregatelevel) { + + 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) { + if ($forum->forcesubscribe != FORUM_INITIALSUBSCRIBE) { + continue; + } + if ($modcontext = get_context_instance(CONTEXT_MODULE, $forum->coursemodule)) { + if (has_capability('mod/forum:viewdiscussion', $modcontext, $userid)) { + forum_subscribe($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)) { + if ($forum->forcesubscribe != FORUM_INITIALSUBSCRIBE) { + continue; + } + if (has_capability('mod/forum:viewdiscussion', $context, $userid)) { + forum_subscribe($userid, $forum->id); + } + } + } + break; + } + + return true; } /// Functions to do with read tracking. -- 2.39.5