mod-folder MDL-19799 Added set_url calls, replaced deprecated functions
[moodle.git] / mod / forum / subscribe.php
CommitLineData
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?>