diff --git a/phpBB/includes/topic_review.php b/phpBB/includes/topic_review.php
new file mode 100644
index 0000000000..2476d6f31b
--- /dev/null
+++ b/phpBB/includes/topic_review.php
@@ -0,0 +1,197 @@
+sql_query($sql)) )
+ {
+ message_die(GENERAL_ERROR, "Couldn't obtain topic information", "", __LINE__, __FILE__, $sql);
+ }
+
+ if( !($forum_row = $db->sql_fetchrow($result)) )
+ {
+ message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
+ }
+
+ $forum_id = $forum_row['forum_id'];
+ $topic_title = $forum_row['topic_title'];
+
+ //
+ // Start session management
+ //
+ $userdata = session_pagestart($user_ip, $forum_id);
+ init_userprefs($userdata);
+ //
+ // End session management
+ //
+
+ $is_auth = array();
+ $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
+ }
+
+ //
+ // Define censored word matches
+ //
+ if( empty($orig_word) && empty($replacement_word) )
+ {
+ $orig_word = array();
+ $replacement_word = array();
+
+ obtain_word_list($orig_word, $replacement_word);
+ }
+
+ //
+ // Dump out the page header and load viewtopic body template
+ //
+ if( !$is_inline_review )
+ {
+ $gen_simple_header = TRUE;
+
+ $page_title = $lang['Topic_review'] ." - $topic_title";
+ include($phpbb_root_path . 'includes/page_header.'.$phpEx);
+
+ $template->set_filenames(array(
+ "reviewbody" => "posting_topic_review.tpl")
+ );
+ }
+
+ //
+ // Go ahead and pull all data for this topic
+ //
+ $sql = "SELECT u.username, u.user_id, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid
+ FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
+ WHERE p.topic_id = $topic_id
+ AND p.poster_id = u.user_id
+ AND p.post_id = pt.post_id
+ ORDER BY p.post_time DESC
+ LIMIT " . $board_config['posts_per_page'];
+ if( !($result = $db->sql_query($sql)) )
+ {
+ message_die(GENERAL_ERROR, "Couldn't obtain post/user information.", "", __LINE__, __FILE__, $sql);
+ }
+
+ //
+ // Okay, let's do the loop, yeah come on baby let's do the loop
+ // and it goes like this ...
+ //
+ if ( $row = $db->sql_fetchrow($result) )
+ {
+ $i = 0;
+ do
+ {
+ $poster_id = $row['user_id'];
+ $poster = $row['username'];
+
+ $post_date = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);
+
+ $mini_post_img = '
';
+
+ //
+ // Handle anon users posting with usernames
+ //
+ if( $poster_id == ANONYMOUS && $row['post_username'] != '' )
+ {
+ $poster = $row['post_username'];
+ $poster_rank = $lang['Guest'];
+ }
+
+ $post_subject = ( $row['post_subject'] != "" ) ? $row['post_subject'] : "";
+
+ $message = $row['post_text'];
+ $bbcode_uid = $row['bbcode_uid'];
+
+ //
+ // If the board has HTML off but the post has HTML
+ // on then we process it, else leave it alone
+ //
+ if ( !$board_config['allow_html'] && $row['enable_html'] )
+ {
+ $message = preg_replace("#(<)([\/]?.*?)(>)#is", "<\\2>", $message);
+ }
+
+ if ( $bbcode_uid != "" )
+ {
+ $message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace("/\:[0-9a-z\:]+\]/si", "]", $message);
+ }
+
+ $message = make_clickable($message);
+
+ if ( count($orig_word) )
+ {
+ $post_subject = preg_replace($orig_word, $replacement_word, $post_subject);
+ $message = preg_replace($orig_word, $replacement_word, $message);
+ }
+
+ if ( $board_config['allow_smilies'] && $row['enable_smilies'] )
+ {
+ $message = smilies_pass($message);
+ }
+
+ $message = str_replace("\n", "
", $message);
+
+ //
+ // Again this will be handled by the templating
+ // code at some point
+ //
+ $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
+ $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
+
+ $template->assign_block_vars("postrow", array(
+ "ROW_COLOR" => "#" . $row_color,
+ "ROW_CLASS" => $row_class,
+
+ "MINI_POST_IMG" => $mini_post_img,
+ "POSTER_NAME" => $poster,
+ "POST_DATE" => $post_date,
+ "POST_SUBJECT" => $post_subject,
+ "MESSAGE" => $message)
+ );
+
+ $i++;
+ }
+ while ( $row = $db->sql_fetchrow($result) );
+ }
+ else
+ {
+ message_die(GENERAL_MESSAGE, 'Topic_post_not_exist', "", __LINE__, __FILE__, $sql);
+ }
+
+ $template->assign_vars(array(
+ "L_POSTED" => $lang['Posted'],
+ "L_POST_SUBJECT" => $lang['Post_subject'],
+ "L_TOPIC_REVIEW" => $lang['Topic_review'])
+ );
+
+ if ( !$is_inline_review )
+ {
+ $template->pparse("reviewbody");
+ include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
+ }
+}
+//
+// End page specific functions
+// ---------------------------
+
+?>
\ No newline at end of file