Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/mod/forum/subscribe.php
Go to the documentation of this file.
00001 <?php
00002 
00003 // This file is part of Moodle - http://moodle.org/
00004 //
00005 // Moodle is free software: you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation, either version 3 of the License, or
00008 // (at your option) any later version.
00009 //
00010 // Moodle is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
00017 
00035 require_once(dirname(dirname(dirname(__FILE__))).'/config.php');
00036 require_once($CFG->dirroot.'/mod/forum/lib.php');
00037 
00038 $id      = required_param('id', PARAM_INT);             // the forum to subscribe or unsubscribe to
00039 $mode    = optional_param('mode', null, PARAM_INT);     // the forum's subscription mode
00040 $user    = optional_param('user', 0, PARAM_INT);        // userid of the user to subscribe, defaults to $USER
00041 $sesskey = optional_param('sesskey', null, PARAM_RAW);  // sesskey
00042 
00043 $url = new moodle_url('/mod/forum/subscribe.php', array('id'=>$id));
00044 if (!is_null($mode)) {
00045     $url->param('mode', $mode);
00046 }
00047 if ($user !== 0) {
00048     $url->param('user', $user);
00049 }
00050 if (!is_null($sesskey)) {
00051     $url->param('sesskey', $sesskey);
00052 }
00053 $PAGE->set_url($url);
00054 
00055 $forum   = $DB->get_record('forum', array('id' => $id), '*', MUST_EXIST);
00056 $course  = $DB->get_record('course', array('id' => $forum->course), '*', MUST_EXIST);
00057 $cm      = get_coursemodule_from_instance('forum', $forum->id, $course->id, false, MUST_EXIST);
00058 $context = get_context_instance(CONTEXT_MODULE, $cm->id);
00059 
00060 if ($user) {
00061     require_sesskey();
00062     if (!has_capability('mod/forum:managesubscriptions', $context)) {
00063         print_error('nopermissiontosubscribe', 'forum');
00064     }
00065     $user = $DB->get_record('user', array('id' => $user), MUST_EXIST);
00066 } else {
00067     $user = $USER;
00068 }
00069 
00070 if (isset($cm->groupmode) && empty($course->groupmodeforce)) {
00071     $groupmode = $cm->groupmode;
00072 } else {
00073     $groupmode = $course->groupmode;
00074 }
00075 if ($groupmode && !forum_is_subscribed($user->id, $forum) && !has_capability('moodle/site:accessallgroups', $context)) {
00076     if (!groups_get_all_groups($course->id, $USER->id)) {
00077         print_error('cannotsubscribe', 'forum');
00078     }
00079 }
00080 
00081 require_login($course->id, false, $cm);
00082 
00083 if (is_null($mode) and !is_enrolled($context, $USER, '', true)) {   // Guests and visitors can't subscribe - only enrolled
00084     $PAGE->set_title($course->shortname);
00085     $PAGE->set_heading($course->fullname);
00086     if (isguestuser()) {
00087         echo $OUTPUT->header();
00088         echo $OUTPUT->confirm(get_string('subscribeenrolledonly', 'forum').'<br /><br />'.get_string('liketologin'),
00089                      get_login_url(), new moodle_url('/mod/forum/view.php', array('f'=>$id)));
00090         echo $OUTPUT->footer();
00091         exit;
00092     } else {
00093         // there should not be any links leading to this place, just redirect
00094         redirect(new moodle_url('/mod/forum/view.php', array('f'=>$id)), get_string('subscribeenrolledonly', 'forum'));
00095     }
00096 }
00097 
00098 $returnto = optional_param('backtoindex',0,PARAM_INT)
00099     ? "index.php?id=".$course->id
00100     : "view.php?f=$id";
00101 
00102 if (!is_null($mode) and has_capability('mod/forum:managesubscriptions', $context)) {
00103     require_sesskey();
00104     switch ($mode) {
00105         case FORUM_CHOOSESUBSCRIBE : // 0
00106             forum_forcesubscribe($forum->id, 0);
00107             redirect($returnto, get_string("everyonecannowchoose", "forum"), 1);
00108             break;
00109         case FORUM_FORCESUBSCRIBE : // 1
00110             forum_forcesubscribe($forum->id, 1);
00111             redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
00112             break;
00113         case FORUM_INITIALSUBSCRIBE : // 2
00114             forum_forcesubscribe($forum->id, 2);
00115             redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
00116             break;
00117         case FORUM_DISALLOWSUBSCRIBE : // 3
00118             forum_forcesubscribe($forum->id, 3);
00119             redirect($returnto, get_string("noonecansubscribenow", "forum"), 1);
00120             break;
00121         default:
00122             print_error(get_string('invalidforcesubscribe', 'forum'));
00123     }
00124 }
00125 
00126 if (forum_is_forcesubscribed($forum)) {
00127     redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
00128 }
00129 
00130 $info = new stdClass();
00131 $info->name  = fullname($user);
00132 $info->forum = format_string($forum->name);
00133 
00134 if (forum_is_subscribed($user->id, $forum->id)) {
00135     if (is_null($sesskey)) {    // we came here via link in email
00136         $PAGE->set_title($course->shortname);
00137         $PAGE->set_heading($course->fullname);
00138         echo $OUTPUT->header();
00139         echo $OUTPUT->confirm(get_string('confirmunsubscribe', 'forum', format_string($forum->name)),
00140                 new moodle_url($PAGE->url, array('sesskey' => sesskey())), new moodle_url('/mod/forum/view.php', array('f' => $id)));
00141         echo $OUTPUT->footer();
00142         exit;
00143     }
00144     require_sesskey();
00145     if (forum_unsubscribe($user->id, $forum->id)) {
00146         add_to_log($course->id, "forum", "unsubscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
00147         redirect($returnto, get_string("nownotsubscribed", "forum", $info), 1);
00148     } else {
00149         print_error('cannotunsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
00150     }
00151 
00152 } else {  // subscribe
00153     if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE &&
00154                 !has_capability('mod/forum:managesubscriptions', $context)) {
00155         print_error('disallowsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
00156     }
00157     if (!has_capability('mod/forum:viewdiscussion', $context)) {
00158         print_error('noviewdiscussionspermission', 'forum', $_SERVER["HTTP_REFERER"]);
00159     }
00160     if (is_null($sesskey)) {    // we came here via link in email
00161         $PAGE->set_title($course->shortname);
00162         $PAGE->set_heading($course->fullname);
00163         echo $OUTPUT->header();
00164         echo $OUTPUT->confirm(get_string('confirmsubscribe', 'forum', format_string($forum->name)),
00165                 new moodle_url($PAGE->url, array('sesskey' => sesskey())), new moodle_url('/mod/forum/view.php', array('f' => $id)));
00166         echo $OUTPUT->footer();
00167         exit;
00168     }
00169     require_sesskey();
00170     forum_subscribe($user->id, $forum->id);
00171     add_to_log($course->id, "forum", "subscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
00172     redirect($returnto, get_string("nowsubscribed", "forum", $info), 1);
00173 }
 All Data Structures Namespaces Files Functions Variables Enumerations