41905731 |
1 | <?php // $Id$ |
f93f848a |
2 | |
3 | // Subscribe to or unsubscribe from a forum. |
4 | |
b0e3a925 |
5 | require_once("../../config.php"); |
6 | require_once("lib.php"); |
f93f848a |
7 | |
0c0849cf |
8 | $id = required_param('id',PARAM_INT); // The forum to subscribe or unsubscribe to |
70e3da07 |
9 | $force = optional_param('force','',PARAM_ALPHA); // Force everyone to be subscribed to this forum? |
10 | $user = optional_param('user',0,PARAM_INT); |
f93f848a |
11 | |
4e445355 |
12 | if (! $forum = $DB->get_record("forum", array("id" => $id))) { |
dde78cb8 |
13 | print_error('invalidforumid', 'forum'); |
f93f848a |
14 | } |
15 | |
4e445355 |
16 | if (! $course = $DB->get_record("course", array("id" => $forum->course))) { |
dde78cb8 |
17 | print_error('invalidcoursemodule'); |
f93f848a |
18 | } |
19 | |
ec81373f |
20 | if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { |
bbbf2d40 |
21 | $context = get_context_instance(CONTEXT_MODULE, $cm->id); |
ec81373f |
22 | } else { |
67bbc9b7 |
23 | $cm->id = 0; |
bbbf2d40 |
24 | $context = get_context_instance(CONTEXT_MODULE, $cm->id); |
ec81373f |
25 | } |
26 | |
3bc9bf97 |
27 | if ($user) { |
0468976c |
28 | if (!has_capability('mod/forum:managesubscriptions', $context)) { |
dde78cb8 |
29 | print_error('nopermissiontosubscribe', 'forum'); |
3bc9bf97 |
30 | } |
4e445355 |
31 | if (!$user = $DB->get_record("user", array("id" => $user))) { |
dde78cb8 |
32 | print_error('invaliduserid'); |
3bc9bf97 |
33 | } |
34 | } else { |
35 | $user = $USER; |
36 | } |
37 | |
818c1b05 |
38 | if (groupmode($course, $cm) |
90f4745c |
39 | and !forum_is_subscribed($user->id, $forum) |
818c1b05 |
40 | and !has_capability('moodle/site:accessallgroups', $context)) { |
35987665 |
41 | if (!groups_get_all_groups($course->id, $USER->id)) { |
dde78cb8 |
42 | print_error('cannotsubscribe', 'forum'); |
818c1b05 |
43 | } |
44 | } |
45 | |
4bb36a97 |
46 | require_login($course->id, false, $cm); |
ec81373f |
47 | |
c9b8eb34 |
48 | if (isguest()) { // Guests can't subscribe |
15ca5e5e |
49 | $PAGE->set_title($course->shortname); |
50 | $PAGE->set_heading($course->fullname); |
51 | echo $OUTPUT->header(); |
59e28d8f |
52 | echo $OUTPUT->confirm(get_string('noguestsubscribe', 'forum').'<br /><br />'.get_string('liketologin'), |
53 | get_login_url(), new moodle_url()); |
396fb912 |
54 | echo $OUTPUT->footer(); |
c9b8eb34 |
55 | exit; |
f93f848a |
56 | } |
57 | |
4e445355 |
58 | $returnto = optional_param('backtoindex',0,PARAM_INT) |
59 | ? "index.php?id=".$course->id |
52ca1e73 |
60 | : "view.php?f=$id"; |
f93f848a |
61 | |
0468976c |
62 | if ($force and has_capability('mod/forum:managesubscriptions', $context)) { |
90f4745c |
63 | if (forum_is_forcesubscribed($forum)) { |
501cdbd8 |
64 | forum_forcesubscribe($forum->id, 0); |
cdfe4875 |
65 | redirect($returnto, get_string("everyonecannowchoose", "forum"), 1); |
501cdbd8 |
66 | } else { |
67 | forum_forcesubscribe($forum->id, 1); |
cdfe4875 |
68 | redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1); |
501cdbd8 |
69 | } |
70 | } |
71 | |
90f4745c |
72 | if (forum_is_forcesubscribed($forum)) { |
cdfe4875 |
73 | redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1); |
501cdbd8 |
74 | } |
75 | |
d3126202 |
76 | $info->name = fullname($user); |
3849dae8 |
77 | $info->forum = format_string($forum->name); |
3bc9bf97 |
78 | |
a321d42b |
79 | if (forum_is_subscribed($user->id, $forum->id)) { |
80 | if (forum_unsubscribe($user->id, $forum->id)) { |
69d79bc3 |
81 | add_to_log($course->id, "forum", "unsubscribe", "view.php?f=$forum->id", $forum->id, $cm->id); |
3bc9bf97 |
82 | redirect($returnto, get_string("nownotsubscribed", "forum", $info), 1); |
f93f848a |
83 | } else { |
dde78cb8 |
84 | print_error('cannotunsubscribe', 'forum', $_SERVER["HTTP_REFERER"]); |
f93f848a |
85 | } |
ec81373f |
86 | |
a321d42b |
87 | } else { // subscribe |
bbbf2d40 |
88 | if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE && |
0468976c |
89 | !has_capability('mod/forum:managesubscriptions', $context)) { |
5a2a5331 |
90 | print_error('disallowsubscribe', 'forum', $_SERVER["HTTP_REFERER"]); |
098d27d4 |
91 | } |
01cbbbd7 |
92 | if (!has_capability('mod/forum:viewdiscussion', $context)) { |
dde78cb8 |
93 | print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]); |
01cbbbd7 |
94 | } |
3bc9bf97 |
95 | if (forum_subscribe($user->id, $forum->id) ) { |
69d79bc3 |
96 | add_to_log($course->id, "forum", "subscribe", "view.php?f=$forum->id", $forum->id, $cm->id); |
3bc9bf97 |
97 | redirect($returnto, get_string("nowsubscribed", "forum", $info), 1); |
f93f848a |
98 | } else { |
dde78cb8 |
99 | print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]); |
f93f848a |
100 | } |
101 | } |
102 | |
103 | ?> |