Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

mcp_topic.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 19.50 KiB


001  <?php
002  /**
003  *
004  * @package mcp
005  * @version $Id$
006  * @copyright (c) 2005 phpBB Group
007  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
008  *
009  */
010   
011  /**
012  * @ignore
013  */
014  if (!defined('IN_PHPBB'))
015  {
016      exit;
017  }
018   
019  /**
020  * View topic in MCP
021  */
022  function mcp_topic_view($id, $mode, $action)
023  {
024      global $phpEx, $phpbb_root_path, $config;
025      global $template, $db, $user, $auth, $cache;
026   
027      $url = append_sid("{$phpbb_root_path}mcp.$phpEx?" . extra_url());
028   
029      $user->add_lang('viewtopic');
030   
031      $topic_id = request_var('t', 0);
032      $topic_info = get_topic_data(array($topic_id), false, true);
033   
034      if (!sizeof($topic_info))
035      {
036          trigger_error('TOPIC_NOT_EXIST');
037      }
038   
039      $topic_info = $topic_info[$topic_id];
040   
041      // Set up some vars
042      $icon_id        = request_var('icon', 0);
043      $subject        = utf8_normalize_nfc(request_var('subject', '', true));
044      $start            = request_var('start', 0);
045      $sort_days_old    = request_var('st_old', 0);
046      $forum_id        = request_var('f', 0);
047      $to_topic_id    = request_var('to_topic_id', 0);
048      $to_forum_id    = request_var('to_forum_id', 0);
049      $post_id_list    = request_var('post_id_list', array(0));
050      $sort            = isset($_POST['sort']) ? true : false;
051   
052      // Split Topic?
053      if ($action == 'split_all' || $action == 'split_beyond')
054      {
055          if (!$sort)
056          {
057              split_topic($action, $topic_id, $to_forum_id, $subject);
058          }
059          $action = 'split';
060      }
061   
062      // Merge Posts?
063      if ($action == 'merge_posts')
064      {
065          if (!$sort)
066          {
067              merge_posts($topic_id, $to_topic_id);
068          }
069          $action = 'merge';
070      }
071   
072      if ($action == 'split' && !$subject)
073      {
074          $subject = $topic_info['topic_title'];
075      }
076   
077      // Approve posts?
078      if ($action == 'approve' && $auth->acl_get('m_approve', $topic_info['forum_id']))
079      {
080          include($phpbb_root_path . 'includes/mcp/mcp_queue.' . $phpEx);
081          include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
082          include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
083   
084          if (!sizeof($post_id_list))
085          {
086              trigger_error('NO_POST_SELECTED');
087          }
088   
089          if (!$sort)
090          {
091              approve_post($post_id_list, $id, $mode);
092          }
093      }
094   
095      // Jumpbox, sort selects and that kind of things
096      make_jumpbox($url . "&amp;i=$id&amp;mode=forum_view", $topic_info['forum_id'], false, 'm_', true);
097      $where_sql = ($action == 'reports') ? 'WHERE post_reported = 1 AND ' : 'WHERE';
098   
099      $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  ?>