~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/mcp/mcp_queue.php

  • Committer: William Grant
  • Date: 2009-02-23 23:47:02 UTC
  • mfrom: (1099.1.211 new-dispatch)
  • Revision ID: grantw@unimelb.edu.au-20090223234702-db4b1llly46ignwo
Merge from lp:~ivle-dev/ivle/new-dispatch.

Pretty much everything changes. Reread the setup docs. Backup your databases.
Every file is now in a different installed location, the configuration system
is rewritten, the dispatch system is rewritten, URLs are different, the
database is different, worksheets and exercises are no longer on the
filesystem, we use a templating engine, jail service protocols are rewritten,
we don't repeat ourselves, we have authorization rewritten, phpBB is gone,
and probably lots of other things that I cannot remember.

This is certainly the biggest commit I have ever made, and hopefully
the largest I ever will.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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'] . '&amp;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'] . '&amp;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&amp;p=$post_id&amp;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&amp;f={$post_info['forum_id']}&amp;p={$post_info['post_id']}") : '',
191
 
                                        'U_MCP_APPROVE'                 => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=approve_details&amp;f=' . $post_info['forum_id'] . '&amp;p=' . $post_id),
192
 
                                        'U_MCP_REPORT'                  => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;f=' . $post_info['forum_id'] . '&amp;p=' . $post_id),
193
 
                                        'U_MCP_USER_NOTES'              => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $post_info['user_id']),
194
 
                                        'U_MCP_WARN_USER'               => ($auth->acl_get('m_warn')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&amp;mode=warn_user&amp;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) ? '&amp;mode=unapproved_topics' : '&amp;mode=unapproved_posts')) . "&amp;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&amp;mode=approve_details&amp;f=' . $post_info['forum_id'] . '&amp;p=' . $post_id . '&amp;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('&nbsp; &nbsp;', $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'] . '&amp;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'] . '&amp;p=' . $row['post_id']) . (($mode == 'unapproved_posts') ? '#p' . $row['post_id'] : ''),
410
 
                                                'U_VIEW_DETAILS'        => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&amp;start=$start&amp;mode=approve_details&amp;f={$row['forum_id']}&amp;p={$row['post_id']}" . (($mode == 'unapproved_topics') ? "&amp;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 . "&amp;f=$forum_id&amp;st=$sort_days&amp;sk=$sort_key&amp;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']}&amp;t={$post_data['topic_id']}&amp;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')) . "&amp;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
 
?>
 
 
b'\\ No newline at end of file'