1 | <?php |
---|
2 | /*********************************************************************** |
---|
3 | |
---|
4 | Copyright (C) 2002-2005 Rickard Andersson (rickard@punbb.org) |
---|
5 | |
---|
6 | This file is part of PunBB. |
---|
7 | |
---|
8 | PunBB is free software; you can redistribute it and/or modify it |
---|
9 | under the terms of the GNU General Public License as published |
---|
10 | by the Free Software Foundation; either version 2 of the License, |
---|
11 | or (at your option) any later version. |
---|
12 | |
---|
13 | PunBB is distributed in the hope that it will be useful, but |
---|
14 | WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
16 | GNU General Public License for more details. |
---|
17 | |
---|
18 | You should have received a copy of the GNU General Public License |
---|
19 | along with this program; if not, write to the Free Software |
---|
20 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
---|
21 | MA 02111-1307 USA |
---|
22 | |
---|
23 | ************************************************************************/ |
---|
24 | |
---|
25 | |
---|
26 | if (isset($_GET['action'])) |
---|
27 | define('PUN_QUIET_VISIT', 1); |
---|
28 | |
---|
29 | define('PUN_ROOT', './'); |
---|
30 | require PUN_ROOT.'include/common.php'; |
---|
31 | |
---|
32 | |
---|
33 | // Load the misc.php language file |
---|
34 | require PUN_ROOT.'lang/'.$pun_user['language'].'/misc.php'; |
---|
35 | |
---|
36 | $action = isset($_GET['action']) ? $_GET['action'] : null; |
---|
37 | |
---|
38 | |
---|
39 | if ($action == 'rules') |
---|
40 | { |
---|
41 | // Load the register.php language file |
---|
42 | require PUN_ROOT.'lang/'.$pun_user['language'].'/register.php'; |
---|
43 | |
---|
44 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_register['Forum rules']; |
---|
45 | require PUN_ROOT.'header.php'; |
---|
46 | |
---|
47 | ?> |
---|
48 | <div class="block"> |
---|
49 | <h2><span><?php echo $lang_register['Forum rules'] ?></span></h2> |
---|
50 | <div class="box"> |
---|
51 | <div class="inbox"> |
---|
52 | <p><?php echo $pun_config['o_rules_message'] ?></p> |
---|
53 | </div> |
---|
54 | </div> |
---|
55 | </div> |
---|
56 | <?php |
---|
57 | |
---|
58 | require PUN_ROOT.'footer.php'; |
---|
59 | } |
---|
60 | |
---|
61 | |
---|
62 | else if ($action == 'markread') |
---|
63 | { |
---|
64 | if ($pun_user['is_guest']) |
---|
65 | message($lang_common['No permission']); |
---|
66 | |
---|
67 | $db->query('UPDATE '.$db->prefix.'users SET last_visit='.$pun_user['logged'].' WHERE id='.$pun_user['id']) or error('Impossible de modifier les données de derniÚre visite de l\'utilisateur', __FILE__, __LINE__, $db->error()); |
---|
68 | |
---|
69 | redirect('index.php', $lang_misc['Mark read redirect']); |
---|
70 | } |
---|
71 | |
---|
72 | |
---|
73 | else if (isset($_GET['email'])) |
---|
74 | { |
---|
75 | if ($pun_user['is_guest']) |
---|
76 | message($lang_common['No permission']); |
---|
77 | |
---|
78 | $recipient_id = intval($_GET['email']); |
---|
79 | if ($recipient_id < 2) |
---|
80 | message($lang_common['Bad request']); |
---|
81 | |
---|
82 | $result = $db->query('SELECT username, email, email_setting FROM '.$db->prefix.'users WHERE id='.$recipient_id) or error('Impossible de retrouver les informations utilisateur', __FILE__, __LINE__, $db->error()); |
---|
83 | if (!$db->num_rows($result)) |
---|
84 | message($lang_common['Bad request']); |
---|
85 | |
---|
86 | list($recipient, $recipient_email, $email_setting) = $db->fetch_row($result); |
---|
87 | |
---|
88 | if ($email_setting == 2 && $pun_user['g_id'] > PUN_MOD) |
---|
89 | message($lang_misc['Form e-mail disabled']); |
---|
90 | |
---|
91 | |
---|
92 | if (isset($_POST['form_sent'])) |
---|
93 | { |
---|
94 | // Clean up message and subject from POST |
---|
95 | $subject = pun_trim($_POST['req_subject']); |
---|
96 | $message = pun_trim($_POST['req_message']); |
---|
97 | |
---|
98 | if ($subject == '') |
---|
99 | message($lang_misc['No e-mail subject']); |
---|
100 | else if ($message == '') |
---|
101 | message($lang_misc['No e-mail message']); |
---|
102 | else if (strlen($message) > 65535) |
---|
103 | message($lang_misc['Too long e-mail message']); |
---|
104 | |
---|
105 | // Load the "form e-mail" template |
---|
106 | $mail_tpl = trim(file_get_contents(PUN_ROOT.'lang/'.$pun_user['language'].'/mail_templates/form_email.tpl')); |
---|
107 | |
---|
108 | // The first row contains the subject |
---|
109 | $first_crlf = strpos($mail_tpl, "\n"); |
---|
110 | $mail_subject = trim(substr($mail_tpl, 8, $first_crlf-8)); |
---|
111 | $mail_message = trim(substr($mail_tpl, $first_crlf)); |
---|
112 | |
---|
113 | $mail_subject = str_replace('<mail_subject>', $subject, $mail_subject); |
---|
114 | $mail_message = str_replace('<sender>', $pun_user['username'], $mail_message); |
---|
115 | $mail_message = str_replace('<board_title>', $pun_config['o_board_title'], $mail_message); |
---|
116 | $mail_message = str_replace('<mail_message>', $message, $mail_message); |
---|
117 | $mail_message = str_replace('<board_mailer>', $pun_config['o_board_title'].' '.$lang_common['Mailer'], $mail_message); |
---|
118 | |
---|
119 | require_once PUN_ROOT.'include/email.php'; |
---|
120 | |
---|
121 | pun_mail($recipient_email, $mail_subject, $mail_message, '"'.str_replace('"', '', $pun_user['username']).'" <'.$pun_user['email'].'>'); |
---|
122 | |
---|
123 | redirect($_POST['redirect_url'], $lang_misc['E-mail sent redirect']); |
---|
124 | } |
---|
125 | |
---|
126 | |
---|
127 | // Try to determine if the data in HTTP_REFERER is valid (if not, we redirect to the users profile after the e-mail is sent) |
---|
128 | $redirect_url = (isset($_SERVER['HTTP_REFERER']) && preg_match('#^'.preg_quote($pun_config['o_base_url']).'/(.*?)\.php#i', $_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : 'index.php'; |
---|
129 | |
---|
130 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_misc['Send e-mail to'].' '.pun_htmlspecialchars($recipient); |
---|
131 | $required_fields = array('req_subject' => $lang_misc['E-mail subject'], 'req_message' => $lang_misc['E-mail message']); |
---|
132 | $focus_element = array('email', 'req_subject'); |
---|
133 | require PUN_ROOT.'header.php'; |
---|
134 | |
---|
135 | ?> |
---|
136 | <div class="blockform"> |
---|
137 | <h2><span><?php echo $lang_misc['Send e-mail to'] ?> <?php echo pun_htmlspecialchars($recipient) ?></span></h2> |
---|
138 | <div class="box"> |
---|
139 | <form id="email" method="post" action="misc.php?email=<?php echo $recipient_id ?>" onsubmit="this.submit.disabled=true;if(process_form(this)){return true;}else{this.submit.disabled=false;return false;}"> |
---|
140 | <div class="inform"> |
---|
141 | <fieldset> |
---|
142 | <legend><?php echo $lang_misc['Write e-mail'] ?></legend> |
---|
143 | <div class="infldset txtarea"> |
---|
144 | <input type="hidden" name="form_sent" value="1" /> |
---|
145 | <input type="hidden" name="redirect_url" value="<?php echo $redirect_url ?>" /> |
---|
146 | <label><strong><?php echo $lang_misc['E-mail subject'] ?></strong><br /> |
---|
147 | <input class="longinput" type="text" name="req_subject" size="75" maxlength="70" tabindex="1" /><br /></label> |
---|
148 | <label><strong><?php echo $lang_misc['E-mail message'] ?></strong><br /> |
---|
149 | <textarea name="req_message" rows="10" cols="75" tabindex="2"></textarea><br /></label> |
---|
150 | <p><?php echo $lang_misc['E-mail disclosure note'] ?></p> |
---|
151 | </div> |
---|
152 | </fieldset> |
---|
153 | </div> |
---|
154 | <p><input type="submit" name="submit" value="<?php echo $lang_common['Submit'] ?>" tabindex="3" accesskey="s" /><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p> |
---|
155 | </form> |
---|
156 | </div> |
---|
157 | </div> |
---|
158 | <?php |
---|
159 | |
---|
160 | require PUN_ROOT.'footer.php'; |
---|
161 | } |
---|
162 | |
---|
163 | |
---|
164 | else if (isset($_GET['report'])) |
---|
165 | { |
---|
166 | if ($pun_user['is_guest']) |
---|
167 | message($lang_common['No permission']); |
---|
168 | |
---|
169 | $post_id = intval($_GET['report']); |
---|
170 | if ($post_id < 1) |
---|
171 | message($lang_common['Bad request']); |
---|
172 | |
---|
173 | if (isset($_POST['form_sent'])) |
---|
174 | { |
---|
175 | // Clean up reason from POST |
---|
176 | $reason = pun_linebreaks(pun_trim($_POST['req_reason'])); |
---|
177 | if ($reason == '') |
---|
178 | message($lang_misc['No reason']); |
---|
179 | |
---|
180 | // Get the topic ID |
---|
181 | $result = $db->query('SELECT topic_id FROM '.$db->prefix.'posts WHERE id='.$post_id) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); |
---|
182 | if (!$db->num_rows($result)) |
---|
183 | message($lang_common['Bad request']); |
---|
184 | |
---|
185 | $topic_id = $db->result($result); |
---|
186 | |
---|
187 | // Get the subject and forum ID |
---|
188 | $result = $db->query('SELECT subject, forum_id FROM '.$db->prefix.'topics WHERE id='.$topic_id) or error('Impossible de retrouver les informations des discussions', __FILE__, __LINE__, $db->error()); |
---|
189 | if (!$db->num_rows($result)) |
---|
190 | message($lang_common['Bad request']); |
---|
191 | |
---|
192 | list($subject, $forum_id) = $db->fetch_row($result); |
---|
193 | |
---|
194 | // Should we use the internal report handling? |
---|
195 | if ($pun_config['o_report_method'] == 0 || $pun_config['o_report_method'] == 2) |
---|
196 | $db->query('INSERT INTO '.$db->prefix.'reports (post_id, topic_id, forum_id, reported_by, created, message) VALUES('.$post_id.', '.$topic_id.', '.$forum_id.', '.$pun_user['id'].', '.time().', \''.$db->escape($reason).'\')' ) or error('Unable to create report', __FILE__, __LINE__, $db->error()); |
---|
197 | |
---|
198 | // Should we e-mail the report? |
---|
199 | if ($pun_config['o_report_method'] == 1 || $pun_config['o_report_method'] == 2) |
---|
200 | { |
---|
201 | // We send it to the complete mailing-list in one swoop |
---|
202 | if ($pun_config['o_mailing_list'] != '') |
---|
203 | { |
---|
204 | $mail_subject = 'Report('.$forum_id.') - \''.$subject.'\''; |
---|
205 | $mail_message = 'User \''.$pun_user['username'].'\' has reported the following message:'."\n".$pun_config['o_base_url'].'/viewtopic.php?pid='.$post_id.'#p'.$post_id."\n\n".'Reason:'."\n".$reason; |
---|
206 | |
---|
207 | require PUN_ROOT.'include/email.php'; |
---|
208 | |
---|
209 | pun_mail($pun_config['o_mailing_list'], $mail_subject, $mail_message); |
---|
210 | } |
---|
211 | } |
---|
212 | |
---|
213 | redirect('viewtopic.php?pid='.$post_id.'#p'.$post_id, $lang_misc['Report redirect']); |
---|
214 | } |
---|
215 | |
---|
216 | |
---|
217 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_misc['Report post']; |
---|
218 | $required_fields = array('req_reason' => $lang_misc['Reason']); |
---|
219 | $focus_element = array('report', 'req_reason'); |
---|
220 | require PUN_ROOT.'header.php'; |
---|
221 | |
---|
222 | ?> |
---|
223 | <div class="blockform"> |
---|
224 | <h2><span><?php echo $lang_misc['Report post'] ?></span></h2> |
---|
225 | <div class="box"> |
---|
226 | <form id="report" method="post" action="misc.php?report=<?php echo $post_id ?>" onsubmit="this.submit.disabled=true;if(process_form(this)){return true;}else{this.submit.disabled=false;return false;}"> |
---|
227 | <div class="inform"> |
---|
228 | <fieldset> |
---|
229 | <legend><?php echo $lang_misc['Reason desc'] ?></legend> |
---|
230 | <div class="infldset txtarea"> |
---|
231 | <input type="hidden" name="form_sent" value="1" /> |
---|
232 | <label><strong><?php echo $lang_misc['Reason'] ?></strong><br /><textarea name="req_reason" rows="5" cols="60"></textarea><br /></label> |
---|
233 | </div> |
---|
234 | </fieldset> |
---|
235 | </div> |
---|
236 | <p><input type="submit" name="submit" value="<?php echo $lang_common['Submit'] ?>" accesskey="s" /><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p> |
---|
237 | </form> |
---|
238 | </div> |
---|
239 | </div> |
---|
240 | <?php |
---|
241 | |
---|
242 | require PUN_ROOT.'footer.php'; |
---|
243 | } |
---|
244 | |
---|
245 | |
---|
246 | else if (isset($_GET['subscribe'])) |
---|
247 | { |
---|
248 | if ($pun_user['is_guest'] || $pun_config['o_subscriptions'] != '1') |
---|
249 | message($lang_common['No permission']); |
---|
250 | |
---|
251 | $topic_id = intval($_GET['subscribe']); |
---|
252 | if ($topic_id < 1) |
---|
253 | message($lang_common['Bad request']); |
---|
254 | |
---|
255 | $result = $db->query('SELECT 1 FROM '.$db->prefix.'subscriptions WHERE user_id='.$pun_user['id'].' AND topic_id='.$topic_id) or error('Impossible de retrouver les informations d\'abonnement', __FILE__, __LINE__, $db->error()); |
---|
256 | if ($db->num_rows($result)) |
---|
257 | message($lang_misc['Already subscribed']); |
---|
258 | |
---|
259 | $db->query('INSERT INTO '.$db->prefix.'subscriptions (user_id, topic_id) VALUES('.$pun_user['id'].' ,'.$topic_id.')') or error('UImpossible d\'ajouter l\'abonnement', __FILE__, __LINE__, $db->error()); |
---|
260 | |
---|
261 | redirect('viewtopic.php?id='.$topic_id, $lang_misc['Subscribe redirect']); |
---|
262 | } |
---|
263 | |
---|
264 | |
---|
265 | else if (isset($_GET['unsubscribe'])) |
---|
266 | { |
---|
267 | if ($pun_user['is_guest'] || $pun_config['o_subscriptions'] != '1') |
---|
268 | message($lang_common['No permission']); |
---|
269 | |
---|
270 | $topic_id = intval($_GET['unsubscribe']); |
---|
271 | if ($topic_id < 1) |
---|
272 | message($lang_common['Bad request']); |
---|
273 | |
---|
274 | $result = $db->query('SELECT 1 FROM '.$db->prefix.'subscriptions WHERE user_id='.$pun_user['id'].' AND topic_id='.$topic_id) or error('Impossible de retrouver les informations d\'abonnement', __FILE__, __LINE__, $db->error()); |
---|
275 | if (!$db->num_rows($result)) |
---|
276 | message($lang_misc['Not subscribed']); |
---|
277 | |
---|
278 | $db->query('DELETE FROM '.$db->prefix.'subscriptions WHERE user_id='.$pun_user['id'].' AND topic_id='.$topic_id) or error('Impossible de supprimer l\'abonnement', __FILE__, __LINE__, $db->error()); |
---|
279 | |
---|
280 | redirect('viewtopic.php?id='.$topic_id, $lang_misc['Unsubscribe redirect']); |
---|
281 | } |
---|
282 | |
---|
283 | |
---|
284 | else |
---|
285 | message($lang_common['Bad request']); |
---|