1<?php 2/*************************************************************************** 3 * modcp.php 4 * ------------------- 5 * begin : July 4, 2001 6 * copyright : (C) 2001 The phpBB Group 7 * email : support@phpbb.com 8 * 9 * $Id: modcp.php 6772 2006-12-16 13:11:28Z acydburn $ 10 * 11 ***************************************************************************/ 12 13/*************************************************************************** 14 * 15 * This program is free software; you can redistribute it and/or modify 16 * it under the terms of the GNU General Public License as published by 17 * the Free Software Foundation; either version 2 of the License, or 18 * (at your option) any later version. 19 * 20 ***************************************************************************/ 21 22/** 23 * Moderator Control Panel 24 * 25 * From this 'Control Panel' the moderator of a forum will be able to do 26 * mass topic operations (locking/unlocking/moving/deleteing), and it will 27 * provide an interface to do quick locking/unlocking/moving/deleting of 28 * topics via the moderator operations buttons on all of the viewtopic pages. 29 */ 30 31define('IN_PHPBB', true); 32$phpbb_root_path = './'; 33include($phpbb_root_path . 'extension.inc'); 34include($phpbb_root_path . 'common.'.$phpEx); 35include($phpbb_root_path . 'includes/bbcode.'.$phpEx); 36include($phpbb_root_path . 'includes/functions_admin.'.$phpEx); 37 38// 39// Obtain initial var settings 40// 41if ( isset($HTTP_GET_VARS[POST_FORUM_URL]) || isset($HTTP_POST_VARS[POST_FORUM_URL]) ) 42{ 43 $forum_id = (isset($HTTP_POST_VARS[POST_FORUM_URL])) ? intval($HTTP_POST_VARS[POST_FORUM_URL]) : intval($HTTP_GET_VARS[POST_FORUM_URL]); 44} 45else 46{ 47 $forum_id = ''; 48} 49 50if ( isset($HTTP_GET_VARS[POST_POST_URL]) || isset($HTTP_POST_VARS[POST_POST_URL]) ) 51{ 52 $post_id = (isset($HTTP_POST_VARS[POST_POST_URL])) ? intval($HTTP_POST_VARS[POST_POST_URL]) : intval($HTTP_GET_VARS[POST_POST_URL]); 53} 54else 55{ 56 $post_id = ''; 57} 58 59if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) || isset($HTTP_POST_VARS[POST_TOPIC_URL]) ) 60{ 61 $topic_id = (isset($HTTP_POST_VARS[POST_TOPIC_URL])) ? intval($HTTP_POST_VARS[POST_TOPIC_URL]) : intval($HTTP_GET_VARS[POST_TOPIC_URL]); 62} 63else 64{ 65 $topic_id = ''; 66} 67 68$confirm = ( $HTTP_POST_VARS['confirm'] ) ? TRUE : 0; 69 70// 71// Continue var definitions 72// 73$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0; 74$start = ($start < 0) ? 0 : $start; 75 76$delete = ( isset($HTTP_POST_VARS['delete']) ) ? TRUE : FALSE; 77$move = ( isset($HTTP_POST_VARS['move']) ) ? TRUE : FALSE; 78$lock = ( isset($HTTP_POST_VARS['lock']) ) ? TRUE : FALSE; 79$unlock = ( isset($HTTP_POST_VARS['unlock']) ) ? TRUE : FALSE; 80 81if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) ) 82{ 83 $mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode']; 84 $mode = htmlspecialchars($mode); 85} 86else 87{ 88 if ( $delete ) 89 { 90 $mode = 'delete'; 91 } 92 else if ( $move ) 93 { 94 $mode = 'move'; 95 } 96 else if ( $lock ) 97 { 98 $mode = 'lock'; 99 } 100 else if ( $unlock ) 101 { 102 $mode = 'unlock'; 103 } 104 else 105 { 106 $mode = ''; 107 } 108} 109 110// session id check 111if (!empty($HTTP_POST_VARS['sid']) || !empty($HTTP_GET_VARS['sid'])) 112{ 113 $sid = (!empty($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : $HTTP_GET_VARS['sid']; 114} 115else 116{ 117 $sid = ''; 118} 119 120// 121// Obtain relevant data 122// 123if ( !empty($topic_id) ) 124{ 125 $sql = "SELECT f.forum_id, f.forum_name, f.forum_topics 126 FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f 127 WHERE t.topic_id = " . $topic_id . " 128 AND f.forum_id = t.forum_id"; 129 if ( !($result = $db->sql_query($sql)) ) 130 { 131 message_die(GENERAL_MESSAGE, 'Topic_post_not_exist'); 132 } 133 $topic_row = $db->sql_fetchrow($result); 134 135 if (!$topic_row) 136 { 137 message_die(GENERAL_MESSAGE, 'Topic_post_not_exist'); 138 } 139 140 $forum_topics = ( $topic_row['forum_topics'] == 0 ) ? 1 : $topic_row['forum_topics']; 141 $forum_id = $topic_row['forum_id']; 142 $forum_name = $topic_row['forum_name']; 143} 144else if ( !empty($forum_id) ) 145{ 146 $sql = "SELECT forum_name, forum_topics 147 FROM " . FORUMS_TABLE . " 148 WHERE forum_id = " . $forum_id; 149 if ( !($result = $db->sql_query($sql)) ) 150 { 151 message_die(GENERAL_MESSAGE, 'Forum_not_exist'); 152 } 153 $topic_row = $db->sql_fetchrow($result); 154 155 if (!$topic_row) 156 { 157 message_die(GENERAL_MESSAGE, 'Forum_not_exist'); 158 } 159 160 $forum_topics = ( $topic_row['forum_topics'] == 0 ) ? 1 : $topic_row['forum_topics']; 161 $forum_name = $topic_row['forum_name']; 162} 163else 164{ 165 message_die(GENERAL_MESSAGE, 'Forum_not_exist'); 166} 167 168// 169// Start session management 170// 171$userdata = session_pagestart($user_ip, $forum_id); 172init_userprefs($userdata); 173// 174// End session management 175// 176 177// session id check 178if ($sid == '' || $sid != $userdata['session_id']) 179{ 180 message_die(GENERAL_ERROR, 'Invalid_session'); 181} 182 183// 184// Check if user did or did not confirm 185// If they did not, forward them to the last page they were on 186// 187if ( isset($HTTP_POST_VARS['cancel']) ) 188{ 189 if ( $topic_id ) 190 { 191 $redirect = "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id"; 192 } 193 else if ( $forum_id ) 194 { 195 $redirect = "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"; 196 } 197 else 198 { 199 $redirect = "index.$phpEx"; 200 } 201 202 redirect(append_sid($redirect, true)); 203} 204 205// 206// Start auth check 207// 208$is_auth = auth(AUTH_ALL, $forum_id, $userdata); 209 210if ( !$is_auth['auth_mod'] ) 211{ 212 message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']); 213} 214// 215// End Auth Check 216// 217 218// 219// Do major work ... 220// 221switch( $mode ) 222{ 223 case 'delete': 224 if (!$is_auth['auth_delete']) 225 { 226 message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_auth_delete'], $is_auth['auth_delete_type'])); 227 } 228 229 $page_title = $lang['Mod_CP']; 230 include($phpbb_root_path . 'includes/page_header.'.$phpEx); 231 232 if ( $confirm ) 233 { 234 if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) ) 235 { 236 message_die(GENERAL_MESSAGE, $lang['None_selected']); 237 } 238 239 include($phpbb_root_path . 'includes/functions_search.'.$phpEx); 240 241 $topics = ( isset($HTTP_POST_VARS['topic_id_list']) ) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id); 242 243 $topic_id_sql = ''; 244 for($i = 0; $i < count($topics); $i++) 245 { 246 $topic_id_sql .= ( ( $topic_id_sql != '' ) ? ', ' : '' ) . intval($topics[$i]); 247 } 248 249 $sql = "SELECT topic_id 250 FROM " . TOPICS_TABLE . " 251 WHERE topic_id IN ($topic_id_sql) 252 AND forum_id = $forum_id"; 253 if ( !($result = $db->sql_query($sql)) ) 254 { 255 message_die(GENERAL_ERROR, 'Could not get topic id information', '', __LINE__, __FILE__, $sql); 256 } 257 258 $topic_id_sql = ''; 259 while ($row = $db->sql_fetchrow($result)) 260 { 261 $topic_id_sql .= (($topic_id_sql != '') ? ', ' : '') . intval($row['topic_id']); 262 } 263 $db->sql_freeresult($result); 264 265 if ( $topic_id_sql == '') 266 { 267 message_die(GENERAL_MESSAGE, $lang['None_selected']); 268 } 269 270 $sql = "SELECT poster_id, COUNT(post_id) AS posts 271 FROM " . POSTS_TABLE . " 272 WHERE topic_id IN ($topic_id_sql) 273 GROUP BY poster_id"; 274 if ( !($result = $db->sql_query($sql)) ) 275 { 276 message_die(GENERAL_ERROR, 'Could not get poster id information', '', __LINE__, __FILE__, $sql); 277 } 278 279 $count_sql = array(); 280 while ( $row = $db->sql_fetchrow($result) ) 281 { 282 $count_sql[] = "UPDATE " . USERS_TABLE . " 283 SET user_posts = user_posts - " . $row['posts'] . " 284 WHERE user_id = " . $row['poster_id']; 285 } 286 $db->sql_freeresult($result); 287 288 if ( sizeof($count_sql) ) 289 { 290 for($i = 0; $i < sizeof($count_sql); $i++) 291 { 292 if ( !$db->sql_query($count_sql[$i]) ) 293 { 294 message_die(GENERAL_ERROR, 'Could not update user post count information', '', __LINE__, __FILE__, $sql); 295 } 296 } 297 } 298 299 $sql = "SELECT post_id 300 FROM " . POSTS_TABLE . " 301 WHERE topic_id IN ($topic_id_sql)"; 302 if ( !($result = $db->sql_query($sql)) ) 303 { 304 message_die(GENERAL_ERROR, 'Could not get post id information', '', __LINE__, __FILE__, $sql); 305 } 306 307 $post_id_sql = ''; 308 while ( $row = $db->sql_fetchrow($result) ) 309 { 310 $post_id_sql .= ( ( $post_id_sql != '' ) ? ', ' : '' ) . intval($row['post_id']); 311 } 312 $db->sql_freeresult($result); 313 314 $sql = "SELECT vote_id 315 FROM " . VOTE_DESC_TABLE . " 316 WHERE topic_id IN ($topic_id_sql)"; 317 if ( !($result = $db->sql_query($sql)) ) 318 { 319 message_die(GENERAL_ERROR, 'Could not get vote id information', '', __LINE__, __FILE__, $sql); 320 } 321 322 $vote_id_sql = ''; 323 while ( $row = $db->sql_fetchrow($result) ) 324 { 325 $vote_id_sql .= ( ( $vote_id_sql != '' ) ? ', ' : '' ) . $row['vote_id']; 326 } 327 $db->sql_freeresult($result); 328 329 // 330 // Got all required info so go ahead and start deleting everything 331 // 332 $sql = "DELETE 333 FROM " . TOPICS_TABLE . " 334 WHERE topic_id IN ($topic_id_sql) 335 OR topic_moved_id IN ($topic_id_sql)"; 336 if ( !$db->sql_query($sql, BEGIN_TRANSACTION) ) 337 { 338 message_die(GENERAL_ERROR, 'Could not delete topics', '', __LINE__, __FILE__, $sql); 339 } 340 341 if ( $post_id_sql != '' ) 342 { 343 $sql = "DELETE 344 FROM " . POSTS_TABLE . " 345 WHERE post_id IN ($post_id_sql)"; 346 if ( !$db->sql_query($sql) ) 347 { 348 message_die(GENERAL_ERROR, 'Could not delete posts', '', __LINE__, __FILE__, $sql); 349 } 350 351 $sql = "DELETE 352 FROM " . POSTS_TEXT_TABLE . " 353 WHERE post_id IN ($post_id_sql)"; 354 if ( !$db->sql_query($sql) ) 355 { 356 message_die(GENERAL_ERROR, 'Could not delete posts text', '', __LINE__, __FILE__, $sql); 357 } 358 359 remove_search_post($post_id_sql); 360 } 361 362 if ( $vote_id_sql != '' ) 363 { 364 $sql = "DELETE 365 FROM " . VOTE_DESC_TABLE . " 366 WHERE vote_id IN ($vote_id_sql)"; 367 if ( !$db->sql_query($sql) ) 368 { 369 message_die(GENERAL_ERROR, 'Could not delete vote descriptions', '', __LINE__, __FILE__, $sql); 370 } 371 372 $sql = "DELETE 373 FROM " . VOTE_RESULTS_TABLE . " 374 WHERE vote_id IN ($vote_id_sql)"; 375 if ( !$db->sql_query($sql) ) 376 { 377 message_die(GENERAL_ERROR, 'Could not delete vote results', '', __LINE__, __FILE__, $sql); 378 } 379 380 $sql = "DELETE 381 FROM " . VOTE_USERS_TABLE . " 382 WHERE vote_id IN ($vote_id_sql)"; 383 if ( !$db->sql_query($sql) ) 384 { 385 message_die(GENERAL_ERROR, 'Could not delete vote users', '', __LINE__, __FILE__, $sql); 386 } 387 } 388 389 $sql = "DELETE 390 FROM " . TOPICS_WATCH_TABLE . " 391 WHERE topic_id IN ($topic_id_sql)"; 392 if ( !$db->sql_query($sql, END_TRANSACTION) ) 393 { 394 message_die(GENERAL_ERROR, 'Could not delete watched post list', '', __LINE__, __FILE__, $sql); 395 } 396 397 sync('forum', $forum_id); 398 399 if ( !empty($topic_id) ) 400 { 401 $redirect_page = "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id']; 402 $l_redirect = sprintf($lang['Click_return_forum'], '<a href="' . $redirect_page . '">', '</a>'); 403 } 404 else 405 { 406 $redirect_page = "modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id']; 407 $l_redirect = sprintf($lang['Click_return_modcp'], '<a href="' . $redirect_page . '">', '</a>'); 408 } 409 410 $template->assign_vars(array( 411 'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">') 412 ); 413 414 message_die(GENERAL_MESSAGE, $lang['Topics_Removed'] . '<br /><br />' . $l_redirect); 415 } 416 else 417 { 418 // Not confirmed, show confirmation message 419 if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) ) 420 { 421 message_die(GENERAL_MESSAGE, $lang['None_selected']); 422 } 423 424 $hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />'; 425 426 if ( isset($HTTP_POST_VARS['topic_id_list']) ) 427 { 428 $topics = $HTTP_POST_VARS['topic_id_list']; 429 for($i = 0; $i < count($topics); $i++) 430 { 431 $hidden_fields .= '<input type="hidden" name="topic_id_list[]" value="' . intval($topics[$i]) . '" />'; 432 } 433 } 434 else 435 { 436 $hidden_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />'; 437 } 438 439 // 440 // Set template files 441 // 442 $template->set_filenames(array( 443 'confirm' => 'confirm_body.tpl') 444 ); 445 446 $template->assign_vars(array( 447 'MESSAGE_TITLE' => $lang['Confirm'], 448 'MESSAGE_TEXT' => $lang['Confirm_delete_topic'], 449 450 'L_YES' => $lang['Yes'], 451 'L_NO' => $lang['No'], 452 453 'S_CONFIRM_ACTION' => append_sid("modcp.$phpEx"), 454 'S_HIDDEN_FIELDS' => $hidden_fields) 455 ); 456 457 $template->pparse('confirm'); 458 459 include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 460 } 461 break; 462 463 case 'move': 464 $page_title = $lang['Mod_CP']; 465 include($phpbb_root_path . 'includes/page_header.'.$phpEx); 466 467 if ( $confirm ) 468 { 469 if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) ) 470 { 471 message_die(GENERAL_MESSAGE, $lang['None_selected']); 472 } 473 474 $new_forum_id = intval($HTTP_POST_VARS['new_forum']); 475 $old_forum_id = $forum_id; 476 477 $sql = 'SELECT forum_id FROM ' . FORUMS_TABLE . ' 478 WHERE forum_id = ' . $new_forum_id; 479 if ( !($result = $db->sql_query($sql)) ) 480 { 481 message_die(GENERAL_ERROR, 'Could not select from forums table', '', __LINE__, __FILE__, $sql); 482 } 483 484 if (!$db->sql_fetchrow($result)) 485 { 486 message_die(GENERAL_MESSAGE, 'New forum does not exist'); 487 } 488 489 $db->sql_freeresult($result); 490 491 if ( $new_forum_id != $old_forum_id ) 492 { 493 $topics = ( isset($HTTP_POST_VARS['topic_id_list']) ) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id); 494 495 $topic_list = ''; 496 for($i = 0; $i < count($topics); $i++) 497 { 498 $topic_list .= ( ( $topic_list != '' ) ? ', ' : '' ) . intval($topics[$i]); 499 } 500 501 $sql = "SELECT * 502 FROM " . TOPICS_TABLE . " 503 WHERE topic_id IN ($topic_list) 504 AND forum_id = $old_forum_id 505 AND topic_status <> " . TOPIC_MOVED; 506 if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) ) 507 { 508 message_die(GENERAL_ERROR, 'Could not select from topic table', '', __LINE__, __FILE__, $sql); 509 } 510 511 $row = $db->sql_fetchrowset($result); 512 $db->sql_freeresult($result); 513 514 for($i = 0; $i < count($row); $i++) 515 { 516 $topic_id = $row[$i]['topic_id']; 517 518 if ( isset($HTTP_POST_VARS['move_leave_shadow']) ) 519 { 520 // Insert topic in the old forum that indicates that the forum has moved. 521 $sql = "INSERT INTO " . TOPICS_TABLE . " (forum_id, topic_title, topic_poster, topic_time, topic_status, topic_type, topic_vote, topic_views, topic_replies, topic_first_post_id, topic_last_post_id, topic_moved_id) 522 VALUES ($old_forum_id, '" . addslashes(str_replace("\'", "''", $row[$i]['topic_title'])) . "', '" . str_replace("\'", "''", $row[$i]['topic_poster']) . "', " . $row[$i]['topic_time'] . ", " . TOPIC_MOVED . ", " . POST_NORMAL . ", " . $row[$i]['topic_vote'] . ", " . $row[$i]['topic_views'] . ", " . $row[$i]['topic_replies'] . ", " . $row[$i]['topic_first_post_id'] . ", " . $row[$i]['topic_last_post_id'] . ", $topic_id)"; 523 if ( !$db->sql_query($sql) ) 524 { 525 message_die(GENERAL_ERROR, 'Could not insert shadow topic', '', __LINE__, __FILE__, $sql); 526 } 527 } 528 529 $sql = "UPDATE " . TOPICS_TABLE . " 530 SET forum_id = $new_forum_id 531 WHERE topic_id = $topic_id"; 532 if ( !$db->sql_query($sql) ) 533 { 534 message_die(GENERAL_ERROR, 'Could not update old topic', '', __LINE__, __FILE__, $sql); 535 } 536 537 $sql = "UPDATE " . POSTS_TABLE . " 538 SET forum_id = $new_forum_id 539 WHERE topic_id = $topic_id"; 540 if ( !$db->sql_query($sql) ) 541 { 542 message_die(GENERAL_ERROR, 'Could not update post topic ids', '', __LINE__, __FILE__, $sql); 543 } 544 } 545 546 // Sync the forum indexes 547 sync('forum', $new_forum_id); 548 sync('forum', $old_forum_id); 549 550 $message = $lang['Topics_Moved'] . '<br /><br />'; 551 552 } 553 else 554 { 555 $message = $lang['No_Topics_Moved'] . '<br /><br />'; 556 } 557 558 if ( !empty($topic_id) ) 559 { 560 $redirect_page = "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&sid=" . $userdata['session_id']; 561 $message .= sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>'); 562 } 563 else 564 { 565 $redirect_page = "modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id']; 566 $message .= sprintf($lang['Click_return_modcp'], '<a href="' . $redirect_page . '">', '</a>'); 567 } 568 569 $message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . "viewforum.$phpEx?" . POST_FORUM_URL . "=$old_forum_id&sid=" . $userdata['session_id'] . '">', '</a>'); 570 571 $template->assign_vars(array( 572 'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">') 573 ); 574 575 message_die(GENERAL_MESSAGE, $message); 576 } 577 else 578 { 579 if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) ) 580 { 581 message_die(GENERAL_MESSAGE, $lang['None_selected']); 582 } 583 584 $hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />'; 585 586 if ( isset($HTTP_POST_VARS['topic_id_list']) ) 587 { 588 $topics = $HTTP_POST_VARS['topic_id_list']; 589 590 for($i = 0; $i < count($topics); $i++) 591 { 592 $hidden_fields .= '<input type="hidden" name="topic_id_list[]" value="' . intval($topics[$i]) . '" />'; 593 } 594 } 595 else 596 { 597 $hidden_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />'; 598 } 599 600 // 601 // Set template files 602 // 603 $template->set_filenames(array( 604 'movetopic' => 'modcp_move.tpl') 605 ); 606 607 $template->assign_vars(array( 608 'MESSAGE_TITLE' => $lang['Confirm'], 609 'MESSAGE_TEXT' => $lang['Confirm_move_topic'], 610 611 'L_MOVE_TO_FORUM' => $lang['Move_to_forum'], 612 'L_LEAVESHADOW' => $lang['Leave_shadow_topic'], 613 'L_YES' => $lang['Yes'], 614 'L_NO' => $lang['No'], 615 616 'S_FORUM_SELECT' => make_forum_select('new_forum', $forum_id), 617 'S_MODCP_ACTION' => append_sid("modcp.$phpEx"), 618 'S_HIDDEN_FIELDS' => $hidden_fields) 619 ); 620 621 $template->pparse('movetopic'); 622 623 include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 624 } 625 break; 626 627 case 'lock': 628 if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) ) 629 { 630 message_die(GENERAL_MESSAGE, $lang['None_selected']); 631 } 632 633 $topics = ( isset($HTTP_POST_VARS['topic_id_list']) ) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id); 634 635 $topic_id_sql = ''; 636 for($i = 0; $i < count($topics); $i++) 637 { 638 $topic_id_sql .= ( ( $topic_id_sql != '' ) ? ', ' : '' ) . intval($topics[$i]); 639 } 640 641 $sql = "UPDATE " . TOPICS_TABLE . " 642 SET topic_status = " . TOPIC_LOCKED . " 643 WHERE topic_id IN ($topic_id_sql) 644 AND forum_id = $forum_id 645 AND topic_moved_id = 0"; 646 if ( !($result = $db->sql_query($sql)) ) 647 { 648 message_die(GENERAL_ERROR, 'Could not update topics table', '', __LINE__, __FILE__, $sql); 649 } 650 651 if ( !empty($topic_id) ) 652 { 653 $redirect_page = "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&sid=" . $userdata['session_id']; 654 $message = sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>'); 655 } 656 else 657 { 658 $redirect_page = "modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id']; 659 $message = sprintf($lang['Click_return_modcp'], '<a href="' . $redirect_page . '">', '</a>'); 660 } 661 662 $message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id'] . '">', '</a>'); 663 664 $template->assign_vars(array( 665 'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">') 666 ); 667 668 message_die(GENERAL_MESSAGE, $lang['Topics_Locked'] . '<br /><br />' . $message); 669 670 break; 671 672 case 'unlock': 673 if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) ) 674 { 675 message_die(GENERAL_MESSAGE, $lang['None_selected']); 676 } 677 678 $topics = ( isset($HTTP_POST_VARS['topic_id_list']) ) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id); 679 680 $topic_id_sql = ''; 681 for($i = 0; $i < count($topics); $i++) 682 { 683 $topic_id_sql .= ( ( $topic_id_sql != "") ? ', ' : '' ) . intval($topics[$i]); 684 } 685 686 $sql = "UPDATE " . TOPICS_TABLE . " 687 SET topic_status = " . TOPIC_UNLOCKED . " 688 WHERE topic_id IN ($topic_id_sql) 689 AND forum_id = $forum_id 690 AND topic_moved_id = 0"; 691 if ( !($result = $db->sql_query($sql)) ) 692 { 693 message_die(GENERAL_ERROR, 'Could not update topics table', '', __LINE__, __FILE__, $sql); 694 } 695 696 if ( !empty($topic_id) ) 697 { 698 $redirect_page = "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&sid=" . $userdata['session_id']; 699 $message = sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>'); 700 } 701 else 702 { 703 $redirect_page = "modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id']; 704 $message = sprintf($lang['Click_return_modcp'], '<a href="' . $redirect_page . '">', '</a>'); 705 } 706 707 $message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id'] . '">', '</a>'); 708 709 $template->assign_vars(array( 710 'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">') 711 ); 712 713 message_die(GENERAL_MESSAGE, $lang['Topics_Unlocked'] . '<br /><br />' . $message); 714 715 break; 716 717 case 'split': 718 $page_title = $lang['Mod_CP']; 719 include($phpbb_root_path . 'includes/page_header.'.$phpEx); 720 721 $post_id_sql = ''; 722 723 if (isset($HTTP_POST_VARS['split_type_all']) || isset($HTTP_POST_VARS['split_type_beyond'])) 724 { 725 $posts = $HTTP_POST_VARS['post_id_list']; 726 727 for ($i = 0; $i < count($posts); $i++) 728 { 729 $post_id_sql .= (($post_id_sql != '') ? ', ' : '') . intval($posts[$i]); 730 } 731 } 732 733 if ($post_id_sql != '') 734 { 735 $sql = "SELECT post_id 736 FROM " . POSTS_TABLE . " 737 WHERE post_id IN ($post_id_sql) 738 AND forum_id = $forum_id"; 739 if ( !($result = $db->sql_query($sql)) ) 740 { 741 message_die(GENERAL_ERROR, 'Could not get post id information', '', __LINE__, __FILE__, $sql); 742 } 743 744 $post_id_sql = ''; 745 while ($row = $db->sql_fetchrow($result)) 746 { 747 $post_id_sql .= (($post_id_sql != '') ? ', ' : '') . intval($row['post_id']); 748 } 749 $db->sql_freeresult($result); 750 751 if ($post_id_sql == '') 752 { 753 message_die(GENERAL_MESSAGE, $lang['None_selected']); 754 } 755 756 $sql = "SELECT post_id, poster_id, topic_id, post_time 757 FROM " . POSTS_TABLE . " 758 WHERE post_id IN ($post_id_sql) 759 ORDER BY post_time ASC"; 760 if (!($result = $db->sql_query($sql))) 761 { 762 message_die(GENERAL_ERROR, 'Could not get post information', '', __LINE__, __FILE__, $sql); 763 } 764 765 if ($row = $db->sql_fetchrow($result)) 766 { 767 $first_poster = $row['poster_id']; 768 $topic_id = $row['topic_id']; 769 $post_time = $row['post_time']; 770 771 $user_id_sql = ''; 772 $post_id_sql = ''; 773 do 774 { 775 $user_id_sql .= (($user_id_sql != '') ? ', ' : '') . intval($row['poster_id']); 776 $post_id_sql .= (($post_id_sql != '') ? ', ' : '') . intval($row['post_id']);; 777 } 778 while ($row = $db->sql_fetchrow($result)); 779 780 $post_subject = trim(htmlspecialchars($HTTP_POST_VARS['subject'])); 781 if (empty($post_subject)) 782 { 783 message_die(GENERAL_MESSAGE, $lang['Empty_subject']); 784 } 785 786 $new_forum_id = intval($HTTP_POST_VARS['new_forum_id']); 787 $topic_time = time(); 788 789 $sql = 'SELECT forum_id FROM ' . FORUMS_TABLE . ' 790 WHERE forum_id = ' . $new_forum_id; 791 if ( !($result = $db->sql_query($sql)) ) 792 { 793 message_die(GENERAL_ERROR, 'Could not select from forums table', '', __LINE__, __FILE__, $sql); 794 } 795 796 if (!$db->sql_fetchrow($result)) 797 { 798 message_die(GENERAL_MESSAGE, 'New forum does not exist'); 799 } 800 801 $db->sql_freeresult($result); 802 803 $sql = "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type) 804 VALUES ('" . str_replace("\'", "''", $post_subject) . "', $first_poster, " . $topic_time . ", $new_forum_id, " . TOPIC_UNLOCKED . ", " . POST_NORMAL . ")"; 805 if (!($db->sql_query($sql, BEGIN_TRANSACTION))) 806 { 807 message_die(GENERAL_ERROR, 'Could not insert new topic', '', __LINE__, __FILE__, $sql); 808 } 809 810 $new_topic_id = $db->sql_nextid(); 811 812 // Update topic watch table, switch users whose posts 813 // have moved, over to watching the new topic 814 $sql = "UPDATE " . TOPICS_WATCH_TABLE . " 815 SET topic_id = $new_topic_id 816 WHERE topic_id = $topic_id 817 AND user_id IN ($user_id_sql)"; 818 if (!$db->sql_query($sql)) 819 { 820 message_die(GENERAL_ERROR, 'Could not update topics watch table', '', __LINE__, __FILE__, $sql); 821 } 822 823 $sql_where = (!empty($HTTP_POST_VARS['split_type_beyond'])) ? " post_time >= $post_time AND topic_id = $topic_id" : "post_id IN ($post_id_sql)"; 824 825 $sql = "UPDATE " . POSTS_TABLE . " 826 SET topic_id = $new_topic_id, forum_id = $new_forum_id 827 WHERE $sql_where"; 828 if (!$db->sql_query($sql, END_TRANSACTION)) 829 { 830 message_die(GENERAL_ERROR, 'Could not update posts table', '', __LINE__, __FILE__, $sql); 831 } 832 833 sync('topic', $new_topic_id); 834 sync('topic', $topic_id); 835 sync('forum', $new_forum_id); 836 sync('forum', $forum_id); 837 838 $template->assign_vars(array( 839 'META' => '<meta http-equiv="refresh" content="3;url=' . "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&sid=" . $userdata['session_id'] . '">') 840 ); 841 842 $message = $lang['Topic_split'] . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&sid=" . $userdata['session_id'] . '">', '</a>'); 843 message_die(GENERAL_MESSAGE, $message); 844 } 845 } 846 else 847 { 848 // 849 // Set template files 850 // 851 $template->set_filenames(array( 852 'split_body' => 'modcp_split.tpl') 853 ); 854 855 $sql = "SELECT u.username, p.*, pt.post_text, pt.bbcode_uid, pt.post_subject, p.post_username 856 FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt 857 WHERE p.topic_id = $topic_id 858 AND p.poster_id = u.user_id 859 AND p.post_id = pt.post_id 860 ORDER BY p.post_time ASC"; 861 if ( !($result = $db->sql_query($sql)) ) 862 { 863 message_die(GENERAL_ERROR, 'Could not get topic/post information', '', __LINE__, __FILE__, $sql); 864 } 865 866 $s_hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" /><input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" /><input type="hidden" name="mode" value="split" />'; 867 868 if( ( $total_posts = $db->sql_numrows($result) ) > 0 ) 869 { 870 $postrow = $db->sql_fetchrowset($result); 871 872 $template->assign_vars(array( 873 'L_SPLIT_TOPIC' => $lang['Split_Topic'], 874 'L_SPLIT_TOPIC_EXPLAIN' => $lang['Split_Topic_explain'], 875 'L_AUTHOR' => $lang['Author'], 876 'L_MESSAGE' => $lang['Message'], 877 'L_SELECT' => $lang['Select'], 878 'L_SPLIT_SUBJECT' => $lang['Split_title'], 879 'L_SPLIT_FORUM' => $lang['Split_forum'], 880 'L_POSTED' => $lang['Posted'], 881 'L_SPLIT_POSTS' => $lang['Split_posts'], 882 'L_SUBMIT' => $lang['Submit'], 883 'L_SPLIT_AFTER' => $lang['Split_after'], 884 'L_POST_SUBJECT' => $lang['Post_subject'], 885 'L_MARK_ALL' => $lang['Mark_all'], 886 'L_UNMARK_ALL' => $lang['Unmark_all'], 887 'L_POST' => $lang['Post'], 888 889 'FORUM_NAME' => $forum_name, 890 891 'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"), 892 893 'S_SPLIT_ACTION' => append_sid("modcp.$phpEx"), 894 'S_HIDDEN_FIELDS' => $s_hidden_fields, 895 'S_FORUM_SELECT' => make_forum_select("new_forum_id", false, $forum_id)) 896 ); 897 898 // 899 // Define censored word matches 900 // 901 $orig_word = array(); 902 $replacement_word = array(); 903 obtain_word_list($orig_word, $replacement_word); 904 905 for($i = 0; $i < $total_posts; $i++) 906 { 907 $post_id = $postrow[$i]['post_id']; 908 $poster_id = $postrow[$i]['poster_id']; 909 $poster = $postrow[$i]['username']; 910 911 $post_date = create_date($board_config['default_dateformat'], $postrow[$i]['post_time'], $board_config['board_timezone']); 912 913 $bbcode_uid = $postrow[$i]['bbcode_uid']; 914 $message = $postrow[$i]['post_text']; 915 $post_subject = ( $postrow[$i]['post_subject'] != '' ) ? $postrow[$i]['post_subject'] : $topic_title; 916 917 // 918 // If the board has HTML off but the post has HTML 919 // on then we process it, else leave it alone 920 // 921 if ( !$board_config['allow_html'] ) 922 { 923 if ( $postrow[$i]['enable_html'] ) 924 { 925 $message = preg_replace('#(<)([\/]?.*?)(>)#is', '<\\2>', $message); 926 } 927 } 928 929 if ( $bbcode_uid != '' ) 930 { 931 $message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message); 932 } 933 934 if ( count($orig_word) ) 935 { 936 $post_subject = preg_replace($orig_word, $replacement_word, $post_subject); 937 $message = preg_replace($orig_word, $replacement_word, $message); 938 } 939 940 $message = make_clickable($message); 941 942 if ( $board_config['allow_smilies'] && $postrow[$i]['enable_smilies'] ) 943 { 944 $message = smilies_pass($message); 945 } 946 947 $message = str_replace("\n", '<br />', $message); 948 949 $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 950 $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 951 952 $checkbox = ( $i > 0 ) ? '<input type="checkbox" name="post_id_list[]" value="' . $post_id . '" />' : ' '; 953 954 $template->assign_block_vars('postrow', array( 955 'ROW_COLOR' => '#' . $row_color, 956 'ROW_CLASS' => $row_class, 957 'POSTER_NAME' => $poster, 958 'POST_DATE' => $post_date, 959 'POST_SUBJECT' => $post_subject, 960 'MESSAGE' => $message, 961 'POST_ID' => $post_id, 962 963 'S_SPLIT_CHECKBOX' => $checkbox) 964 ); 965 } 966 967 $template->pparse('split_body'); 968 } 969 } 970 break; 971 972 case 'ip': 973 $page_title = $lang['Mod_CP']; 974 include($phpbb_root_path . 'includes/page_header.'.$phpEx); 975 976 $rdns_ip_num = ( isset($HTTP_GET_VARS['rdns']) ) ? $HTTP_GET_VARS['rdns'] : ""; 977 978 if ( !$post_id ) 979 { 980 message_die(GENERAL_MESSAGE, $lang['No_such_post']); 981 } 982 983 // 984 // Set template files 985 // 986 $template->set_filenames(array( 987 'viewip' => 'modcp_viewip.tpl') 988 ); 989 990 // Look up relevent data for this post 991 $sql = "SELECT poster_ip, poster_id 992 FROM " . POSTS_TABLE . " 993 WHERE post_id = $post_id 994 AND forum_id = $forum_id"; 995 if ( !($result = $db->sql_query($sql)) ) 996 { 997 message_die(GENERAL_ERROR, 'Could not get poster IP information', '', __LINE__, __FILE__, $sql); 998 } 999 1000 if ( !($post_row = $db->sql_fetchrow($result)) ) 1001 { 1002 message_die(GENERAL_MESSAGE, $lang['No_such_post']); 1003 } 1004 1005 $ip_this_post = decode_ip($post_row['poster_ip']); 1006 $ip_this_post = ( $rdns_ip_num == $ip_this_post ) ? htmlspecialchars(gethostbyaddr($ip_this_post)) : $ip_this_post; 1007 1008 $poster_id = $post_row['poster_id']; 1009 1010 $template->assign_vars(array( 1011 'L_IP_INFO' => $lang['IP_info'], 1012 'L_THIS_POST_IP' => $lang['This_posts_IP'], 1013 'L_OTHER_IPS' => $lang['Other_IP_this_user'], 1014 'L_OTHER_USERS' => $lang['Users_this_IP'], 1015 'L_LOOKUP_IP' => $lang['Lookup_IP'], 1016 'L_SEARCH' => $lang['Search'], 1017 1018 'SEARCH_IMG' => $images['icon_search'], 1019 1020 'IP' => $ip_this_post, 1021 1022 'U_LOOKUP_IP' => "modcp.$phpEx?mode=ip&" . POST_POST_URL . "=$post_id&" . POST_TOPIC_URL . "=$topic_id&rdns=$ip_this_post&sid=" . $userdata['session_id']) 1023 ); 1024 1025 // 1026 // Get other IP's this user has posted under 1027 // 1028 $sql = "SELECT poster_ip, COUNT(*) AS postings 1029 FROM " . POSTS_TABLE . " 1030 WHERE poster_id = $poster_id 1031 GROUP BY poster_ip 1032 ORDER BY " . (( SQL_LAYER == 'msaccess' ) ? 'COUNT(*)' : 'postings' ) . " DESC"; 1033 if ( !($result = $db->sql_query($sql)) ) 1034 { 1035 message_die(GENERAL_ERROR, 'Could not get IP information for this user', '', __LINE__, __FILE__, $sql); 1036 } 1037 1038 if ( $row = $db->sql_fetchrow($result) ) 1039 { 1040 $i = 0; 1041 do 1042 { 1043 if ( $row['poster_ip'] == $post_row['poster_ip'] ) 1044 { 1045 $template->assign_vars(array( 1046 'POSTS' => $row['postings'] . ' ' . ( ( $row['postings'] == 1 ) ? $lang['Post'] : $lang['Posts'] )) 1047 ); 1048 continue; 1049 } 1050 1051 $ip = decode_ip($row['poster_ip']); 1052 $ip = ( $rdns_ip_num == $row['poster_ip'] || $rdns_ip_num == 'all') ? htmlspecialchars(gethostbyaddr($ip)) : $ip; 1053 1054 $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 1055 $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 1056 1057 $template->assign_block_vars('iprow', array( 1058 'ROW_COLOR' => '#' . $row_color, 1059 'ROW_CLASS' => $row_class, 1060 'IP' => $ip, 1061 'POSTS' => $row['postings'] . ' ' . ( ( $row['postings'] == 1 ) ? $lang['Post'] : $lang['Posts'] ), 1062 1063 'U_LOOKUP_IP' => "modcp.$phpEx?mode=ip&" . POST_POST_URL . "=$post_id&" . POST_TOPIC_URL . "=$topic_id&rdns=" . $row['poster_ip'] . "&sid=" . $userdata['session_id']) 1064 ); 1065 1066 $i++; 1067 } 1068 while ( $row = $db->sql_fetchrow($result) ); 1069 } 1070 1071 // 1072 // Get other users who've posted under this IP 1073 // 1074 $sql = "SELECT u.user_id, u.username, COUNT(*) as postings 1075 FROM " . USERS_TABLE ." u, " . POSTS_TABLE . " p 1076 WHERE p.poster_id = u.user_id 1077 AND p.poster_ip = '" . $post_row['poster_ip'] . "' 1078 GROUP BY u.user_id, u.username 1079 ORDER BY " . (( SQL_LAYER == 'msaccess' ) ? 'COUNT(*)' : 'postings' ) . " DESC"; 1080 if ( !($result = $db->sql_query($sql)) ) 1081 { 1082 message_die(GENERAL_ERROR, 'Could not get posters information based on IP', '', __LINE__, __FILE__, $sql); 1083 } 1084 1085 if ( $row = $db->sql_fetchrow($result) ) 1086 { 1087 $i = 0; 1088 do 1089 { 1090 $id = $row['user_id']; 1091 $username = ( $id == ANONYMOUS ) ? $lang['Guest'] : $row['username']; 1092 1093 $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 1094 $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 1095 1096 $template->assign_block_vars('userrow', array( 1097 'ROW_COLOR' => '#' . $row_color, 1098 'ROW_CLASS' => $row_class, 1099 'USERNAME' => $username, 1100 'POSTS' => $row['postings'] . ' ' . ( ( $row['postings'] == 1 ) ? $lang['Post'] : $lang['Posts'] ), 1101 'L_SEARCH_POSTS' => sprintf($lang['Search_user_posts'], $username), 1102 1103 'U_PROFILE' => ($id == ANONYMOUS) ? "modcp.$phpEx?mode=ip&" . POST_POST_URL . "=" . $post_id . "&" . POST_TOPIC_URL . "=" . $topic_id . "&sid=" . $userdata['session_id'] : append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$id"), 1104 'U_SEARCHPOSTS' => append_sid("search.$phpEx?search_author=" . (($id == ANONYMOUS) ? 'Anonymous' : urlencode($username)) . "&showresults=topics")) 1105 ); 1106 1107 $i++; 1108 } 1109 while ( $row = $db->sql_fetchrow($result) ); 1110 } 1111 1112 $template->pparse('viewip'); 1113 1114 break; 1115 1116 default: 1117 $page_title = $lang['Mod_CP']; 1118 include($phpbb_root_path . 'includes/page_header.'.$phpEx); 1119 1120 $template->assign_vars(array( 1121 'FORUM_NAME' => $forum_name, 1122 1123 'L_MOD_CP' => $lang['Mod_CP'], 1124 'L_MOD_CP_EXPLAIN' => $lang['Mod_CP_explain'], 1125 'L_SELECT' => $lang['Select'], 1126 'L_DELETE' => $lang['Delete'], 1127 'L_MOVE' => $lang['Move'], 1128 'L_LOCK' => $lang['Lock'], 1129 'L_UNLOCK' => $lang['Unlock'], 1130 'L_TOPICS' => $lang['Topics'], 1131 'L_REPLIES' => $lang['Replies'], 1132 'L_LASTPOST' => $lang['Last_Post'], 1133 'L_SELECT' => $lang['Select'], 1134 1135 'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"), 1136 'S_HIDDEN_FIELDS' => '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />', 1137 'S_MODCP_ACTION' => append_sid("modcp.$phpEx")) 1138 ); 1139 1140 $template->set_filenames(array( 1141 'body' => 'modcp_body.tpl') 1142 ); 1143 make_jumpbox('modcp.'.$phpEx); 1144 1145 // 1146 // Define censored word matches 1147 // 1148 $orig_word = array(); 1149 $replacement_word = array(); 1150 obtain_word_list($orig_word, $replacement_word); 1151 1152 $sql = "SELECT t.*, u.username, u.user_id, p.post_time 1153 FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p 1154 WHERE t.forum_id = $forum_id 1155 AND t.topic_poster = u.user_id 1156 AND p.post_id = t.topic_last_post_id 1157 ORDER BY t.topic_type DESC, p.post_time DESC 1158 LIMIT $start, " . $board_config['topics_per_page']; 1159 if ( !($result = $db->sql_query($sql)) ) 1160 { 1161 message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql); 1162 } 1163 1164 while ( $row = $db->sql_fetchrow($result) ) 1165 { 1166 $topic_title = ''; 1167 1168 if ( $row['topic_status'] == TOPIC_LOCKED ) 1169 { 1170 $folder_img = $images['folder_locked']; 1171 $folder_alt = $lang['Topic_locked']; 1172 } 1173 else 1174 { 1175 if ( $row['topic_type'] == POST_ANNOUNCE ) 1176 { 1177 $folder_img = $images['folder_announce']; 1178 $folder_alt = $lang['Topic_Announcement']; 1179 } 1180 else if ( $row['topic_type'] == POST_STICKY ) 1181 { 1182 $folder_img = $images['folder_sticky']; 1183 $folder_alt = $lang['Topic_Sticky']; 1184 } 1185 else 1186 { 1187 $folder_img = $images['folder']; 1188 $folder_alt = $lang['No_new_posts']; 1189 } 1190 } 1191 1192 $topic_id = $row['topic_id']; 1193 $topic_type = $row['topic_type']; 1194 $topic_status = $row['topic_status']; 1195 1196 if ( $topic_type == POST_ANNOUNCE ) 1197 { 1198 $topic_type = $lang['Topic_Announcement'] . ' '; 1199 } 1200 else if ( $topic_type == POST_STICKY ) 1201 { 1202 $topic_type = $lang['Topic_Sticky'] . ' '; 1203 } 1204 else if ( $topic_status == TOPIC_MOVED ) 1205 { 1206 $topic_type = $lang['Topic_Moved'] . ' '; 1207 } 1208 else 1209 { 1210 $topic_type = ''; 1211 } 1212 1213 if ( $row['topic_vote'] ) 1214 { 1215 $topic_type .= $lang['Topic_Poll'] . ' '; 1216 } 1217 1218 $topic_title = $row['topic_title']; 1219 if ( count($orig_word) ) 1220 { 1221 $topic_title = preg_replace($orig_word, $replacement_word, $topic_title); 1222 } 1223 1224 $u_view_topic = "modcp.$phpEx?mode=split&" . POST_TOPIC_URL . "=$topic_id&sid=" . $userdata['session_id']; 1225 $topic_replies = $row['topic_replies']; 1226 1227 $last_post_time = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']); 1228 1229 $template->assign_block_vars('topicrow', array( 1230 'U_VIEW_TOPIC' => $u_view_topic, 1231 1232 'TOPIC_FOLDER_IMG' => $folder_img, 1233 'TOPIC_TYPE' => $topic_type, 1234 'TOPIC_TITLE' => $topic_title, 1235 'REPLIES' => $topic_replies, 1236 'LAST_POST_TIME' => $last_post_time, 1237 'TOPIC_ID' => $topic_id, 1238 1239 'L_TOPIC_FOLDER_ALT' => $folder_alt) 1240 ); 1241 } 1242 1243 $template->assign_vars(array( 1244 'PAGINATION' => generate_pagination("modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id&sid=" . $userdata['session_id'], $forum_topics, $board_config['topics_per_page'], $start), 1245 'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $forum_topics / $board_config['topics_per_page'] )), 1246 'L_GOTO_PAGE' => $lang['Goto_page']) 1247 ); 1248 1249 $template->pparse('body'); 1250 1251 break; 1252} 1253 1254include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 1255 1256?>