ce221eb5 |
1 | <?php |
2 | |
3 | // This file is part of Moodle - http://moodle.org/ |
4 | // |
5 | // Moodle is free software: you can redistribute it and/or modify |
6 | // it under the terms of the GNU General Public License as published by |
7 | // the Free Software Foundation, either version 3 of the License, or |
8 | // (at your option) any later version. |
9 | // |
10 | // Moodle is distributed in the hope that it will be useful, |
11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | // GNU General Public License for more details. |
14 | // |
15 | // You should have received a copy of the GNU General Public License |
16 | // along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
17 | |
18 | /** |
19 | * This file is part of the User section Moodle |
20 | * |
21 | * @copyright 1999 Martin Dougiamas http://dougiamas.com |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
23 | * @package user |
24 | */ |
25 | |
26 | require_once('../config.php'); |
27 | require_once($CFG->dirroot.'/message/lib.php'); |
28 | |
29 | $id = required_param('id',PARAM_INT); |
30 | $messagebody = optional_param('messagebody','',PARAM_CLEANHTML); |
31 | $send = optional_param('send','',PARAM_BOOL); |
32 | $preview = optional_param('preview','',PARAM_BOOL); |
33 | $edit = optional_param('edit','',PARAM_BOOL); |
34 | $returnto = optional_param('returnto','',PARAM_LOCALURL); |
35 | $format = optional_param('format',FORMAT_MOODLE,PARAM_INT); |
36 | $deluser = optional_param('deluser',0,PARAM_INT); |
37 | |
a6855934 |
38 | $url = new moodle_url('/user/messageselect.php', array('id'=>$id)); |
ce221eb5 |
39 | if ($messagebody !== '') { |
40 | $url->param('messagebody', $messagebody); |
41 | } |
42 | if ($send !== '') { |
43 | $url->param('send', $send); |
44 | } |
45 | if ($preview !== '') { |
46 | $url->param('preview', $preview); |
47 | } |
48 | if ($edit !== '') { |
49 | $url->param('edit', $edit); |
50 | } |
51 | if ($returnto !== '') { |
52 | $url->param('returnto', $returnto); |
53 | } |
54 | if ($format !== FORMAT_MOODLE) { |
55 | $url->param('format', $format); |
56 | } |
57 | if ($deluser !== 0) { |
58 | $url->param('deluser', $deluser); |
59 | } |
60 | $PAGE->set_url($url); |
43d42a1a |
61 | $PAGE->set_context(get_context_instance(CONTEXT_SYSTEM)); |
ce221eb5 |
62 | |
63 | if (!$course = $DB->get_record('course', array('id'=>$id))) { |
64 | print_error('invalidcourseid'); |
65 | } |
66 | |
67 | require_login(); |
68 | |
69 | $coursecontext = get_context_instance(CONTEXT_COURSE, $id); // Course context |
70 | $systemcontext = get_context_instance(CONTEXT_SYSTEM); // SYSTEM context |
71 | require_capability('moodle/course:bulkmessaging', $coursecontext); |
72 | |
73 | if (empty($SESSION->emailto)) { |
74 | $SESSION->emailto = array(); |
75 | } |
76 | if (!array_key_exists($id,$SESSION->emailto)) { |
77 | $SESSION->emailto[$id] = array(); |
78 | } |
79 | |
80 | if ($deluser) { |
81 | if (array_key_exists($id,$SESSION->emailto) && array_key_exists($deluser,$SESSION->emailto[$id])) { |
82 | unset($SESSION->emailto[$id][$deluser]); |
f19570d0 |
83 | } |
ce221eb5 |
84 | } |
f19570d0 |
85 | |
ce221eb5 |
86 | if (empty($SESSION->emailselect[$id]) || $messagebody) { |
87 | $SESSION->emailselect[$id] = array('messagebody' => $messagebody); |
88 | } |
0be6f678 |
89 | |
ce221eb5 |
90 | $messagebody = $SESSION->emailselect[$id]['messagebody']; |
f19570d0 |
91 | |
ce221eb5 |
92 | $count = 0; |
f19570d0 |
93 | |
ce221eb5 |
94 | foreach ($_POST as $k => $v) { |
95 | if (preg_match('/^(user|teacher)(\d+)$/',$k,$m)) { |
96 | if (!array_key_exists($m[2],$SESSION->emailto[$id])) { |
97 | if ($user = $DB->get_record_select('user', "id = ?", array($m[2]), 'id,firstname,lastname,idnumber,email,emailstop,mailformat,lastaccess')) { |
98 | $SESSION->emailto[$id][$m[2]] = $user; |
99 | $count++; |
f19570d0 |
100 | } |
101 | } |
102 | } |
ce221eb5 |
103 | } |
104 | |
105 | $strtitle = get_string('coursemessage'); |
106 | |
107 | $link = null; |
108 | if (has_capability('moodle/course:viewparticipants', $coursecontext) || has_capability('moodle/site:viewparticipants', $systemcontext)) { |
a6855934 |
109 | $link = new moodle_url("/user/index.php", array('id'=>$course->id)); |
ce221eb5 |
110 | } |
111 | $PAGE->navbar->add(get_string('participants'), $link); |
112 | $PAGE->navbar->add($strtitle); |
113 | $PAGE->set_title($strtitle); |
114 | $PAGE->set_heading($strtitle); |
ce221eb5 |
115 | echo $OUTPUT->header(); |
116 | // if messaging is disabled on site, we can still allow users with capabilities to send emails instead |
117 | if (empty($CFG->messaging)) { |
118 | echo $OUTPUT->notification(get_string('messagingdisabled','message')); |
119 | } |
120 | |
121 | if ($count) { |
122 | if ($count == 1) { |
123 | $heading = get_string('addedrecip','moodle',$count); |
124 | } else { |
125 | $heading = get_string('addedrecips','moodle',$count); |
f19570d0 |
126 | } |
ce221eb5 |
127 | echo $OUTPUT->heading($heading); |
128 | } |
f19570d0 |
129 | |
ce221eb5 |
130 | if (!empty($messagebody) && !$edit && !$deluser && ($preview || $send)) { |
131 | if (count($SESSION->emailto[$id])) { |
132 | if (!empty($preview)) { |
133 | echo '<form method="post" action="messageselect.php" style="margin: 0 20px;"> |
f09002ca |
134 | <input type="hidden" name="returnto" value="'.s($returnto).'" /> |
60af2703 |
135 | <input type="hidden" name="id" value="'.$id.'" /> |
136 | <input type="hidden" name="format" value="'.$format.'" /> |
18c3baa2 |
137 | '; |
ce221eb5 |
138 | echo "<h3>".get_string('previewhtml')."</h3><div class=\"messagepreview\">\n".format_text($messagebody,$format)."\n</div>\n"; |
139 | echo '<p align="center"><input type="submit" name="send" value="'.get_string('sendmessage', 'message').'" />'."\n"; |
140 | echo '<input type="submit" name="edit" value="'.get_string('update').'" /></p>'; |
141 | echo "\n</form>"; |
142 | } else if (!empty($send)) { |
143 | $good = 1; |
144 | foreach ($SESSION->emailto[$id] as $user) { |
145 | $good = $good && message_post_message($USER,$user,$messagebody,$format,'direct'); |
146 | } |
147 | if (!empty($good)) { |
148 | echo $OUTPUT->heading(get_string('messagedselectedusers')); |
149 | unset($SESSION->emailto[$id]); |
150 | unset($SESSION->emailselect[$id]); |
151 | } else { |
152 | echo $OUTPUT->heading(get_string('messagedselectedusersfailed')); |
f19570d0 |
153 | } |
ce221eb5 |
154 | echo '<p align="center"><a href="index.php?id='.$id.'">'.get_string('backtoparticipants').'</a></p>'; |
f19570d0 |
155 | } |
ce221eb5 |
156 | echo $OUTPUT->footer(); |
157 | exit; |
158 | } else { |
159 | echo $OUTPUT->notification(get_string('nousersyet')); |
f19570d0 |
160 | } |
ce221eb5 |
161 | } |
f19570d0 |
162 | |
ce221eb5 |
163 | echo '<p align="center"><a href="'.$returnto.'">'.get_string("keepsearching").'</a>'.((count($SESSION->emailto[$id])) ? ', '.get_string('usemessageform') : '').'</p>'; |
f19570d0 |
164 | |
ce221eb5 |
165 | if ((!empty($send) || !empty($preview) || !empty($edit)) && (empty($messagebody))) { |
166 | echo $OUTPUT->notification(get_string('allfieldsrequired')); |
167 | } |
f19570d0 |
168 | |
ce221eb5 |
169 | if (count($SESSION->emailto[$id])) { |
170 | $usehtmleditor = can_use_html_editor(); |
171 | require("message.html"); |
172 | } |
f19570d0 |
173 | |
ce221eb5 |
174 | echo $OUTPUT->footer(); |
f19570d0 |
175 | |
f09002ca |
176 | |