443
by dcoles
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0 |
1 |
<?php
|
2 |
/**
|
|
3 |
*
|
|
4 |
* @package mcp
|
|
5 |
* @version $Id: mcp_queue.php,v 1.88 2007/10/05 14:36:33 acydburn Exp $
|
|
6 |
* @copyright (c) 2005 phpBB Group
|
|
7 |
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
|
8 |
*
|
|
9 |
*/
|
|
10 |
||
11 |
/**
|
|
12 |
* @ignore
|
|
13 |
*/
|
|
14 |
if (!defined('IN_PHPBB')) |
|
15 |
{
|
|
16 |
exit; |
|
17 |
}
|
|
18 |
||
19 |
/**
|
|
20 |
* mcp_queue
|
|
21 |
* Handling the moderation queue
|
|
22 |
* @package mcp
|
|
23 |
*/
|
|
24 |
class mcp_queue |
|
25 |
{
|
|
26 |
var $p_master; |
|
27 |
var $u_action; |
|
28 |
||
29 |
function mcp_queue(&$p_master) |
|
30 |
{
|
|
31 |
$this->p_master = &$p_master; |
|
32 |
}
|
|
33 |
||
34 |
function main($id, $mode) |
|
35 |
{
|
|
36 |
global $auth, $db, $user, $template, $cache; |
|
37 |
global $config, $phpbb_root_path, $phpEx, $action; |
|
38 |
||
39 |
include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); |
|
40 |
||
41 |
$forum_id = request_var('f', 0); |
|
42 |
$start = request_var('start', 0); |
|
43 |
||
44 |
$this->page_title = 'MCP_QUEUE'; |
|
45 |
||
46 |
switch ($action) |
|
47 |
{
|
|
48 |
case 'approve': |
|
49 |
case 'disapprove': |
|
50 |
include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); |
|
51 |
||
52 |
$post_id_list = request_var('post_id_list', array(0)); |
|
53 |
||
54 |
if (!sizeof($post_id_list)) |
|
55 |
{
|
|
56 |
trigger_error('NO_POST_SELECTED'); |
|
57 |
}
|
|
58 |
||
59 |
if ($action == 'approve') |
|
60 |
{
|
|
61 |
approve_post($post_id_list, 'queue', $mode); |
|
62 |
}
|
|
63 |
else
|
|
64 |
{
|
|
65 |
disapprove_post($post_id_list, 'queue', $mode); |
|
66 |
}
|
|
67 |
||
68 |
break; |
|
69 |
}
|
|
70 |
||
71 |
switch ($mode) |
|
72 |
{
|
|
73 |
case 'approve_details': |
|
74 |
||
75 |
$this->tpl_name = 'mcp_post'; |
|
76 |
||
77 |
$user->add_lang('posting'); |
|
78 |
||
79 |
$post_id = request_var('p', 0); |
|
80 |
$topic_id = request_var('t', 0); |
|
81 |
||
82 |
if ($topic_id) |
|
83 |
{
|
|
84 |
$topic_info = get_topic_data(array($topic_id), 'm_approve'); |
|
85 |
if (isset($topic_info[$topic_id]['topic_first_post_id'])) |
|
86 |
{
|
|
87 |
$post_id = (int) $topic_info[$topic_id]['topic_first_post_id']; |
|
88 |
}
|
|
89 |
else
|
|
90 |
{
|
|
91 |
$topic_id = 0; |
|
92 |
}
|
|
93 |
}
|
|
94 |
||
95 |
$post_info = get_post_data(array($post_id), 'm_approve', true); |
|
96 |
||
97 |
if (!sizeof($post_info)) |
|
98 |
{
|
|
99 |
trigger_error('NO_POST_SELECTED'); |
|
100 |
}
|
|
101 |
||
102 |
$post_info = $post_info[$post_id]; |
|
103 |
||
104 |
if ($post_info['topic_first_post_id'] != $post_id && topic_review($post_info['topic_id'], $post_info['forum_id'], 'topic_review', 0, false)) |
|
105 |
{
|
|
106 |
$template->assign_vars(array( |
|
107 |
'S_TOPIC_REVIEW' => true, |
|
108 |
'TOPIC_TITLE' => $post_info['topic_title']) |
|
109 |
);
|
|
110 |
}
|
|
111 |
||
112 |
$extensions = $attachments = $topic_tracking_info = array(); |
|
113 |
||
114 |
// Get topic tracking info
|
|
115 |
if ($config['load_db_lastread']) |
|
116 |
{
|
|
117 |
$tmp_topic_data = array($post_info['topic_id'] => $post_info); |
|
118 |
$topic_tracking_info = get_topic_tracking($post_info['forum_id'], $post_info['topic_id'], $tmp_topic_data, array($post_info['forum_id'] => $post_info['forum_mark_time'])); |
|
119 |
unset($tmp_topic_data); |
|
120 |
}
|
|
121 |
else
|
|
122 |
{
|
|
123 |
$topic_tracking_info = get_complete_topic_tracking($post_info['forum_id'], $post_info['topic_id']); |
|
124 |
}
|
|
125 |
||
126 |
$post_unread = (isset($topic_tracking_info[$post_info['topic_id']]) && $post_info['post_time'] > $topic_tracking_info[$post_info['topic_id']]) ? true : false; |
|
127 |
||
128 |
// Process message, leave it uncensored
|
|
129 |
$message = $post_info['post_text']; |
|
130 |
||
131 |
if ($post_info['bbcode_bitfield']) |
|
132 |
{
|
|
133 |
include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx); |
|
134 |
$bbcode = new bbcode($post_info['bbcode_bitfield']); |
|
135 |
$bbcode->bbcode_second_pass($message, $post_info['bbcode_uid'], $post_info['bbcode_bitfield']); |
|
136 |
}
|
|
137 |
||
138 |
$message = bbcode_nl2br($message); |
|
139 |
$message = smiley_text($message); |
|
140 |
||
141 |
if ($post_info['post_attachment'] && $auth->acl_get('u_download') && $auth->acl_get('f_download', $post_info['forum_id'])) |
|
142 |
{
|
|
143 |
$extensions = $cache->obtain_attach_extensions($post_info['forum_id']); |
|
144 |
||
145 |
$sql = 'SELECT * |
|
146 |
FROM ' . ATTACHMENTS_TABLE . ' |
|
147 |
WHERE post_msg_id = ' . $post_id . ' |
|
148 |
AND in_message = 0
|
|
149 |
ORDER BY filetime DESC, post_msg_id ASC'; |
|
150 |
$result = $db->sql_query($sql); |
|
151 |
||
152 |
while ($row = $db->sql_fetchrow($result)) |
|
153 |
{
|
|
154 |
$attachments[] = $row; |
|
155 |
}
|
|
156 |
$db->sql_freeresult($result); |
|
157 |
||
158 |
if (sizeof($attachments)) |
|
159 |
{
|
|
160 |
$update_count = array(); |
|
161 |
parse_attachments($post_info['forum_id'], $message, $attachments, $update_count); |
|
162 |
}
|
|
163 |
||
164 |
// Display not already displayed Attachments for this post, we already parsed them. ;)
|
|
165 |
if (!empty($attachments)) |
|
166 |
{
|
|
167 |
$template->assign_var('S_HAS_ATTACHMENTS', true); |
|
168 |
||
169 |
foreach ($attachments as $attachment) |
|
170 |
{
|
|
171 |
$template->assign_block_vars('attachment', array( |
|
172 |
'DISPLAY_ATTACHMENT' => $attachment) |
|
173 |
);
|
|
174 |
}
|
|
175 |
}
|
|
176 |
}
|
|
177 |
||
178 |
$post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&p=' . $post_info['post_id'] . '#p' . $post_info['post_id']); |
|
179 |
$topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&t=' . $post_info['topic_id']); |
|
180 |
||
181 |
$template->assign_vars(array( |
|
182 |
'S_MCP_QUEUE' => true, |
|
183 |
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f=$forum_id"), |
|
184 |
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']), |
|
185 |
'S_POST_REPORTED' => $post_info['post_reported'], |
|
186 |
'S_POST_UNAPPROVED' => !$post_info['post_approved'], |
|
187 |
'S_POST_LOCKED' => $post_info['post_edit_locked'], |
|
188 |
'S_USER_NOTES' => true, |
|
189 |
||
190 |
'U_EDIT' => ($auth->acl_get('m_edit', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=edit&f={$post_info['forum_id']}&p={$post_info['post_id']}") : '', |
|
191 |
'U_MCP_APPROVE' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=approve_details&f=' . $post_info['forum_id'] . '&p=' . $post_id), |
|
192 |
'U_MCP_REPORT' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $post_info['forum_id'] . '&p=' . $post_id), |
|
193 |
'U_MCP_USER_NOTES' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&mode=user_notes&u=' . $post_info['user_id']), |
|
194 |
'U_MCP_WARN_USER' => ($auth->acl_get('m_warn')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&mode=warn_user&u=' . $post_info['user_id']) : '', |
|
195 |
'U_VIEW_POST' => $post_url, |
|
196 |
'U_VIEW_TOPIC' => $topic_url, |
|
197 |
||
198 |
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'), |
|
199 |
||
200 |
'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue' . (($topic_id) ? '&mode=unapproved_topics' : '&mode=unapproved_posts')) . "&start=$start\">", '</a>'), |
|
201 |
'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>'), |
|
202 |
'RETURN_TOPIC_SIMPLE' => sprintf($user->lang['RETURN_TOPIC_SIMPLE'], '<a href="' . $topic_url . '">', '</a>'), |
|
203 |
'REPORTED_IMG' => $user->img('icon_topic_reported', $user->lang['POST_REPORTED']), |
|
204 |
'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', $user->lang['POST_UNAPPROVED']), |
|
205 |
'EDIT_IMG' => $user->img('icon_post_edit', $user->lang['EDIT_POST']), |
|
206 |
||
207 |
'POST_AUTHOR_FULL' => get_username_string('full', $post_info['user_id'], $post_info['username'], $post_info['user_colour'], $post_info['post_username']), |
|
208 |
'POST_AUTHOR_COLOUR' => get_username_string('colour', $post_info['user_id'], $post_info['username'], $post_info['user_colour'], $post_info['post_username']), |
|
209 |
'POST_AUTHOR' => get_username_string('username', $post_info['user_id'], $post_info['username'], $post_info['user_colour'], $post_info['post_username']), |
|
210 |
'U_POST_AUTHOR' => get_username_string('profile', $post_info['user_id'], $post_info['username'], $post_info['user_colour'], $post_info['post_username']), |
|
211 |
||
212 |
'POST_PREVIEW' => $message, |
|
213 |
'POST_SUBJECT' => $post_info['post_subject'], |
|
214 |
'POST_DATE' => $user->format_date($post_info['post_time']), |
|
215 |
'POST_IP' => $post_info['poster_ip'], |
|
216 |
'POST_IPADDR' => ($auth->acl_get('m_info', $post_info['forum_id']) && request_var('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '', |
|
217 |
'POST_ID' => $post_info['post_id'], |
|
218 |
||
219 |
'U_LOOKUP_IP' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=approve_details&f=' . $post_info['forum_id'] . '&p=' . $post_id . '&lookup=' . $post_info['poster_ip']) . '#ip' : '', |
|
220 |
));
|
|
221 |
||
222 |
break;
|
|
223 |
||
224 |
case 'unapproved_topics':
|
|
225 |
case 'unapproved_posts':
|
|
226 |
$user->add_lang(array('viewtopic', 'viewforum')); |
|
227 |
||
228 |
$topic_id = request_var('t', 0); |
|
229 |
$forum_info = array(); |
|
230 |
||
231 |
if ($topic_id) |
|
232 |
{
|
|
233 |
$topic_info = get_topic_data(array($topic_id)); |
|
234 |
||
235 |
if (!sizeof($topic_info)) |
|
236 |
{
|
|
237 |
trigger_error('TOPIC_NOT_EXIST');
|
|
238 |
}
|
|
239 |
||
240 |
$topic_info = $topic_info[$topic_id]; |
|
241 |
$forum_id = $topic_info['forum_id']; |
|
242 |
}
|
|
243 |
||
244 |
$forum_list_approve = get_forum_list('m_approve', false, true); |
|
245 |
||
246 |
if (!$forum_id) |
|
247 |
{
|
|
248 |
$forum_list = array(); |
|
249 |
foreach ($forum_list_approve as $row) |
|
250 |
{
|
|
251 |
$forum_list[] = $row['forum_id']; |
|
252 |
}
|
|
253 |
||
254 |
if (!sizeof($forum_list)) |
|
255 |
{
|
|
256 |
trigger_error('NOT_MODERATOR');
|
|
257 |
}
|
|
258 |
||
259 |
$global_id = $forum_list[0]; |
|
260 |
||
261 |
$forum_list = implode(', ', $forum_list); |
|
262 |
||
263 |
$sql = 'SELECT SUM(forum_topics) as sum_forum_topics |
|
264 |
FROM ' . FORUMS_TABLE . "
|
|
265 |
WHERE forum_id IN (0, $forum_list)"; |
|
266 |
$result = $db->sql_query($sql); |
|
267 |
$forum_info['forum_topics'] = (int) $db->sql_fetchfield('sum_forum_topics'); |
|
268 |
$db->sql_freeresult($result); |
|
269 |
}
|
|
270 |
else
|
|
271 |
{
|
|
272 |
$forum_info = get_forum_data(array($forum_id), 'm_approve'); |
|
273 |
||
274 |
if (!sizeof($forum_info)) |
|
275 |
{
|
|
276 |
trigger_error('NOT_MODERATOR');
|
|
277 |
}
|
|
278 |
||
279 |
$forum_info = $forum_info[$forum_id]; |
|
280 |
$forum_list = $forum_id; |
|
281 |
$global_id = $forum_id; |
|
282 |
}
|
|
283 |
||
284 |
$forum_options = '<option value="0"' . (($forum_id == 0) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_FORUMS'] . '</option>'; |
|
285 |
foreach ($forum_list_approve as $row) |
|
286 |
{
|
|
287 |
$forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . str_repeat(' ', $row['padding']) . $row['forum_name'] . '</option>'; |
|
288 |
}
|
|
289 |
||
290 |
$sort_days = $total = 0; |
|
291 |
$sort_key = $sort_dir = ''; |
|
292 |
$sort_by_sql = $sort_order_sql = array(); |
|
293 |
mcp_sorting($mode, $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $forum_id, $topic_id); |
|
294 |
||
295 |
$forum_topics = ($total == -1) ? $forum_info['forum_topics'] : $total; |
|
296 |
$limit_time_sql = ($sort_days) ? 'AND t.topic_last_post_time >= ' . (time() - ($sort_days * 86400)) : ''; |
|
297 |
||
298 |
$forum_names = array(); |
|
299 |
||
300 |
if ($mode == 'unapproved_posts') |
|
301 |
{
|
|
302 |
$sql = 'SELECT p.post_id |
|
303 |
FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t' . (($sort_order_sql[0] == 'u') ? ', ' . USERS_TABLE . ' u' : '') . " |
|
304 |
WHERE p.forum_id IN (0, $forum_list) |
|
305 |
AND p.post_approved = 0 |
|
306 |
" . (($sort_order_sql[0] == 'u') ? 'AND u.user_id = p.poster_id' : '') . ' |
|
307 |
' . (($topic_id) ? 'AND p.topic_id = ' . $topic_id : '') . " |
|
308 |
AND t.topic_id = p.topic_id |
|
309 |
AND t.topic_first_post_id <> p.post_id |
|
310 |
$limit_time_sql
|
|
311 |
ORDER BY $sort_order_sql"; |
|
312 |
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); |
|
313 |
||
314 |
$i = 0; |
|
315 |
$post_ids = array(); |
|
316 |
while ($row = $db->sql_fetchrow($result)) |
|
317 |
{
|
|
318 |
$post_ids[] = $row['post_id']; |
|
319 |
$row_num[$row['post_id']] = $i++; |
|
320 |
}
|
|
321 |
$db->sql_freeresult($result); |
|
322 |
||
323 |
if (sizeof($post_ids)) |
|
324 |
{
|
|
325 |
$sql = 'SELECT t.topic_id, t.topic_title, t.forum_id, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, u.username, u.username_clean, u.user_colour |
|
326 |
FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u
|
|
327 |
WHERE ' . $db->sql_in_set('p.post_id', $post_ids) . ' |
|
328 |
AND t.topic_id = p.topic_id
|
|
329 |
AND u.user_id = p.poster_id
|
|
330 |
ORDER BY ' . $sort_order_sql; |
|
331 |
$result = $db->sql_query($sql); |
|
332 |
||
333 |
$post_data = $rowset = array(); |
|
334 |
while ($row = $db->sql_fetchrow($result)) |
|
335 |
{
|
|
336 |
if ($row['forum_id']) |
|
337 |
{
|
|
338 |
$forum_names[] = $row['forum_id']; |
|
339 |
}
|
|
340 |
$post_data[$row['post_id']] = $row; |
|
341 |
}
|
|
342 |
$db->sql_freeresult($result); |
|
343 |
||
344 |
foreach ($post_ids as $post_id) |
|
345 |
{
|
|
346 |
$rowset[] = $post_data[$post_id]; |
|
347 |
}
|
|
348 |
unset($post_data, $post_ids); |
|
349 |
}
|
|
350 |
else
|
|
351 |
{
|
|
352 |
$rowset = array(); |
|
353 |
}
|
|
354 |
}
|
|
355 |
else
|
|
356 |
{
|
|
357 |
$sql = 'SELECT t.forum_id, t.topic_id, t.topic_title, t.topic_title AS post_subject, t.topic_time AS post_time, t.topic_poster AS poster_id, t.topic_first_post_id AS post_id, t.topic_first_poster_name AS username, t.topic_first_poster_colour AS user_colour |
|
358 |
FROM ' . TOPICS_TABLE . " t |
|
359 |
WHERE forum_id IN (0, $forum_list) |
|
360 |
AND topic_approved = 0 |
|
361 |
$limit_time_sql
|
|
362 |
ORDER BY $sort_order_sql"; |
|
363 |
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); |
|
364 |
||
365 |
$rowset = array(); |
|
366 |
while ($row = $db->sql_fetchrow($result)) |
|
367 |
{
|
|
368 |
if ($row['forum_id']) |
|
369 |
{
|
|
370 |
$forum_names[] = $row['forum_id']; |
|
371 |
}
|
|
372 |
$rowset[] = $row; |
|
373 |
}
|
|
374 |
$db->sql_freeresult($result); |
|
375 |
}
|
|
376 |
||
377 |
if (sizeof($forum_names)) |
|
378 |
{
|
|
379 |
// Select the names for the forum_ids
|
|
380 |
$sql = 'SELECT forum_id, forum_name |
|
381 |
FROM ' . FORUMS_TABLE . '
|
|
382 |
WHERE ' . $db->sql_in_set('forum_id', $forum_names); |
|
383 |
$result = $db->sql_query($sql, 3600); |
|
384 |
||
385 |
$forum_names = array(); |
|
386 |
while ($row = $db->sql_fetchrow($result)) |
|
387 |
{
|
|
388 |
$forum_names[$row['forum_id']] = $row['forum_name']; |
|
389 |
}
|
|
390 |
$db->sql_freeresult($result); |
|
391 |
}
|
|
392 |
||
393 |
foreach ($rowset as $row) |
|
394 |
{
|
|
395 |
$global_topic = ($row['forum_id']) ? false : true; |
|
396 |
if ($global_topic) |
|
397 |
{
|
|
398 |
$row['forum_id'] = $global_id; |
|
399 |
}
|
|
400 |
||
401 |
if (empty($row['post_username'])) |
|
402 |
{
|
|
403 |
$row['post_username'] = $user->lang['GUEST']; |
|
404 |
}
|
|
405 |
||
406 |
$template->assign_block_vars('postrow', array( |
|
407 |
'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id']), |
|
408 |
'U_VIEWFORUM' => (!$global_topic) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']) : '', |
|
409 |
'U_VIEWPOST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&p=' . $row['post_id']) . (($mode == 'unapproved_posts') ? '#p' . $row['post_id'] : ''), |
|
410 |
'U_VIEW_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&start=$start&mode=approve_details&f={$row['forum_id']}&p={$row['post_id']}" . (($mode == 'unapproved_topics') ? "&t={$row['topic_id']}" : '')), |
|
411 |
||
412 |
'POST_AUTHOR_FULL' => get_username_string('full', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']), |
|
413 |
'POST_AUTHOR_COLOUR' => get_username_string('colour', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']), |
|
414 |
'POST_AUTHOR' => get_username_string('username', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']), |
|
415 |
'U_POST_AUTHOR' => get_username_string('profile', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']), |
|
416 |
||
417 |
'POST_ID' => $row['post_id'], |
|
418 |
'FORUM_NAME' => (!$global_topic) ? $forum_names[$row['forum_id']] : $user->lang['GLOBAL_ANNOUNCEMENT'], |
|
419 |
'POST_SUBJECT' => $row['post_subject'], |
|
420 |
'TOPIC_TITLE' => $row['topic_title'], |
|
421 |
'POST_TIME' => $user->format_date($row['post_time'])) |
|
422 |
);
|
|
423 |
}
|
|
424 |
unset($rowset, $forum_names); |
|
425 |
||
426 |
// Now display the page
|
|
427 |
$template->assign_vars(array( |
|
428 |
'L_DISPLAY_ITEMS' => ($mode == 'unapproved_posts') ? $user->lang['DISPLAY_POSTS'] : $user->lang['DISPLAY_TOPICS'], |
|
429 |
'L_EXPLAIN' => ($mode == 'unapproved_posts') ? $user->lang['MCP_QUEUE_UNAPPROVED_POSTS_EXPLAIN'] : $user->lang['MCP_QUEUE_UNAPPROVED_TOPICS_EXPLAIN'], |
|
430 |
'L_TITLE' => ($mode == 'unapproved_posts') ? $user->lang['MCP_QUEUE_UNAPPROVED_POSTS'] : $user->lang['MCP_QUEUE_UNAPPROVED_TOPICS'], |
|
431 |
'L_ONLY_TOPIC' => ($topic_id) ? sprintf($user->lang['ONLY_TOPIC'], $topic_info['topic_title']) : '', |
|
432 |
||
433 |
'S_FORUM_OPTIONS' => $forum_options, |
|
434 |
'S_MCP_ACTION' => build_url(array('t', 'f', 'sd', 'st', 'sk')),
|
|
435 |
'S_TOPICS' => ($mode == 'unapproved_posts') ? false : true, |
|
436 |
||
437 |
'PAGINATION' => generate_pagination($this->u_action . "&f=$forum_id&st=$sort_days&sk=$sort_key&sd=$sort_dir", $total, $config['topics_per_page'], $start), |
|
438 |
'PAGE_NUMBER' => on_page($total, $config['topics_per_page'], $start), |
|
439 |
'TOPIC_ID' => $topic_id, |
|
440 |
'TOTAL' => ($total == 1) ? (($mode == 'unapproved_posts') ? $user->lang['VIEW_TOPIC_POST'] : $user->lang['VIEW_FORUM_TOPIC']) : sprintf((($mode == 'unapproved_posts') ? $user->lang['VIEW_TOPIC_POSTS'] : $user->lang['VIEW_FORUM_TOPICS']), $total), |
|
441 |
));
|
|
442 |
||
443 |
$this->tpl_name = 'mcp_queue'; |
|
444 |
break;
|
|
445 |
}
|
|
446 |
}
|
|
447 |
}
|
|
448 |
||
449 |
/**
|
|
450 |
* Approve Post/Topic
|
|
451 |
*/
|
|
452 |
function approve_post($post_id_list, $id, $mode) |
|
453 |
{
|
|
454 |
global $db, $template, $user, $config; |
|
455 |
global $phpEx, $phpbb_root_path; |
|
456 |
||
457 |
if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_approve'))) |
|
458 |
{
|
|
459 |
trigger_error('NOT_AUTHORISED');
|
|
460 |
}
|
|
461 |
||
462 |
$redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); |
|
463 |
$success_msg = ''; |
|
464 |
||
465 |
$s_hidden_fields = build_hidden_fields(array( |
|
466 |
'i' => $id, |
|
467 |
'mode' => $mode, |
|
468 |
'post_id_list' => $post_id_list, |
|
469 |
'action' => 'approve',
|
|
470 |
'redirect' => $redirect) |
|
471 |
);
|
|
472 |
||
473 |
$post_info = get_post_data($post_id_list, 'm_approve'); |
|
474 |
||
475 |
if (confirm_box(true))
|
|
476 |
{
|
|
477 |
$notify_poster = (isset($_REQUEST['notify_poster'])) ? true : false; |
|
478 |
||
479 |
// If Topic -> total_topics = total_topics+1, total_posts = total_posts+1, forum_topics = forum_topics+1, forum_posts = forum_posts+1
|
|
480 |
// If Post -> total_posts = total_posts+1, forum_posts = forum_posts+1, topic_replies = topic_replies+1
|
|
481 |
||
482 |
$total_topics = $total_posts = 0; |
|
483 |
$forum_topics_posts = $topic_approve_sql = $topic_replies_sql = $post_approve_sql = $topic_id_list = $forum_id_list = $approve_log = array(); |
|
484 |
||
485 |
$update_forum_information = false; |
|
486 |
||
487 |
foreach ($post_info as $post_id => $post_data) |
|
488 |
{
|
|
489 |
$topic_id_list[$post_data['topic_id']] = 1; |
|
490 |
||
491 |
if ($post_data['forum_id']) |
|
492 |
{
|
|
493 |
$forum_id_list[$post_data['forum_id']] = 1; |
|
494 |
}
|
|
495 |
||
496 |
// Topic or Post. ;)
|
|
497 |
if ($post_data['topic_first_post_id'] == $post_id) |
|
498 |
{
|
|
499 |
if ($post_data['forum_id']) |
|
500 |
{
|
|
501 |
if (!isset($forum_topics_posts[$post_data['forum_id']])) |
|
502 |
{
|
|
503 |
$forum_topics_posts[$post_data['forum_id']] = array( |
|
504 |
'forum_posts' => 0,
|
|
505 |
'forum_topics' => 0
|
|
506 |
);
|
|
507 |
}
|
|
508 |
||
509 |
$total_topics++; |
|
510 |
$forum_topics_posts[$post_data['forum_id']]['forum_topics']++; |
|
511 |
}
|
|
512 |
$topic_approve_sql[] = $post_data['topic_id']; |
|
513 |
||
514 |
$approve_log[] = array( |
|
515 |
'type' => 'topic',
|
|
516 |
'post_subject' => $post_data['post_subject'], |
|
517 |
'forum_id' => $post_data['forum_id'], |
|
518 |
'topic_id' => $post_data['topic_id'], |
|
519 |
);
|
|
520 |
}
|
|
521 |
else
|
|
522 |
{
|
|
523 |
if (!isset($topic_replies_sql[$post_data['topic_id']])) |
|
524 |
{
|
|
525 |
$topic_replies_sql[$post_data['topic_id']] = 0; |
|
526 |
}
|
|
527 |
$topic_replies_sql[$post_data['topic_id']]++; |
|
528 |
||
529 |
$approve_log[] = array( |
|
530 |
'type' => 'post',
|
|
531 |
'post_subject' => $post_data['post_subject'], |
|
532 |
'forum_id' => $post_data['forum_id'], |
|
533 |
'topic_id' => $post_data['topic_id'], |
|
534 |
);
|
|
535 |
}
|
|
536 |
||
537 |
if ($post_data['forum_id']) |
|
538 |
{
|
|
539 |
if (!isset($forum_topics_posts[$post_data['forum_id']])) |
|
540 |
{
|
|
541 |
$forum_topics_posts[$post_data['forum_id']] = array( |
|
542 |
'forum_posts' => 0,
|
|
543 |
'forum_topics' => 0
|
|
544 |
);
|
|
545 |
}
|
|
546 |
||
547 |
$total_posts++; |
|
548 |
$forum_topics_posts[$post_data['forum_id']]['forum_posts']++; |
|
549 |
||
550 |
// Increment by topic_replies if we approve a topic...
|
|
551 |
// This works because we do not adjust the topic_replies when re-approving a topic after an edit.
|
|
552 |
if ($post_data['topic_first_post_id'] == $post_id && $post_data['topic_replies']) |
|
553 |
{
|
|
554 |
$total_posts += $post_data['topic_replies']; |
|
555 |
$forum_topics_posts[$post_data['forum_id']]['forum_posts'] += $post_data['topic_replies']; |
|
556 |
}
|
|
557 |
}
|
|
558 |
||
559 |
$post_approve_sql[] = $post_id; |
|
560 |
||
561 |
// If the post is newer than the last post information stored we need to update the forum information
|
|
562 |
if ($post_data['post_time'] >= $post_data['forum_last_post_time']) |
|
563 |
{
|
|
564 |
$update_forum_information = true; |
|
565 |
}
|
|
566 |
}
|
|
567 |
||
568 |
if (sizeof($topic_approve_sql)) |
|
569 |
{
|
|
570 |
$sql = 'UPDATE ' . TOPICS_TABLE . ' |
|
571 |
SET topic_approved = 1
|
|
572 |
WHERE ' . $db->sql_in_set('topic_id', $topic_approve_sql); |
|
573 |
$db->sql_query($sql); |
|
574 |
}
|
|
575 |
||
576 |
if (sizeof($post_approve_sql)) |
|
577 |
{
|
|
578 |
$sql = 'UPDATE ' . POSTS_TABLE . ' |
|
579 |
SET post_approved = 1
|
|
580 |
WHERE ' . $db->sql_in_set('post_id', $post_approve_sql); |
|
581 |
$db->sql_query($sql); |
|
582 |
}
|
|
583 |
||
584 |
foreach ($approve_log as $log_data) |
|
585 |
{
|
|
586 |
add_log('mod', $log_data['forum_id'], $log_data['topic_id'], ($log_data['type'] == 'topic') ? 'LOG_TOPIC_APPROVED' : 'LOG_POST_APPROVED', $log_data['post_subject']); |
|
587 |
}
|
|
588 |
||
589 |
if (sizeof($topic_replies_sql)) |
|
590 |
{
|
|
591 |
foreach ($topic_replies_sql as $topic_id => $num_replies) |
|
592 |
{
|
|
593 |
$sql = 'UPDATE ' . TOPICS_TABLE . " |
|
594 |
SET topic_replies = topic_replies + $num_replies |
|
595 |
WHERE topic_id = $topic_id"; |
|
596 |
$db->sql_query($sql); |
|
597 |
}
|
|
598 |
}
|
|
599 |
||
600 |
if (sizeof($forum_topics_posts)) |
|
601 |
{
|
|
602 |
foreach ($forum_topics_posts as $forum_id => $row) |
|
603 |
{
|
|
604 |
$sql = 'UPDATE ' . FORUMS_TABLE . ' |
|
605 |
SET ';
|
|
606 |
$sql .= ($row['forum_topics']) ? "forum_topics = forum_topics + {$row['forum_topics']}" : ''; |
|
607 |
$sql .= ($row['forum_topics'] && $row['forum_posts']) ? ', ' : ''; |
|
608 |
$sql .= ($row['forum_posts']) ? "forum_posts = forum_posts + {$row['forum_posts']}" : ''; |
|
609 |
$sql .= " WHERE forum_id = $forum_id"; |
|
610 |
||
611 |
$db->sql_query($sql); |
|
612 |
}
|
|
613 |
}
|
|
614 |
||
615 |
if ($total_topics) |
|
616 |
{
|
|
617 |
set_config('num_topics', $config['num_topics'] + $total_topics, true); |
|
618 |
}
|
|
619 |
||
620 |
if ($total_posts) |
|
621 |
{
|
|
622 |
set_config('num_posts', $config['num_posts'] + $total_posts, true); |
|
623 |
}
|
|
624 |
unset($topic_approve_sql, $topic_replies_sql, $post_approve_sql); |
|
625 |
||
626 |
update_post_information('topic', array_keys($topic_id_list)); |
|
627 |
||
628 |
if ($update_forum_information) |
|
629 |
{
|
|
630 |
update_post_information('forum', array_keys($forum_id_list)); |
|
631 |
}
|
|
632 |
unset($topic_id_list, $forum_id_list); |
|
633 |
||
634 |
$messenger = new messenger(); |
|
635 |
||
636 |
// Notify Poster?
|
|
637 |
if ($notify_poster) |
|
638 |
{
|
|
639 |
foreach ($post_info as $post_id => $post_data) |
|
640 |
{
|
|
641 |
if ($post_data['poster_id'] == ANONYMOUS) |
|
642 |
{
|
|
643 |
continue;
|
|
644 |
}
|
|
645 |
||
646 |
$email_template = ($post_data['post_id'] == $post_data['topic_first_post_id'] && $post_data['post_id'] == $post_data['topic_last_post_id']) ? 'topic_approved' : 'post_approved'; |
|
647 |
||
648 |
$messenger->template($email_template, $post_data['user_lang']); |
|
649 |
||
650 |
$messenger->to($post_data['user_email'], $post_data['username']); |
|
651 |
$messenger->im($post_data['user_jabber'], $post_data['username']); |
|
652 |
||
653 |
$messenger->assign_vars(array( |
|
654 |
'USERNAME' => htmlspecialchars_decode($post_data['username']), |
|
655 |
'POST_SUBJECT' => htmlspecialchars_decode(censor_text($post_data['post_subject'])), |
|
656 |
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($post_data['topic_title'])), |
|
657 |
||
658 |
'U_VIEW_TOPIC' => generate_board_url() . "/viewtopic.$phpEx?f={$post_data['forum_id']}&t={$post_data['topic_id']}&e=0", |
|
659 |
'U_VIEW_POST' => generate_board_url() . "/viewtopic.$phpEx?f={$post_data['forum_id']}&t={$post_data['topic_id']}&p=$post_id&e=$post_id") |
|
660 |
);
|
|
661 |
||
662 |
$messenger->send($post_data['user_notify_type']); |
|
663 |
}
|
|
664 |
}
|
|
665 |
||
666 |
$messenger->save_queue(); |
|
667 |
||
668 |
// Send out normal user notifications
|
|
669 |
$email_sig = str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']); |
|
670 |
||
671 |
foreach ($post_info as $post_id => $post_data) |
|
672 |
{
|
|
673 |
if ($post_id == $post_data['topic_first_post_id'] && $post_id == $post_data['topic_last_post_id']) |
|
674 |
{
|
|
675 |
// Forum Notifications
|
|
676 |
user_notification('post', $post_data['topic_title'], $post_data['topic_title'], $post_data['forum_name'], $post_data['forum_id'], $post_data['topic_id'], $post_id); |
|
677 |
}
|
|
678 |
else
|
|
679 |
{
|
|
680 |
// Topic Notifications
|
|
681 |
user_notification('reply', $post_data['post_subject'], $post_data['topic_title'], $post_data['forum_name'], $post_data['forum_id'], $post_data['topic_id'], $post_id); |
|
682 |
}
|
|
683 |
}
|
|
684 |
||
685 |
if (sizeof($post_id_list) == 1) |
|
686 |
{
|
|
687 |
$post_data = $post_info[$post_id_list[0]]; |
|
688 |
$post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$post_data['forum_id']}&t={$post_data['topic_id']}&p={$post_data['post_id']}") . '#p' . $post_data['post_id']; |
|
689 |
}
|
|
690 |
unset($post_info); |
|
691 |
||
692 |
if ($total_topics) |
|
693 |
{
|
|
694 |
$success_msg = ($total_topics == 1) ? 'TOPIC_APPROVED_SUCCESS' : 'TOPICS_APPROVED_SUCCESS'; |
|
695 |
}
|
|
696 |
else
|
|
697 |
{
|
|
698 |
$success_msg = (sizeof($post_id_list) == 1) ? 'POST_APPROVED_SUCCESS' : 'POSTS_APPROVED_SUCCESS'; |
|
699 |
}
|
|
700 |
}
|
|
701 |
else
|
|
702 |
{
|
|
703 |
$show_notify = false; |
|
704 |
||
705 |
foreach ($post_info as $post_data) |
|
706 |
{
|
|
707 |
if ($post_data['poster_id'] == ANONYMOUS) |
|
708 |
{
|
|
709 |
continue;
|
|
710 |
}
|
|
711 |
else
|
|
712 |
{
|
|
713 |
$show_notify = true; |
|
714 |
break;
|
|
715 |
}
|
|
716 |
}
|
|
717 |
||
718 |
$template->assign_vars(array( |
|
719 |
'S_NOTIFY_POSTER' => $show_notify, |
|
720 |
'S_APPROVE' => true)
|
|
721 |
);
|
|
722 |
||
723 |
confirm_box(false, 'APPROVE_POST' . ((sizeof($post_id_list) == 1) ? '' : 'S'), $s_hidden_fields, 'mcp_approve.html'); |
|
724 |
}
|
|
725 |
||
726 |
$redirect = request_var('redirect', "index.$phpEx"); |
|
727 |
$redirect = reapply_sid($redirect); |
|
728 |
||
729 |
if (!$success_msg) |
|
730 |
{
|
|
731 |
redirect($redirect); |
|
732 |
}
|
|
733 |
else
|
|
734 |
{
|
|
735 |
meta_refresh(3, $redirect); |
|
736 |
||
737 |
// If approving one post, also give links back to post...
|
|
738 |
$add_message = ''; |
|
739 |
if (sizeof($post_id_list) == 1 && !empty($post_url)) |
|
740 |
{
|
|
741 |
$add_message = '<br /><br />' . sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>'); |
|
742 |
}
|
|
743 |
||
744 |
trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>') . $add_message); |
|
745 |
}
|
|
746 |
}
|
|
747 |
||
748 |
/**
|
|
749 |
* Disapprove Post/Topic
|
|
750 |
*/
|
|
751 |
function disapprove_post($post_id_list, $id, $mode) |
|
752 |
{
|
|
753 |
global $db, $template, $user, $config; |
|
754 |
global $phpEx, $phpbb_root_path; |
|
755 |
||
756 |
if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_approve'))) |
|
757 |
{
|
|
758 |
trigger_error('NOT_AUTHORISED');
|
|
759 |
}
|
|
760 |
||
761 |
$redirect = request_var('redirect', build_url(array('t', 'mode', '_f_', 'quickmod')) . "&mode=$mode"); |
|
762 |
$reason = utf8_normalize_nfc(request_var('reason', '', true)); |
|
763 |
$reason_id = request_var('reason_id', 0); |
|
764 |
$success_msg = $additional_msg = ''; |
|
765 |
||
766 |
$s_hidden_fields = build_hidden_fields(array( |
|
767 |
'i' => $id, |
|
768 |
'mode' => $mode, |
|
769 |
'post_id_list' => $post_id_list, |
|
770 |
'action' => 'disapprove',
|
|
771 |
'redirect' => $redirect) |
|
772 |
);
|
|
773 |
||
774 |
$notify_poster = (isset($_REQUEST['notify_poster'])) ? true : false; |
|
775 |
$disapprove_reason = ''; |
|
776 |
||
777 |
if ($reason_id) |
|
778 |
{
|
|
779 |
$sql = 'SELECT reason_title, reason_description |
|
780 |
FROM ' . REPORTS_REASONS_TABLE . "
|
|
781 |
WHERE reason_id = $reason_id"; |
|
782 |
$result = $db->sql_query($sql); |
|
783 |
$row = $db->sql_fetchrow($result); |
|
784 |
$db->sql_freeresult($result); |
|
785 |
||
786 |
if (!$row || (!$reason && strtolower($row['reason_title']) == 'other')) |
|
787 |
{
|
|
788 |
$additional_msg = $user->lang['NO_REASON_DISAPPROVAL']; |
|
789 |
unset($_POST['confirm']); |
|
790 |
}
|
|
791 |
else
|
|
792 |
{
|
|
793 |
// If the reason is defined within the language file, we will use the localized version, else just use the database entry...
|
|
794 |
$disapprove_reason = (strtolower($row['reason_title']) != 'other') ? ((isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])])) ? $user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])] : $row['reason_description']) : ''; |
|
795 |
$disapprove_reason .= ($reason) ? "\n\n" . $reason : ''; |
|
796 |
}
|
|
797 |
}
|
|
798 |
||
799 |
$post_info = get_post_data($post_id_list, 'm_approve'); |
|
800 |
||
801 |
if (confirm_box(true))
|
|
802 |
{
|
|
803 |
||
804 |
// If Topic -> forum_topics_real -= 1
|
|
805 |
// If Post -> topic_replies_real -= 1
|
|
806 |
||
807 |
$num_disapproved = 0; |
|
808 |
$forum_topics_real = $topic_id_list = $forum_id_list = $topic_replies_real_sql = $post_disapprove_sql = $disapprove_log = array(); |
|
809 |
||
810 |
foreach ($post_info as $post_id => $post_data) |
|
811 |
{
|
|
812 |
$topic_id_list[$post_data['topic_id']] = 1; |
|
813 |
||
814 |
if ($post_data['forum_id']) |
|
815 |
{
|
|
816 |
$forum_id_list[$post_data['forum_id']] = 1; |
|
817 |
}
|
|
818 |
||
819 |
// Topic or Post. ;)
|
|
820 |
/**
|
|
821 |
* @todo this probably is a different method than the one used by delete_posts, does this cause counter inconsistency?
|
|
822 |
*/
|
|
823 |
if ($post_data['topic_first_post_id'] == $post_id && $post_data['topic_last_post_id'] == $post_id) |
|
824 |
{
|
|
825 |
if ($post_data['forum_id']) |
|
826 |
{
|
|
827 |
if (!isset($forum_topics_real[$post_data['forum_id']])) |
|
828 |
{
|
|
829 |
$forum_topics_real[$post_data['forum_id']] = 0; |
|
830 |
}
|
|
831 |
$forum_topics_real[$post_data['forum_id']]++; |
|
832 |
$num_disapproved++; |
|
833 |
}
|
|
834 |
||
835 |
$disapprove_log[] = array( |
|
836 |
'type' => 'topic',
|
|
837 |
'post_subject' => $post_data['post_subject'], |
|
838 |
'forum_id' => $post_data['forum_id'], |
|
839 |
'topic_id' => 0, // useless to log a topic id, as it will be deleted
|
|
840 |
);
|
|
841 |
}
|
|
842 |
else
|
|
843 |
{
|
|
844 |
if (!isset($topic_replies_real_sql[$post_data['topic_id']])) |
|
845 |
{
|
|
846 |
$topic_replies_real_sql[$post_data['topic_id']] = 0; |
|
847 |
}
|
|
848 |
$topic_replies_real_sql[$post_data['topic_id']]++; |
|
849 |
||
850 |
$disapprove_log[] = array( |
|
851 |
'type' => 'post',
|
|
852 |
'post_subject' => $post_data['post_subject'], |
|
853 |
'forum_id' => $post_data['forum_id'], |
|
854 |
'topic_id' => $post_data['topic_id'], |
|
855 |
);
|
|
856 |
}
|
|
857 |
||
858 |
$post_disapprove_sql[] = $post_id; |
|
859 |
}
|
|
860 |
||
861 |
unset($post_data); |
|
862 |
||
863 |
if (sizeof($forum_topics_real)) |
|
864 |
{
|
|
865 |
foreach ($forum_topics_real as $forum_id => $topics_real) |
|
866 |
{
|
|
867 |
$sql = 'UPDATE ' . FORUMS_TABLE . " |
|
868 |
SET forum_topics_real = forum_topics_real - $topics_real |
|
869 |
WHERE forum_id = $forum_id"; |
|
870 |
$db->sql_query($sql); |
|
871 |
}
|
|
872 |
}
|
|
873 |
||
874 |
if (sizeof($topic_replies_real_sql)) |
|
875 |
{
|
|
876 |
foreach ($topic_replies_real_sql as $topic_id => $num_replies) |
|
877 |
{
|
|
878 |
$sql = 'UPDATE ' . TOPICS_TABLE . " |
|
879 |
SET topic_replies_real = topic_replies_real - $num_replies |
|
880 |
WHERE topic_id = $topic_id"; |
|
881 |
$db->sql_query($sql); |
|
882 |
}
|
|
883 |
}
|
|
884 |
||
885 |
if (sizeof($post_disapprove_sql)) |
|
886 |
{
|
|
887 |
if (!function_exists('delete_posts'))
|
|
888 |
{
|
|
889 |
include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx); |
|
890 |
}
|
|
891 |
||
892 |
// We do not check for permissions here, because the moderator allowed approval/disapproval should be allowed to delete the disapproved posts
|
|
893 |
delete_posts('post_id', $post_disapprove_sql); |
|
894 |
||
895 |
foreach ($disapprove_log as $log_data) |
|
896 |
{
|
|
897 |
add_log('mod', $log_data['forum_id'], $log_data['topic_id'], ($log_data['type'] == 'topic') ? 'LOG_TOPIC_DISAPPROVED' : 'LOG_POST_DISAPPROVED', $log_data['post_subject'], $disapprove_reason); |
|
898 |
}
|
|
899 |
}
|
|
900 |
unset($post_disapprove_sql, $topic_replies_real_sql); |
|
901 |
||
902 |
update_post_information('topic', array_keys($topic_id_list)); |
|
903 |
||
904 |
if (sizeof($forum_id_list)) |
|
905 |
{
|
|
906 |
update_post_information('forum', array_keys($forum_id_list)); |
|
907 |
}
|
|
908 |
unset($topic_id_list, $forum_id_list); |
|
909 |
||
910 |
$messenger = new messenger(); |
|
911 |
||
912 |
// Notify Poster?
|
|
913 |
if ($notify_poster) |
|
914 |
{
|
|
915 |
foreach ($post_info as $post_id => $post_data) |
|
916 |
{
|
|
917 |
if ($post_data['poster_id'] == ANONYMOUS) |
|
918 |
{
|
|
919 |
continue;
|
|
920 |
}
|
|
921 |
||
922 |
$email_template = ($post_data['post_id'] == $post_data['topic_first_post_id'] && $post_data['post_id'] == $post_data['topic_last_post_id']) ? 'topic_disapproved' : 'post_disapproved'; |
|
923 |
||
924 |
$messenger->template($email_template, $post_data['user_lang']); |
|
925 |
||
926 |
$messenger->to($post_data['user_email'], $post_data['username']); |
|
927 |
$messenger->im($post_data['user_jabber'], $post_data['username']); |
|
928 |
||
929 |
$messenger->assign_vars(array( |
|
930 |
'USERNAME' => htmlspecialchars_decode($post_data['username']), |
|
931 |
'REASON' => htmlspecialchars_decode($disapprove_reason), |
|
932 |
'POST_SUBJECT' => htmlspecialchars_decode(censor_text($post_data['post_subject'])), |
|
933 |
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($post_data['topic_title']))) |
|
934 |
);
|
|
935 |
||
936 |
$messenger->send($post_data['user_notify_type']); |
|
937 |
}
|
|
938 |
}
|
|
939 |
unset($post_info, $disapprove_reason); |
|
940 |
||
941 |
$messenger->save_queue(); |
|
942 |
||
943 |
if (sizeof($forum_topics_real)) |
|
944 |
{
|
|
945 |
$success_msg = ($num_disapproved == 1) ? 'TOPIC_DISAPPROVED_SUCCESS' : 'TOPICS_DISAPPROVED_SUCCESS'; |
|
946 |
}
|
|
947 |
else
|
|
948 |
{
|
|
949 |
$success_msg = (sizeof($post_id_list) == 1) ? 'POST_DISAPPROVED_SUCCESS' : 'POSTS_DISAPPROVED_SUCCESS'; |
|
950 |
}
|
|
951 |
}
|
|
952 |
else
|
|
953 |
{
|
|
954 |
include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); |
|
955 |
||
956 |
display_reasons($reason_id); |
|
957 |
||
958 |
$show_notify = false; |
|
959 |
||
960 |
foreach ($post_info as $post_data) |
|
961 |
{
|
|
962 |
if ($post_data['poster_id'] == ANONYMOUS) |
|
963 |
{
|
|
964 |
continue;
|
|
965 |
}
|
|
966 |
else
|
|
967 |
{
|
|
968 |
$show_notify = true; |
|
969 |
break;
|
|
970 |
}
|
|
971 |
}
|
|
972 |
||
973 |
$template->assign_vars(array( |
|
974 |
'S_NOTIFY_POSTER' => $show_notify, |
|
975 |
'S_APPROVE' => false,
|
|
976 |
'REASON' => $reason, |
|
977 |
'ADDITIONAL_MSG' => $additional_msg) |
|
978 |
);
|
|
979 |
||
980 |
confirm_box(false, 'DISAPPROVE_POST' . ((sizeof($post_id_list) == 1) ? '' : 'S'), $s_hidden_fields, 'mcp_approve.html'); |
|
981 |
}
|
|
982 |
||
983 |
$redirect = request_var('redirect', "index.$phpEx"); |
|
984 |
$redirect = reapply_sid($redirect); |
|
985 |
||
986 |
if (!$success_msg) |
|
987 |
{
|
|
988 |
redirect($redirect); |
|
989 |
}
|
|
990 |
else
|
|
991 |
{
|
|
992 |
meta_refresh(3, $redirect); |
|
993 |
trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>')); |
|
994 |
}
|
|
995 |
}
|
|
996 |
||
997 |
?>
|