quiz MDL-10128 popup checker no longer requests a non-existent file which was causing...
[moodle.git] / mod / forum / subscribe.php
CommitLineData
cd4e6b17 1<?php
f93f848a 2
3// Subscribe to or unsubscribe from a forum.
4
cd4e6b17 5require_once("../../config.php");
6require_once("lib.php");
7
8$id = required_param('id',PARAM_INT); // The forum to subscribe or unsubscribe to
9$force = optional_param('force','',PARAM_ALPHA); // Force everyone to be subscribed to this forum?
10$user = optional_param('user',0,PARAM_INT);
11
12$url = new moodle_url($CFG->wwwroot.'/mod/forum/subscribe.php', array('id'=>$id));
13if ($force !== '') {
14 $url->param('force', $force);
15}
16if ($user !== 0) {
17 $url->param('user', $user);
18}
19$PAGE->set_url($url);
20
21if (! $forum = $DB->get_record("forum", array("id" => $id))) {
22 print_error('invalidforumid', 'forum');
23}
24
25if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
26 print_error('invalidcoursemodule');
27}
28
29if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
30 $context = get_context_instance(CONTEXT_MODULE, $cm->id);
31} else {
32 $cm->id = 0;
33 $context = get_context_instance(CONTEXT_MODULE, $cm->id);
34}
35
36if ($user) {
37 if (!has_capability('mod/forum:managesubscriptions', $context)) {
38 print_error('nopermissiontosubscribe', 'forum');
f93f848a 39 }
cd4e6b17 40 if (!$user = $DB->get_record("user", array("id" => $user))) {
41 print_error('invaliduserid');
f93f848a 42 }
cd4e6b17 43} else {
44 $user = $USER;
45}
46
47if (isset($cm->groupmode) && empty($course->groupmodeforce)) {
48 $groupmode = $cm->groupmode;
49} else {
50 $groupmode = $course->groupmode;
51}
52if ($groupmode && !forum_is_subscribed($user->id, $forum) && !has_capability('moodle/site:accessallgroups', $context)) {
53 if (!groups_get_all_groups($course->id, $USER->id)) {
54 print_error('cannotsubscribe', 'forum');
ec81373f 55 }
cd4e6b17 56}
ec81373f 57
cd4e6b17 58require_login($course->id, false, $cm);
59
60if (has_capability('moodle/legacy:guest', get_context_instance(CONTEXT_SYSTEM), 0, false)) { // Guests can't subscribe
61 $PAGE->set_title($course->shortname);
62 $PAGE->set_heading($course->fullname);
63 echo $OUTPUT->header();
64 echo $OUTPUT->confirm(get_string('noguestsubscribe', 'forum').'<br /><br />'.get_string('liketologin'),
65 get_login_url(), new moodle_url());
66 echo $OUTPUT->footer();
67 exit;
68}
69
70$returnto = optional_param('backtoindex',0,PARAM_INT)
71 ? "index.php?id=".$course->id
72 : "view.php?f=$id";
73
74if ($force and has_capability('mod/forum:managesubscriptions', $context)) {
75 if (forum_is_forcesubscribed($forum)) {
76 forum_forcesubscribe($forum->id, 0);
77 redirect($returnto, get_string("everyonecannowchoose", "forum"), 1);
3bc9bf97 78 } else {
cd4e6b17 79 forum_forcesubscribe($forum->id, 1);
80 redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
3bc9bf97 81 }
cd4e6b17 82}
3bc9bf97 83
cd4e6b17 84if (forum_is_forcesubscribed($forum)) {
85 redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
86}
818c1b05 87
cd4e6b17 88$info->name = fullname($user);
89$info->forum = format_string($forum->name);
ec81373f 90
cd4e6b17 91if (forum_is_subscribed($user->id, $forum->id)) {
92 if (forum_unsubscribe($user->id, $forum->id)) {
93 add_to_log($course->id, "forum", "unsubscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
94 redirect($returnto, get_string("nownotsubscribed", "forum", $info), 1);
95 } else {
96 print_error('cannotunsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
f93f848a 97 }
98
cd4e6b17 99} else { // subscribe
100 if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE &&
101 !has_capability('mod/forum:managesubscriptions', $context)) {
102 print_error('disallowsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
501cdbd8 103 }
cd4e6b17 104 if (!has_capability('mod/forum:viewdiscussion', $context)) {
105 print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
501cdbd8 106 }
cd4e6b17 107 if (forum_subscribe($user->id, $forum->id) ) {
108 add_to_log($course->id, "forum", "subscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
109 redirect($returnto, get_string("nowsubscribed", "forum", $info), 1);
110 } else {
111 print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
f93f848a 112 }
cd4e6b17 113}
f93f848a 114