|
Moodle
2.2.1
http://www.collinsharper.com
|
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 00026 require_once("../../config.php"); 00027 require_once("lib.php"); 00028 00029 $id = required_param('id',PARAM_INT); // forum 00030 $group = optional_param('group',0,PARAM_INT); // change of group 00031 $edit = optional_param('edit',-1,PARAM_BOOL); // Turn editing on and off 00032 00033 $url = new moodle_url('/mod/forum/subscribers.php', array('id'=>$id)); 00034 if ($group !== 0) { 00035 $url->param('group', $group); 00036 } 00037 if ($edit !== 0) { 00038 $url->param('edit', $edit); 00039 } 00040 $PAGE->set_url($url); 00041 00042 $forum = $DB->get_record('forum', array('id'=>$id), '*', MUST_EXIST); 00043 $course = $DB->get_record('course', array('id'=>$forum->course), '*', MUST_EXIST); 00044 if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { 00045 $cm->id = 0; 00046 } 00047 00048 require_login($course->id, false, $cm); 00049 00050 $context = get_context_instance(CONTEXT_MODULE, $cm->id); 00051 if (!has_capability('mod/forum:viewsubscribers', $context)) { 00052 print_error('nopermissiontosubscribe', 'forum'); 00053 } 00054 00055 unset($SESSION->fromdiscussion); 00056 00057 add_to_log($course->id, "forum", "view subscribers", "subscribers.php?id=$forum->id", $forum->id, $cm->id); 00058 00059 $forumoutput = $PAGE->get_renderer('mod_forum'); 00060 $currentgroup = groups_get_activity_group($cm); 00061 $options = array('forumid'=>$forum->id, 'currentgroup'=>$currentgroup, 'context'=>$context); 00062 $existingselector = new forum_existing_subscriber_selector('existingsubscribers', $options); 00063 $subscriberselector = new forum_potential_subscriber_selector('potentialsubscribers', $options); 00064 $subscriberselector->set_existing_subscribers($existingselector->find_users('')); 00065 00066 if (data_submitted()) { 00067 require_sesskey(); 00068 $subscribe = (bool)optional_param('subscribe', false, PARAM_RAW); 00069 $unsubscribe = (bool)optional_param('unsubscribe', false, PARAM_RAW); 00071 if (!($subscribe xor $unsubscribe)) { 00072 print_error('invalidaction'); 00073 } 00074 if ($subscribe) { 00075 $users = $subscriberselector->get_selected_users(); 00076 foreach ($users as $user) { 00077 if (!forum_subscribe($user->id, $id)) { 00078 print_error('cannotaddsubscriber', 'forum', '', $user->id); 00079 } 00080 } 00081 } else if ($unsubscribe) { 00082 $users = $existingselector->get_selected_users(); 00083 foreach ($users as $user) { 00084 if (!forum_unsubscribe($user->id, $id)) { 00085 print_error('cannotremovesubscriber', 'forum', '', $user->id); 00086 } 00087 } 00088 } 00089 $subscriberselector->invalidate_selected_users(); 00090 $existingselector->invalidate_selected_users(); 00091 $subscriberselector->set_existing_subscribers($existingselector->find_users('')); 00092 } 00093 00094 $strsubscribers = get_string("subscribers", "forum"); 00095 $PAGE->navbar->add($strsubscribers); 00096 $PAGE->set_title($strsubscribers); 00097 $PAGE->set_heading($COURSE->fullname); 00098 if (has_capability('mod/forum:managesubscriptions', $context)) { 00099 $PAGE->set_button(forum_update_subscriptions_button($course->id, $id)); 00100 if ($edit != -1) { 00101 $USER->subscriptionsediting = $edit; 00102 } 00103 } else { 00104 unset($USER->subscriptionsediting); 00105 } 00106 echo $OUTPUT->header(); 00107 echo $OUTPUT->heading(get_string('forum', 'forum').' '.$strsubscribers); 00108 if (empty($USER->subscriptionsediting)) { 00109 echo $forumoutput->subscriber_overview(forum_subscribed_users($course, $forum, $currentgroup, $context), $forum, $course); 00110 } else if (forum_is_forcesubscribed($forum)) { 00111 $subscriberselector->set_force_subscribed(true); 00112 echo $forumoutput->subscribed_users($subscriberselector); 00113 } else { 00114 echo $forumoutput->subscriber_selection_form($existingselector, $subscriberselector); 00115 } 00116 echo $OUTPUT->footer();