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

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/mcp/mcp_topic.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_topic.php,v 1.62 2007/10/12 18:13:50 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
 
* View topic in MCP
21
 
*/
22
 
function mcp_topic_view($id, $mode, $action)
23
 
{
24
 
        global $phpEx, $phpbb_root_path, $config;
25
 
        global $template, $db, $user, $auth, $cache;
26
 
 
27
 
        $url = append_sid("{$phpbb_root_path}mcp.$phpEx?" . extra_url());
28
 
 
29
 
        $user->add_lang('viewtopic');
30
 
 
31
 
        $topic_id = request_var('t', 0);
32
 
        $topic_info = get_topic_data(array($topic_id), false, true);
33
 
 
34
 
        if (!sizeof($topic_info))
35
 
        {
36
 
                trigger_error('TOPIC_NOT_EXIST');
37
 
        }
38
 
 
39
 
        $topic_info = $topic_info[$topic_id];
40
 
 
41
 
        // Set up some vars
42
 
        $icon_id                = request_var('icon', 0);
43
 
        $subject                = utf8_normalize_nfc(request_var('subject', '', true));
44
 
        $start                  = request_var('start', 0);
45
 
        $sort_days_old  = request_var('st_old', 0);
46
 
        $forum_id               = request_var('f', 0);
47
 
        $to_topic_id    = request_var('to_topic_id', 0);
48
 
        $to_forum_id    = request_var('to_forum_id', 0);
49
 
        $post_id_list   = request_var('post_id_list', array(0));
50
 
        $sort                   = isset($_POST['sort']) ? true : false;
51
 
 
52
 
        // Split Topic?
53
 
        if ($action == 'split_all' || $action == 'split_beyond')
54
 
        {
55
 
                if (!$sort)
56
 
                {
57
 
                        split_topic($action, $topic_id, $to_forum_id, $subject);
58
 
                }
59
 
                $action = 'split';
60
 
        }
61
 
 
62
 
        // Merge Posts?
63
 
        if ($action == 'merge_posts')
64
 
        {
65
 
                if (!$sort)
66
 
                {
67
 
                        merge_posts($topic_id, $to_topic_id);
68
 
                }
69
 
                $action = 'merge';
70
 
        }
71
 
 
72
 
        if ($action == 'split' && !$subject)
73
 
        {
74
 
                $subject = $topic_info['topic_title'];
75
 
        }
76
 
 
77
 
        // Approve posts?
78
 
        if ($action == 'approve' && $auth->acl_get('m_approve', $topic_info['forum_id']))
79
 
        {
80
 
                include($phpbb_root_path . 'includes/mcp/mcp_queue.' . $phpEx);
81
 
                include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
82
 
                include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
83
 
 
84
 
                if (!sizeof($post_id_list))
85
 
                {
86
 
                        trigger_error('NO_POST_SELECTED');
87
 
                }
88
 
 
89
 
                if (!$sort)
90
 
                {
91
 
                        approve_post($post_id_list, $id, $mode);
92
 
                }
93
 
        }
94
 
 
95
 
        // Jumpbox, sort selects and that kind of things
96
 
        make_jumpbox($url . "&amp;i=$id&amp;mode=forum_view", $topic_info['forum_id'], false, 'm_', true);
97
 
        $where_sql = ($action == 'reports') ? 'WHERE post_reported = 1 AND ' : 'WHERE';
98
 
 
99
 
        $sort_days = $total = 0;
100
 
        $sort_key = $sort_dir = '';
101
 
        $sort_by_sql = $sort_order_sql = array();
102
 
        mcp_sorting('viewtopic', $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $topic_info['forum_id'], $topic_id, $where_sql);
103
 
 
104
 
        $limit_time_sql = ($sort_days) ? 'AND p.post_time >= ' . (time() - ($sort_days * 86400)) : '';
105
 
 
106
 
        if ($total == -1)
107
 
        {
108
 
                $total = $topic_info['topic_replies'] + 1;
109
 
        }
110
 
 
111
 
        $posts_per_page = max(0, request_var('posts_per_page', intval($config['posts_per_page'])));
112
 
        if ($posts_per_page == 0)
113
 
        {
114
 
                $posts_per_page = $total;
115
 
        }
116
 
        if (!empty($sort_days_old) && $sort_days_old != $sort_days)
117
 
        {
118
 
                $start = 0;
119
 
        }
120
 
 
121
 
        $sql = 'SELECT u.username, u.username_clean, u.user_colour, p.*
122
 
                FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
123
 
                WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
124
 
                        p.topic_id = ' . $topic_id . ' ' .
125
 
                        ((!$auth->acl_get('m_approve', $topic_info['forum_id'])) ? ' AND p.post_approved = 1 ' : '') . '
126
 
                        AND p.poster_id = u.user_id ' .
127
 
                        $limit_time_sql . '
128
 
                ORDER BY ' . $sort_order_sql;
129
 
        $result = $db->sql_query_limit($sql, $posts_per_page, $start);
130
 
 
131
 
        $rowset = $post_id_list = array();
132
 
        $bbcode_bitfield = '';
133
 
        while ($row = $db->sql_fetchrow($result))
134
 
        {
135
 
                $rowset[] = $row;
136
 
                $post_id_list[] = $row['post_id'];
137
 
                $bbcode_bitfield = $bbcode_bitfield | base64_decode($row['bbcode_bitfield']);
138
 
        }
139
 
        $db->sql_freeresult($result);
140
 
 
141
 
        if ($bbcode_bitfield !== '')
142
 
        {
143
 
                include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
144
 
                $bbcode = new bbcode(base64_encode($bbcode_bitfield));
145
 
        }
146
 
 
147
 
        $topic_tracking_info = array();
148
 
 
149
 
        // Get topic tracking info
150
 
        if ($config['load_db_lastread'])
151
 
        {
152
 
                $tmp_topic_data = array($topic_id => $topic_info);
153
 
                $topic_tracking_info = get_topic_tracking($topic_info['forum_id'], $topic_id, $tmp_topic_data, array($topic_info['forum_id'] => $topic_info['forum_mark_time']));
154
 
                unset($tmp_topic_data);
155
 
        }
156
 
        else
157
 
        {
158
 
                $topic_tracking_info = get_complete_topic_tracking($topic_info['forum_id'], $topic_id);
159
 
        }
160
 
 
161
 
        $has_unapproved_posts = false;
162
 
 
163
 
        // Grab extensions
164
 
        $extensions = $attachments = array();
165
 
        if ($topic_info['topic_attachment'] && sizeof($post_id_list))
166
 
        {
167
 
                $extensions = $cache->obtain_attach_extensions($topic_info['forum_id']);
168
 
 
169
 
                // Get attachments...
170
 
                if ($auth->acl_get('u_download') && $auth->acl_get('f_download', $topic_info['forum_id']))
171
 
                {
172
 
                        $sql = 'SELECT *
173
 
                                FROM ' . ATTACHMENTS_TABLE . '
174
 
                                WHERE ' . $db->sql_in_set('post_msg_id', $post_id_list) . '
175
 
                                        AND in_message = 0
176
 
                                ORDER BY filetime DESC, post_msg_id ASC';
177
 
                        $result = $db->sql_query($sql);
178
 
 
179
 
                        while ($row = $db->sql_fetchrow($result))
180
 
                        {
181
 
                                $attachments[$row['post_msg_id']][] = $row;
182
 
                        }
183
 
                        $db->sql_freeresult($result);
184
 
                }
185
 
        }
186
 
 
187
 
        foreach ($rowset as $i => $row)
188
 
        {
189
 
                $message = $row['post_text'];
190
 
                $post_subject = ($row['post_subject'] != '') ? $row['post_subject'] : $topic_info['topic_title'];
191
 
 
192
 
                if ($row['bbcode_bitfield'])
193
 
                {
194
 
                        $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
195
 
                }
196
 
 
197
 
                $message = bbcode_nl2br($message);
198
 
                $message = smiley_text($message);
199
 
 
200
 
                if (!empty($attachments[$row['post_id']]))
201
 
                {
202
 
                        $update_count = array();
203
 
                        parse_attachments($topic_info['forum_id'], $message, $attachments[$row['post_id']], $update_count);
204
 
                }
205
 
 
206
 
                if (!$row['post_approved'])
207
 
                {
208
 
                        $has_unapproved_posts = true;
209
 
                }
210
 
 
211
 
                $post_unread = (isset($topic_tracking_info[$topic_id]) && $row['post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
212
 
 
213
 
                $template->assign_block_vars('postrow', array(
214
 
                        'POST_AUTHOR_FULL'              => get_username_string('full', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
215
 
                        'POST_AUTHOR_COLOUR'    => get_username_string('colour', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
216
 
                        'POST_AUTHOR'                   => get_username_string('username', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
217
 
                        'U_POST_AUTHOR'                 => get_username_string('profile', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
218
 
 
219
 
                        'POST_DATE'             => $user->format_date($row['post_time']),
220
 
                        'POST_SUBJECT'  => $post_subject,
221
 
                        'MESSAGE'               => $message,
222
 
                        'POST_ID'               => $row['post_id'],
223
 
                        'RETURN_TOPIC'  => sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id) . '">', '</a>'),
224
 
 
225
 
                        'MINI_POST_IMG'                 => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'),
226
 
 
227
 
                        'S_POST_REPORTED'       => ($row['post_reported']) ? true : false,
228
 
                        'S_POST_UNAPPROVED'     => ($row['post_approved']) ? false : true,
229
 
                        'S_CHECKED'                     => ($post_id_list && in_array(intval($row['post_id']), $post_id_list)) ? true : false,
230
 
                        'S_HAS_ATTACHMENTS'     => (!empty($attachments[$row['post_id']])) ? true : false,
231
 
 
232
 
                        'U_POST_DETAILS'        => "$url&amp;i=$id&amp;p={$row['post_id']}&amp;mode=post_details" . (($forum_id) ? "&amp;f=$forum_id" : ''),
233
 
                        'U_MCP_APPROVE'         => ($auth->acl_get('m_approve', $topic_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=approve_details&amp;f=' . $topic_info['forum_id'] . '&amp;p=' . $row['post_id']) : '',
234
 
                        'U_MCP_REPORT'          => ($auth->acl_get('m_report', $topic_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;f=' . $topic_info['forum_id'] . '&amp;p=' . $row['post_id']) : '')
235
 
                );
236
 
 
237
 
                // Display not already displayed Attachments for this post, we already parsed them. ;)
238
 
                if (!empty($attachments[$row['post_id']]))
239
 
                {
240
 
                        foreach ($attachments[$row['post_id']] as $attachment)
241
 
                        {
242
 
                                $template->assign_block_vars('postrow.attachment', array(
243
 
                                        'DISPLAY_ATTACHMENT'    => $attachment)
244
 
                                );
245
 
                        }
246
 
                }
247
 
 
248
 
                unset($rowset[$i]);
249
 
        }
250
 
 
251
 
        // Display topic icons for split topic
252
 
        $s_topic_icons = false;
253
 
 
254
 
        if ($auth->acl_get('m_split', $topic_info['forum_id']))
255
 
        {
256
 
                include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
257
 
                $s_topic_icons = posting_gen_topic_icons('', $icon_id);
258
 
 
259
 
                // Has the user selected a topic for merge?
260
 
                if ($to_topic_id)
261
 
                {
262
 
                        $to_topic_info = get_topic_data(array($to_topic_id), 'm_merge');
263
 
 
264
 
                        if (!sizeof($to_topic_info))
265
 
                        {
266
 
                                $to_topic_id = 0;
267
 
                        }
268
 
                        else
269
 
                        {
270
 
                                $to_topic_info = $to_topic_info[$to_topic_id];
271
 
 
272
 
                                if (!$to_topic_info['enable_icons'] || $auth->acl_get('!f_icons', $topic_info['forum_id']))
273
 
                                {
274
 
                                        $s_topic_icons = false;
275
 
                                }
276
 
                        }
277
 
                }
278
 
        }
279
 
 
280
 
        $s_hidden_fields = build_hidden_fields(array(
281
 
                'st_old'        => $sort_days,
282
 
        ));
283
 
 
284
 
        $template->assign_vars(array(
285
 
                'TOPIC_TITLE'           => $topic_info['topic_title'],
286
 
                'U_VIEW_TOPIC'          => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topic_info['forum_id'] . '&amp;t=' . $topic_info['topic_id']),
287
 
 
288
 
                'TO_TOPIC_ID'           => $to_topic_id,
289
 
                'TO_TOPIC_INFO'         => ($to_topic_id) ? sprintf($user->lang['YOU_SELECTED_TOPIC'], $to_topic_id, '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_topic_info['forum_id'] . '&amp;t=' . $to_topic_id) . '">' . $to_topic_info['topic_title'] . '</a>') : '',
290
 
 
291
 
                'SPLIT_SUBJECT'         => $subject,
292
 
                'POSTS_PER_PAGE'        => $posts_per_page,
293
 
                'ACTION'                        => $action,
294
 
 
295
 
                'REPORTED_IMG'          => $user->img('icon_topic_reported', 'POST_REPORTED', false, true),
296
 
                'UNAPPROVED_IMG'        => $user->img('icon_topic_unapproved', 'POST_UNAPPROVED', false, true),
297
 
 
298
 
                'S_MCP_ACTION'          => "$url&amp;i=$id&amp;mode=$mode&amp;action=$action&amp;start=$start",
299
 
                'S_FORUM_SELECT'        => ($to_forum_id) ? make_forum_select($to_forum_id, false, false, true, true, true) : make_forum_select($topic_info['forum_id'], false, false, true, true, true),
300
 
                'S_CAN_SPLIT'           => ($auth->acl_get('m_split', $topic_info['forum_id'])) ? true : false,
301
 
                'S_CAN_MERGE'           => ($auth->acl_get('m_merge', $topic_info['forum_id'])) ? true : false,
302
 
                'S_CAN_DELETE'          => ($auth->acl_get('m_delete', $topic_info['forum_id'])) ? true : false,
303
 
                'S_CAN_APPROVE'         => ($has_unapproved_posts && $auth->acl_get('m_approve', $topic_info['forum_id'])) ? true : false,
304
 
                'S_CAN_LOCK'            => ($auth->acl_get('m_lock', $topic_info['forum_id'])) ? true : false,
305
 
                'S_CAN_REPORT'          => ($auth->acl_get('m_report', $topic_info['forum_id'])) ? true : false,
306
 
                'S_REPORT_VIEW'         => ($action == 'reports') ? true : false,
307
 
                'S_MERGE_VIEW'          => ($action == 'merge') ? true : false,
308
 
                'S_SPLIT_VIEW'          => ($action == 'split') ? true : false,
309
 
 
310
 
                'S_HIDDEN_FIELDS'       => $s_hidden_fields,
311
 
 
312
 
                'S_SHOW_TOPIC_ICONS'    => $s_topic_icons,
313
 
                'S_TOPIC_ICON'                  => $icon_id,
314
 
 
315
 
                'U_SELECT_TOPIC'        => "$url&amp;i=$id&amp;mode=forum_view&amp;action=merge_select" . (($forum_id) ? "&amp;f=$forum_id" : ''),
316
 
 
317
 
                'RETURN_TOPIC'          => sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$topic_info['forum_id']}&amp;t={$topic_info['topic_id']}&amp;start=$start") . '">', '</a>'),
318
 
                'RETURN_FORUM'          => sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", "f={$topic_info['forum_id']}&amp;start=$start") . '">', '</a>'),
319
 
 
320
 
                'PAGE_NUMBER'           => on_page($total, $posts_per_page, $start),
321
 
                'PAGINATION'            => (!$posts_per_page) ? '' : generate_pagination(append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&amp;t={$topic_info['topic_id']}&amp;mode=$mode&amp;action=$action&amp;to_topic_id=$to_topic_id&amp;posts_per_page=$posts_per_page&amp;st=$sort_days&amp;sk=$sort_key&amp;sd=$sort_dir"), $total, $posts_per_page, $start),
322
 
                'TOTAL_POSTS'           => ($total == 1) ? $user->lang['VIEW_TOPIC_POST'] : sprintf($user->lang['VIEW_TOPIC_POSTS'], $total),
323
 
        ));
324
 
}
325
 
 
326
 
/**
327
 
* Split topic
328
 
*/
329
 
function split_topic($action, $topic_id, $to_forum_id, $subject)
330
 
{
331
 
        global $db, $template, $user, $phpEx, $phpbb_root_path, $auth;
332
 
 
333
 
        $post_id_list   = request_var('post_id_list', array(0));
334
 
        $forum_id               = request_var('forum_id', 0);
335
 
        $start                  = request_var('start', 0);
336
 
 
337
 
        if (!sizeof($post_id_list))
338
 
        {
339
 
                $template->assign_var('MESSAGE', $user->lang['NO_POST_SELECTED']);
340
 
                return;
341
 
        }
342
 
 
343
 
        if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_split')))
344
 
        {
345
 
                return;
346
 
        }
347
 
 
348
 
        $post_id = $post_id_list[0];
349
 
        $post_info = get_post_data(array($post_id));
350
 
 
351
 
        if (!sizeof($post_info))
352
 
        {
353
 
                $template->assign_var('MESSAGE', $user->lang['NO_POST_SELECTED']);
354
 
                return;
355
 
        }
356
 
 
357
 
        $post_info = $post_info[$post_id];
358
 
        $subject = trim($subject);
359
 
 
360
 
        // Make some tests
361
 
        if (!$subject)
362
 
        {
363
 
                $template->assign_var('MESSAGE', $user->lang['EMPTY_SUBJECT']);
364
 
                return;
365
 
        }
366
 
 
367
 
        if ($to_forum_id <= 0)
368
 
        {
369
 
                $template->assign_var('MESSAGE', $user->lang['NO_DESTINATION_FORUM']);
370
 
                return;
371
 
        }
372
 
 
373
 
        $forum_info = get_forum_data(array($to_forum_id), 'm_split');
374
 
 
375
 
        if (!sizeof($forum_info))
376
 
        {
377
 
                $template->assign_var('MESSAGE', $user->lang['NOT_MODERATOR']);
378
 
                return;
379
 
        }
380
 
 
381
 
        $forum_info = $forum_info[$to_forum_id];
382
 
 
383
 
        if ($forum_info['forum_type'] != FORUM_POST)
384
 
        {
385
 
                $template->assign_var('MESSAGE', $user->lang['FORUM_NOT_POSTABLE']);
386
 
                return;
387
 
        }
388
 
 
389
 
        $redirect = request_var('redirect', build_url(array('_f_', 'quickmod')));
390
 
 
391
 
        $s_hidden_fields = build_hidden_fields(array(
392
 
                'i'                             => 'main',
393
 
                'post_id_list'  => $post_id_list,
394
 
                'f'                             => $forum_id,
395
 
                'mode'                  => 'topic_view',
396
 
                'start'                 => $start,
397
 
                'action'                => $action,
398
 
                't'                             => $topic_id,
399
 
                'redirect'              => $redirect,
400
 
                'subject'               => $subject,
401
 
                'to_forum_id'   => $to_forum_id,
402
 
                'icon'                  => request_var('icon', 0))
403
 
        );
404
 
        $success_msg = $return_link = '';
405
 
 
406
 
        if (confirm_box(true))
407
 
        {
408
 
                if ($action == 'split_beyond')
409
 
                {
410
 
                        $sort_days = $total = 0;
411
 
                        $sort_key = $sort_dir = '';
412
 
                        $sort_by_sql = $sort_order_sql = array();
413
 
                        mcp_sorting('viewtopic', $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $forum_id, $topic_id);
414
 
 
415
 
                        $limit_time_sql = ($sort_days) ? 'AND t.topic_last_post_time >= ' . (time() - ($sort_days * 86400)) : '';
416
 
 
417
 
                        if ($sort_order_sql[0] == 'u')
418
 
                        {
419
 
                                $sql = 'SELECT p.post_id, p.forum_id, p.post_approved
420
 
                                        FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . " u
421
 
                                        WHERE p.topic_id = $topic_id
422
 
                                                AND p.poster_id = u.user_id
423
 
                                                $limit_time_sql
424
 
                                        ORDER BY $sort_order_sql";
425
 
                        }
426
 
                        else
427
 
                        {
428
 
                                $sql = 'SELECT p.post_id, p.forum_id, p.post_approved
429
 
                                        FROM ' . POSTS_TABLE . " p
430
 
                                        WHERE p.topic_id = $topic_id
431
 
                                                $limit_time_sql
432
 
                                        ORDER BY $sort_order_sql";
433
 
                        }
434
 
                        $result = $db->sql_query_limit($sql, 0, $start);
435
 
 
436
 
                        $store = false;
437
 
                        $post_id_list = array();
438
 
                        while ($row = $db->sql_fetchrow($result))
439
 
                        {
440
 
                                // If split from selected post (split_beyond), we split the unapproved items too.
441
 
                                if (!$row['post_approved'] && !$auth->acl_get('m_approve', $row['forum_id']))
442
 
                                {
443
 
//                                      continue;
444
 
                                }
445
 
 
446
 
                                // Start to store post_ids as soon as we see the first post that was selected
447
 
                                if ($row['post_id'] == $post_id)
448
 
                                {
449
 
                                        $store = true;
450
 
                                }
451
 
 
452
 
                                if ($store)
453
 
                                {
454
 
                                        $post_id_list[] = $row['post_id'];
455
 
                                }
456
 
                        }
457
 
                        $db->sql_freeresult($result);
458
 
                }
459
 
 
460
 
                if (!sizeof($post_id_list))
461
 
                {
462
 
                        trigger_error('NO_POST_SELECTED');
463
 
                }
464
 
 
465
 
                $icon_id = request_var('icon', 0);
466
 
 
467
 
                $sql_ary = array(
468
 
                        'forum_id'              => $to_forum_id,
469
 
                        'topic_title'   => $subject,
470
 
                        'icon_id'               => $icon_id,
471
 
                        'topic_approved'=> 1
472
 
                );
473
 
 
474
 
                $sql = 'INSERT INTO ' . TOPICS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
475
 
                $db->sql_query($sql);
476
 
 
477
 
                $to_topic_id = $db->sql_nextid();
478
 
                move_posts($post_id_list, $to_topic_id);
479
 
 
480
 
                $topic_info = get_topic_data(array($topic_id));
481
 
                $topic_info = $topic_info[$topic_id];
482
 
 
483
 
                add_log('mod', $to_forum_id, $to_topic_id, 'LOG_SPLIT_DESTINATION', $subject);
484
 
                add_log('mod', $forum_id, $topic_id, 'LOG_SPLIT_SOURCE', $topic_info['topic_title']);
485
 
 
486
 
                // Change topic title of first post
487
 
                $sql = 'UPDATE ' . POSTS_TABLE . "
488
 
                        SET post_subject = '" . $db->sql_escape($subject) . "'
489
 
                        WHERE post_id = {$post_id_list[0]}";
490
 
                $db->sql_query($sql);
491
 
 
492
 
                $success_msg = 'TOPIC_SPLIT_SUCCESS';
493
 
 
494
 
                // Link back to both topics
495
 
                $return_link = sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&amp;t=' . $post_info['topic_id']) . '">', '</a>') . '<br /><br />' . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&amp;t=' . $to_topic_id) . '">', '</a>');
496
 
        }
497
 
        else
498
 
        {
499
 
                confirm_box(false, ($action == 'split_all') ? 'SPLIT_TOPIC_ALL' : 'SPLIT_TOPIC_BEYOND', $s_hidden_fields);
500
 
        }
501
 
 
502
 
        $redirect = request_var('redirect', "index.$phpEx");
503
 
        $redirect = reapply_sid($redirect);
504
 
 
505
 
        if (!$success_msg)
506
 
        {
507
 
                return;
508
 
        }
509
 
        else
510
 
        {
511
 
                meta_refresh(3, append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$to_forum_id&amp;t=$to_topic_id"));
512
 
                trigger_error($user->lang[$success_msg] . '<br /><br />' . $return_link);
513
 
        }
514
 
}
515
 
 
516
 
/**
517
 
* Merge selected posts into selected topic
518
 
*/
519
 
function merge_posts($topic_id, $to_topic_id)
520
 
{
521
 
        global $db, $template, $user, $phpEx, $phpbb_root_path, $auth;
522
 
 
523
 
        if (!$to_topic_id)
524
 
        {
525
 
                $template->assign_var('MESSAGE', $user->lang['NO_FINAL_TOPIC_SELECTED']);
526
 
                return;
527
 
        }
528
 
 
529
 
        $topic_data = get_topic_data(array($to_topic_id), 'm_merge');
530
 
 
531
 
        if (!sizeof($topic_data))
532
 
        {
533
 
                $template->assign_var('MESSAGE', $user->lang['NO_FINAL_TOPIC_SELECTED']);
534
 
                return;
535
 
        }
536
 
 
537
 
        $topic_data = $topic_data[$to_topic_id];
538
 
 
539
 
        $post_id_list   = request_var('post_id_list', array(0));
540
 
        $start                  = request_var('start', 0);
541
 
 
542
 
        if (!sizeof($post_id_list))
543
 
        {
544
 
                $template->assign_var('MESSAGE', $user->lang['NO_POST_SELECTED']);
545
 
                return;
546
 
        }
547
 
 
548
 
        if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_merge')))
549
 
        {
550
 
                return;
551
 
        }
552
 
 
553
 
        $redirect = request_var('redirect', build_url(array('_f_', 'quickmod')));
554
 
 
555
 
        $s_hidden_fields = build_hidden_fields(array(
556
 
                'i'                             => 'main',
557
 
                'post_id_list'  => $post_id_list,
558
 
                'to_topic_id'   => $to_topic_id,
559
 
                'mode'                  => 'topic_view',
560
 
                'action'                => 'merge_posts',
561
 
                'start'                 => $start,
562
 
                'redirect'              => $redirect,
563
 
                't'                             => $topic_id)
564
 
        );
565
 
        $success_msg = $return_link = '';
566
 
 
567
 
        if (confirm_box(true))
568
 
        {
569
 
                $to_forum_id = $topic_data['forum_id'];
570
 
 
571
 
                move_posts($post_id_list, $to_topic_id);
572
 
                add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']);
573
 
 
574
 
                // Message and return links
575
 
                $success_msg = 'POSTS_MERGED_SUCCESS';
576
 
 
577
 
                // Does the original topic still exist? If yes, link back to it
578
 
                $sql = 'SELECT forum_id
579
 
                        FROM ' . TOPICS_TABLE . '
580
 
                        WHERE topic_id = ' . $topic_id;
581
 
                $result = $db->sql_query_limit($sql, 1);
582
 
                $row = $db->sql_fetchrow($result);
583
 
                $db->sql_freeresult($result);
584
 
 
585
 
                if ($row)
586
 
                {
587
 
                        $return_link .= sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&amp;t=' . $topic_id) . '">', '</a>');
588
 
                }
589
 
                else
590
 
                {
591
 
                        // If the topic no longer exist, we will update the topic watch table.
592
 
                        // To not let it error out on users watching both topics, we just return on an error...
593
 
                        $db->sql_return_on_error(true);
594
 
                        $db->sql_query('UPDATE ' . TOPICS_WATCH_TABLE . ' SET topic_id = ' . (int) $to_topic_id . ' WHERE topic_id = ' . (int) $topic_id);
595
 
                        $db->sql_return_on_error(false);
596
 
 
597
 
                        $db->sql_query('DELETE FROM ' . TOPICS_WATCH_TABLE . ' WHERE topic_id = ' . (int) $topic_id);
598
 
                }
599
 
 
600
 
                // Link to the new topic
601
 
                $return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&amp;t=' . $to_topic_id) . '">', '</a>');
602
 
        }
603
 
        else
604
 
        {
605
 
                confirm_box(false, 'MERGE_POSTS', $s_hidden_fields);
606
 
        }
607
 
 
608
 
        $redirect = request_var('redirect', "index.$phpEx");
609
 
        $redirect = reapply_sid($redirect);
610
 
 
611
 
        if (!$success_msg)
612
 
        {
613
 
                return;
614
 
        }
615
 
        else
616
 
        {
617
 
                meta_refresh(3, append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$to_forum_id&amp;t=$to_topic_id"));
618
 
                trigger_error($user->lang[$success_msg] . '<br /><br />' . $return_link);
619
 
        }
620
 
}
621
 
 
622
 
?>
 
 
b'\\ No newline at end of file'