diff -urN punbb-1.3/README punbb-1.3.4/README
--- punbb-1.3/README	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/README	2009-04-17 12:51:23.000000000 +0000
@@ -30,7 +30,7 @@
  2. Log into the forum and go to "Administration" console, "Extensions" section, choose "Install extensions" tab (e.g. http://example.com/punbb/admin/extensions.php?section=install). The downloaded extension will be listed there.
  3. Click the "Install extension" link to install the extension.
 
-NOTE: You may use the pun_admin_repository official PunBB extension to download and install extensions from PunBB repository with one click.
+NOTE: You may use the pun_repository official PunBB extension to download and install extensions from PunBB repository with one click.
 
 	 Maximizing Performance
 	------------------------
@@ -53,8 +53,8 @@
 
 	 Copyright and disclaimer
 	--------------------------
-This package and its contents are copyright (C) 2002-2008 PunBB, all rights reserved.
-Partially based on code copyright (C) 2008 FluxBB.org.
+This package and its contents are (C) 2002-2009 PunBB, all rights reserved.
+Partially based on code (C) 2008-2009 FluxBB.org.
 
 PunBB is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 
diff -urN punbb-1.3/admin/bans.php punbb-1.3.4/admin/bans.php
--- punbb-1.3/admin/bans.php	2008-11-07 21:10:35.000000000 +0000
+++ punbb-1.3.4/admin/bans.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators and moderators to create, modify, and delete bans.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -134,11 +134,12 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-		array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-		array($lang_admin_common['Bans'], forum_link($forum_url['admin_bans'])),
-		$lang_admin_bans['Ban advanced']
+		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 	);
+	if ($forum_user['g_id'] == FORUM_ADMIN)
+		$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = array($lang_admin_common['Bans'], forum_link($forum_url['admin_bans']));
+	$forum_page['crumbs'][] = $lang_admin_bans['Ban advanced'];
 
 	($hook = get_hook('aba_add_edit_ban_pre_header_load')) ? eval($hook) : null;
 
@@ -156,15 +157,17 @@
 		<h2 class="hn"><span><?php echo $lang_admin_bans['Ban advanced heading'] ?></span></h2>
 	</div>
 	<div class="main-content main-frm">
-		<div class="ct-box">
+		<div class="ct-box warn-box">
 			<p class="warn"><?php echo $lang_admin_bans['Ban IP warning'] ?></p>
 		</div>
 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo forum_link($forum_url['admin_bans']) ?>">
 			<div class="hidden">
 				<input type="hidden" name="csrf_token" value="<?php echo generate_form_token(forum_link($forum_url['admin_bans'])) ?>" />
 				<input type="hidden" name="mode" value="<?php echo $mode ?>" />
-<?php if ($mode == 'edit'): ?>				<input type="hidden" name="ban_id" value="<?php echo $ban_id ?>" />
-<?php endif; ?>			</div>
+<?php if ($mode == 'edit'): ?>
+				<input type="hidden" name="ban_id" value="<?php echo $ban_id ?>" />
+<?php endif; ?>
+			</div>
 <?php ($hook = get_hook('aba_add_edit_ban_pre_criteria_fieldset')) ? eval($hook) : null; ?>
 			<fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
 				<legend class="group-legend"><span><?php echo $lang_admin_bans['Ban criteria legend'] ?></span></legend>
@@ -390,10 +393,12 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-	array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-	array($lang_admin_common['Bans'], forum_link($forum_url['admin_bans']))
+	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 );
+if ($forum_user['g_id'] == FORUM_ADMIN)
+	$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+$forum_page['crumbs'][] = array($lang_admin_common['Bans'], forum_link($forum_url['admin_bans']));
+
 
 ($hook = get_hook('aba_pre_header_load')) ? eval($hook) : null;
 
@@ -481,10 +486,12 @@
 						<h3 class=""><span><?php printf($lang_admin_bans['Current ban head'], $forum_page['ban_creator']) ?></span></h3>
 						<p><?php printf($lang_admin_bans['Edit or remove'], '<a href="'.forum_link($forum_url['admin_bans']).'?edit_ban='.$cur_ban['id'].'">'.$lang_admin_bans['Edit ban'].'</a>', '<a href="'.forum_link($forum_url['admin_bans']).'?del_ban='.$cur_ban['id'].'&amp;csrf_token='.generate_form_token('del_ban'.$cur_ban['id']).'">'.$lang_admin_bans['Remove ban'].'</a>') ?></p>
 					</div>
-<?php if (!empty($forum_page['ban_info'])): ?>				<ul>
+<?php if (!empty($forum_page['ban_info'])): ?>
+				<ul>
 					<?php echo implode("\n", $forum_page['ban_info'])."\n" ?>
 					</ul>
-<?php endif; ?>				</div>
+<?php endif; ?>
+				</div>
 			</div>
 <?php
 
diff -urN punbb-1.3/admin/categories.php punbb-1.3.4/admin/categories.php
--- punbb-1.3/admin/categories.php	2008-10-30 09:58:26.000000000 +0000
+++ punbb-1.3.4/admin/categories.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to create, reposition, and remove categories.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -214,7 +214,7 @@
 		if (isset($cat_name[$cur_cat['id']]) && isset($cat_order[$cur_cat['id']]))
 		{
 			if ($cat_name[$cur_cat['id']] == '')
-				message($lang_admin_categories['Must enter category']);
+				message($lang_admin_categories['Must name category']);
 
 			if ($cat_order[$cur_cat['id']] < 0)
 				message($lang_admin_categories['Must be integer']);
diff -urN punbb-1.3/admin/censoring.php punbb-1.3.4/admin/censoring.php
--- punbb-1.3/admin/censoring.php	2008-10-30 22:16:26.000000000 +0000
+++ punbb-1.3.4/admin/censoring.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators and moderators to add, modify, and delete the word censors used by the software when censoring is enabled.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -138,10 +138,12 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-	array($lang_admin_common['Settings'], forum_link($forum_url['admin_settings_setup'])),
-	array($lang_admin_common['Censoring'], forum_link($forum_url['admin_censoring']))
+	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 );
+if ($forum_user['g_id'] == FORUM_ADMIN)
+	$forum_page['crumbs'][] = array($lang_admin_common['Settings'], forum_link($forum_url['admin_settings_setup']));
+$forum_page['crumbs'][] = array($lang_admin_common['Censoring'], forum_link($forum_url['admin_censoring']));
+
 
 ($hook = get_hook('acs_pre_header_load')) ? eval($hook) : null;
 
diff -urN punbb-1.3/admin/db_update.php punbb-1.3.4/admin/db_update.php
--- punbb-1.3/admin/db_update.php	2008-11-09 13:35:41.000000000 +0000
+++ punbb-1.3.4/admin/db_update.php	2009-05-20 09:20:51.000000000 +0000
@@ -4,14 +4,14 @@
  *
  * Updates the database to the latest version.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
-define('UPDATE_TO', '1.3');
-define('UPDATE_TO_DB_REVISION', 3);
+define('UPDATE_TO', '1.3.4');
+define('UPDATE_TO_DB_REVISION', 4);
 
 // The number of items to process per pageview (lower this if the update script times out during UTF-8 conversion)
 define('PER_PAGE', 300);
@@ -39,7 +39,8 @@
 	exit('Cannot find config.php, are you sure it exists?');
 
 // Enable debug mode
-define('FORUM_DEBUG', 1);
+if (!defined('FORUM_DEBUG')) 
+	define('FORUM_DEBUG', 1);
 
 // Turn on full PHP error reporting
 error_reporting(E_ALL);
@@ -284,12 +285,15 @@
 	$seems_utf8 = true;
 
 	$query = array(
-		'SELECT'	=> 'MIN(id), MAX(id)',
+		'SELECT'	=> 'MIN(id), MAX(id), COUNT(id)',
 		'FROM'		=> 'posts'
 	);
 
 	$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
-	list($min_id, $max_id) = $forum_db->fetch_row($result);
+	list($min_id, $max_id, $count_id) = $forum_db->fetch_row($result);
+
+	if ($count_id == 0)
+		return false;
 
 	// Get a random soup of data and check if it appears to be UTF-8
 	for ($i = 0; $i < 100; ++$i)
@@ -408,7 +412,7 @@
 <div id="brd-main" class="main basic">
 
 	<div class="main-head">
-		<h1 class="hn"><span>PunBB Database Update : Perform update of database tables</span></h1>
+		<h1 class="hn"><span>PunBB Database Update: Perform update of database tables</span></h1>
 	</div>
 
 	<div class="main-content frm">
@@ -416,7 +420,7 @@
 			<ul class="spaced">
 				<li class="warn"><span><strong>WARNING!</strong> This script will update your PunBB forum database. The update procedure might take anything from a few seconds to a few minutes (or in extreme cases, hours) depending on the speed of the server, the size of the forum database and the number of changes required.</span></li>
 				<li><span>Do not forget to make a backup of the database before continuing.</span></li>
-				<li><span> Did you read the update instructions in the documentation? If not, start there.</span></li>
+				<li><span>Did you read the update instructions in the documentation? If not, start there.</span></li>
 <?php
 
 if (strpos($cur_version, '1.2') === 0 && (!$db_seems_utf8 || isset($_GET['force'])))
@@ -725,7 +729,7 @@
 
 		// Make all IP fields VARCHAR(39) to support IPv6
 		$forum_db->alter_field('posts', 'poster_ip', 'VARCHAR(39)', true);
-		$forum_db->alter_field('user', 'registration_ip', 'VARCHAR(39)', false, '0.0.0.0');
+		$forum_db->alter_field('users', 'registration_ip', 'VARCHAR(39)', false, '0.0.0.0');
 
 		// Add the DST option to the users table
 		$forum_db->add_field('users', 'dst', 'TINYINT(1)', false, 0, 'timezone');
@@ -1222,7 +1226,7 @@
 		$forum_db->set_names('utf8');
 
 		// Convert config
-		echo 'Converting configuration …'."<br />\n";
+		echo 'Converting configuration…'."<br />\n";
 		foreach ($forum_config as $conf_name => $conf_value)
 		{
 			if (convert_to_utf8($conf_value, $old_charset))
@@ -1238,7 +1242,7 @@
 		}
 
 		// Convert categories
-		echo 'Converting categories …'."<br />\n";
+		echo 'Converting categories…'."<br />\n";
 		$query = array(
 			'SELECT'	=> 'id, cat_name',
 			'FROM'		=> 'categories',
@@ -1261,7 +1265,7 @@
 		}
 
 		// Convert forums
-		echo 'Converting forums …'."<br />\n";
+		echo 'Converting forums…'."<br />\n";
 		$query = array(
 			'SELECT'	=> 'id, forum_name, forum_desc, moderators',
 			'FROM'		=> 'forums',
@@ -1295,7 +1299,7 @@
 		}
 
 		// Convert groups
-		echo 'Converting groups …'."<br />\n";
+		echo 'Converting groups…'."<br />\n";
 		$query = array(
 			'SELECT'	=> 'g_id, g_title, g_user_title',
 			'FROM'		=> 'groups',
@@ -1320,7 +1324,7 @@
 		}
 
 		// Convert ranks
-		echo 'Converting ranks …'."<br />\n";
+		echo 'Converting ranks…'."<br />\n";
 		$query = array(
 			'SELECT'	=> 'id, rank',
 			'FROM'		=> 'ranks',
@@ -1343,7 +1347,7 @@
 		}
 
 		// Convert censor words
-		echo 'Converting censor words …'."<br />\n";
+		echo 'Converting censor words…'."<br />\n";
 		$query = array(
 			'SELECT'	=> 'id, search_for, replace_with',
 			'FROM'		=> 'censoring',
@@ -1408,7 +1412,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Converting report '.$cur_item['id'].' …<br />'."\n";
+			echo 'Converting report '.$cur_item['id'].'…<br />'."\n";
 			if (convert_to_utf8($cur_item['message'], $old_charset))
 			{
 				$query = array(
@@ -1477,7 +1481,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Converting search word '.$cur_item['id'].' …<br />'."\n";
+			echo 'Converting search word '.$cur_item['id'].'…<br />'."\n";
 			if (convert_to_utf8($cur_item['word'], $old_charset))
 			{
 				$query = array(
@@ -1535,7 +1539,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Converting user '.$cur_item['id'].' …<br />'."\n";
+			echo 'Converting user '.$cur_item['id'].'…<br />'."\n";
 			if (convert_to_utf8($cur_item['username'], $old_charset) | convert_to_utf8($cur_item['title'], $old_charset) | convert_to_utf8($cur_item['realname'], $old_charset) | convert_to_utf8($cur_item['location'], $old_charset) | convert_to_utf8($cur_item['signature'], $old_charset) | convert_to_utf8($cur_item['admin_note'], $old_charset))
 			{
 				$cur_item['title'] = $cur_item['title'] != '' ? '\''.$forum_db->escape($cur_item['title']).'\'' : 'NULL';
@@ -1610,7 +1614,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Converting topic '.$cur_item['id'].' …<br />'."\n";
+			echo 'Converting topic '.$cur_item['id'].'…<br />'."\n";
 			if (convert_to_utf8($cur_item['poster'], $old_charset) | convert_to_utf8($cur_item['subject'], $old_charset) | convert_to_utf8($cur_item['last_poster'], $old_charset))
 			{
 				$query = array(
@@ -1679,7 +1683,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Converting post '.$cur_item['id'].' …<br />'."\n";
+			echo 'Converting post '.$cur_item['id'].'…<br />'."\n";
 			if (convert_to_utf8($cur_item['poster'], $old_charset) | convert_to_utf8($cur_item['message'], $old_charset) | convert_to_utf8($cur_item['edited_by'], $old_charset))
 			{
 				$cur_item['edited_by'] = $cur_item['edited_by'] != '' ? '\''.$forum_db->escape($cur_item['edited_by']).'\'' : 'NULL';
@@ -1716,43 +1720,43 @@
 		// Do the cumbersome charset conversion of MySQL tables/columns
 		if ($db_type == 'mysql' || $db_type == 'mysqli')
 		{
-			echo 'Converting table '.$forum_db->prefix.'bans …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'bans…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'bans');
-			echo 'Converting table '.$forum_db->prefix.'categories …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'categories…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'categories');
-			echo 'Converting table '.$forum_db->prefix.'censoring …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'censoring…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'censoring');
-			echo 'Converting table '.$forum_db->prefix.'config …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'config…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'config');
-			echo 'Converting table '.$forum_db->prefix.'extension_hooks …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'extension_hooks…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'extension_hooks');
-			echo 'Converting table '.$forum_db->prefix.'extensions …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'extensions…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'extensions');
-			echo 'Converting table '.$forum_db->prefix.'forum_perms …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'forum_perms…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'forum_perms');
-			echo 'Converting table '.$forum_db->prefix.'forums …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'forums…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'forums');
-			echo 'Converting table '.$forum_db->prefix.'groups …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'groups…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'groups');
-			echo 'Converting table '.$forum_db->prefix.'online …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'online…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'online');
-			echo 'Converting table '.$forum_db->prefix.'posts …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'posts…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'posts');
-			echo 'Converting table '.$forum_db->prefix.'ranks …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'ranks…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'ranks');
-			echo 'Converting table '.$forum_db->prefix.'reports …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'reports…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'reports');
-			echo 'Converting table '.$forum_db->prefix.'search_cache …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'search_cache…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'search_cache');
-			echo 'Converting table '.$forum_db->prefix.'search_matches …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'search_matches…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'search_matches');
-			echo 'Converting table '.$forum_db->prefix.'search_words …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'search_words…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'search_words');
-			echo 'Converting table '.$forum_db->prefix.'subscriptions …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'subscriptions…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'subscriptions');
-			echo 'Converting table '.$forum_db->prefix.'topics …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'topics…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'topics');
-			echo 'Converting table '.$forum_db->prefix.'users …<br />'."\n"; flush();
+			echo 'Converting table '.$forum_db->prefix.'users…<br />'."\n"; flush();
 			convert_table_utf8($forum_db->prefix.'users');
 		}
 
@@ -1794,7 +1798,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Preparsing post '.$cur_item['id'].' …<br />'."\n";
+			echo 'Preparsing post '.$cur_item['id'].'…<br />'."\n";
 			$preparse_errors = array();
 
 			$query = array(
@@ -1847,7 +1851,7 @@
 		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 		while ($cur_item = $forum_db->fetch_assoc($result))
 		{
-			echo 'Preparsing signature '.$cur_item['id'].' …<br />'."\n";
+			echo 'Preparsing signature '.$cur_item['id'].'…<br />'."\n";
 			$preparse_errors = array();
 
 			$query = array(
@@ -1991,10 +1995,13 @@
 	<div class="main-content frm">
 		<div class="ct-box info-box">
 			<p>Your forum database was updated successfully.</p>
-<?php if (isset($new_config) && !$written): ?>			<p>In order to complete the process, you must now update your config.php script. <strong>Copy and paste the text in the text box below into the file called config.php in the root directory of your PunBB installation</strong>. The file already exists, so you must edit/overwrite the contents of the old file. You may then <a href="<?php echo $base_url ?>/index.php">go to the forum index</a> once config.php has been updated.</p>
-<?php else: ?>			<p>You may <a href="<?php echo $base_url ?>/index.php">go to the forum index</a> now.</p>
+<?php if (isset($new_config) && !$written): ?>
+			<p>In order to complete the process, you must now update your config.php script. <strong>Copy and paste the text in the text box below into the file called config.php in the root directory of your PunBB installation</strong>. The file already exists, so you must edit/overwrite the contents of the old file. You may then <a href="<?php echo $base_url ?>/index.php">go to the forum index</a> once config.php has been updated.</p>
+<?php else: ?>
+			<p>You may <a href="<?php echo $base_url ?>/index.php">go to the forum index</a> now.</p>
 <?php endif; ?>		</div>
-<?php if (isset($new_config) && !$written): ?>		<form class="frm-form" action="foo">
+<?php if (isset($new_config) && !$written): ?>
+		<form class="frm-form" action="foo">
 			<fieldset class="frm-group group1">
 				<legend class="group-legend"><span>New config.php contents</span></legend>
 				<div class="txt-set set1">
diff -urN punbb-1.3/admin/extensions.php punbb-1.3.4/admin/extensions.php
--- punbb-1.3/admin/extensions.php	2008-11-10 13:52:46.000000000 +0000
+++ punbb-1.3.4/admin/extensions.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control the extensions and hotfixes installed in the site.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -412,6 +412,12 @@
 	{
 		($hook = get_hook('aex_uninstall_comply_form_submitted')) ? eval($hook) : null;
 
+		$ext_info = array(
+			'id'			=> $id,
+			'path'			=> FORUM_ROOT.'extensions/'.$id,
+			'url'			=> $base_url.'/extensions/'.$id
+		);
+
 		$notices = array();
 
 		// Run uninstall code
@@ -983,7 +989,7 @@
 		);
 
 		if ($forum_config['o_check_for_versions'] == 1 && isset($forum_ext_last_versions[$id]) && version_compare($ext['version'], $forum_ext_last_versions[$id]['version'], '<'))
-			$forum_page['ext_actions']['latest_ver'] = '<a href="'.$forum_ext_last_versions[$id]['repo_url'].'/'.$id.'/'.$id.'.zip">'.$lang_admin_ext['Download latest version'].'</a>';
+			$forum_page['ext_actions']['latest_ver'] = '<span><a href="'.$forum_ext_last_versions[$id]['repo_url'].'/'.$id.'/'.$id.'.zip">'.$lang_admin_ext['Download latest version'].'</a></span>';
 
 		($hook = get_hook('aex_section_manage_pre_ext_actions')) ? eval($hook) : null;
 
diff -urN punbb-1.3/admin/forums.php punbb-1.3.4/admin/forums.php
--- punbb-1.3/admin/forums.php	2008-11-07 20:44:35.000000000 +0000
+++ punbb-1.3.4/admin/forums.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to add, modify, and remove forums.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -177,7 +177,6 @@
 		</form>
 	</div>
 
-</div>
 <?php
 
 		($hook = get_hook('afo_del_forum_end')) ? eval($hook) : null;
@@ -426,7 +425,7 @@
 
 	$forum_page['form_info'] = array();
 	if ($cur_forum['redirect_url'])
-		$forum_page['form_info'][] = '<li><span>'.$lang_admin_forums['Forum perms info 2'].'</span></li>';
+		$forum_page['form_info'][] = '<li><span>'.$lang_admin_forums['Forum perms redirect info'].'</span></li>';
 
 	$forum_page['form_info']['read'] = '<li><span>'.$lang_admin_forums['Forum perms read info'].'</span></li>';
 	$forum_page['form_info']['restore'] = '<li><span>'.$lang_admin_forums['Forum perms restore info'].'</span></li>';
@@ -780,7 +779,7 @@
 					<div class="mf-box">
 <?php ($hook = get_hook('afo_pre_edit_cur_forum_name')) ? eval($hook) : null; ?>
 						<div class="mf-field mf-field1 forum-field">
-							<span class="aslabel">Forum name:</span>
+							<span class="aslabel"><?php echo $lang_admin_forums['Forum name'] ?></span>
 							<span class="fld-input"><?php echo forum_htmlencode($cur_forum['forum_name']) ?></span>
 						</div>
 <?php ($hook = get_hook('afo_pre_edit_cur_forum_position')) ? eval($hook) : null; ?>
diff -urN punbb-1.3/admin/groups.php punbb-1.3.4/admin/groups.php
--- punbb-1.3/admin/groups.php	2008-10-30 11:00:54.000000000 +0000
+++ punbb-1.3.4/admin/groups.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control group permissions.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -180,8 +180,8 @@
 								<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="mod_ban_users" value="1"<?php if ($group['g_mod_ban_users'] == '1') echo ' checked="checked"' ?> /></span>
 								<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_admin_groups['Allow mod bans label'] ?></label>
 							</div>
-						</div>
 <?php ($hook = get_hook('agr_add_edit_group_pre_mod_permissions_fieldset_end')) ? eval($hook) : null; ?>
+						</div>
 					</fieldset>
 <?php ($hook = get_hook('agr_add_edit_group_mod_permissions_fieldset_end')) ? eval($hook) : null; endif; endif; ?>
 					<fieldset class="mf-set set<?php echo ++$forum_page['item_count'] ?>">
@@ -242,9 +242,8 @@
 								<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="send_email" value="1"<?php if ($group['g_send_email'] == '1') echo ' checked="checked"' ?> /></span>
 								<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_admin_groups['Allow send email label'] ?></label>
 							</div>
-<?php endif; ?>
+<?php endif; ($hook = get_hook('agr_add_edit_group_pre_user_permissions_fieldset_end')) ? eval($hook) : null; ?>
 						</div>
-<?php ($hook = get_hook('agr_add_edit_group_pre_user_permissions_fieldset_end')) ? eval($hook) : null; ?>
 					</fieldset>
 <?php ($hook = get_hook('agr_add_edit_group_user_permissions_fieldset_end')) ? eval($hook) : null; ?>
 				</fieldset>
diff -urN punbb-1.3/admin/index.php punbb-1.3.4/admin/index.php
--- punbb-1.3/admin/index.php	2008-11-07 20:34:47.000000000 +0000
+++ punbb-1.3.4/admin/index.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Gives an overview of some statistics to administrators and moderators.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -147,10 +147,11 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-	array($lang_admin_common['Start'], forum_link($forum_url['admin_index'])),
-	array($lang_admin_common['Information'], forum_link($forum_url['admin_index']))
+	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 );
+if ($forum_user['g_id'] == FORUM_ADMIN)
+	$forum_page['crumbs'][] = array($lang_admin_common['Start'], forum_link($forum_url['admin_index']));
+$forum_page['crumbs'][] = array($lang_admin_common['Information'], forum_link($forum_url['admin_index']));
 
 ($hook = get_hook('ain_pre_header_load')) ? eval($hook) : null;
 
@@ -185,7 +186,7 @@
 					<h3 class="ct-legend hn"><span><?php echo $lang_admin_index['PunBB version'] ?></span></h3>
 					<ul class="data-list">
 						<li><span>PunBB <?php echo $forum_config['o_cur_version'] ?></span></li>
-						<li><span>&copy; Copyright 2008 <a href="http://punbb.informer.com/">PunBB</a></span></li>
+						<li><span><?php echo $lang_admin_index['Copyright message'] ?></span></li>
 <?php if (isset($punbb_updates)): ?>
 						<li><span><?php echo $punbb_updates ?></span></li>
 <?php endif; ?>
@@ -217,7 +218,7 @@
 					<ul class="data-list">
 						<li><span><?php echo implode(' ', $forum_db->get_version()) ?></span></li>
 <?php if (isset($total_records) && isset($total_size)): ?>
-							<li><span><?php echo $lang_admin_index['Rows'] ?>: <?php echo forum_number_format($total_records) ?></span></li>
+						<li><span><?php echo $lang_admin_index['Rows'] ?>: <?php echo forum_number_format($total_records) ?></span></li>
 						<li><span><?php echo $lang_admin_index['Size'] ?>: <?php echo $total_size ?></span></li>
 <?php endif; ?>
 					</ul>
diff -urN punbb-1.3/admin/install.php punbb-1.3.4/admin/install.php
--- punbb-1.3/admin/install.php	2008-11-09 17:22:14.000000000 +0000
+++ punbb-1.3.4/admin/install.php	2009-05-20 09:20:51.000000000 +0000
@@ -4,14 +4,14 @@
  *
  * Used to actually install PunBB.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
-define('FORUM_VERSION', '1.3');
-define('FORUM_DB_REVISION', 3);
+define('FORUM_VERSION', '1.3.4');
+define('FORUM_DB_REVISION', 4);
 define('MIN_PHP_VERSION', '4.3.0');
 define('MIN_MYSQL_VERSION', '4.1.2');
 
@@ -57,7 +57,8 @@
 	return '<?php'."\n\n".'$db_type = \''.$db_type."';\n".'$db_host = \''.$db_host."';\n".'$db_name = \''.addslashes($db_name)."';\n".'$db_username = \''.addslashes($db_username)."';\n".'$db_password = \''.addslashes($db_password)."';\n".'$db_prefix = \''.addslashes($db_prefix)."';\n".'$p_connect = false;'."\n\n".'$base_url = \''.$base_url.'\';'."\n\n".'$cookie_name = '."'".$cookie_name."';\n".'$cookie_domain = '."'';\n".'$cookie_path = '."'/';\n".'$cookie_secure = 0;'."\n\ndefine('FORUM', 1);";
 }
 
-$language = isset($_GET['lang']) ? preg_replace('#[\.\\\/]#', '', $_GET['lang']) : 'English';
+$language = isset($_GET['lang']) ? $_GET['lang'] : (isset($_POST['req_language']) ? forum_trim($_POST['req_language']) : 'English');
+$language = preg_replace('#[\.\\\/]#', '', $language);
 if (!file_exists(FORUM_ROOT.'lang/'.$language.'/install.php'))
 	exit('The language pack you have chosen doesn\'t seem to exist or is corrupt. Please recheck and try again.');
 
@@ -83,6 +84,7 @@
 	exit;
 }
 
+header('Content-Type: text/html; charset=utf-8');
 
 if (!isset($_POST['form_sent']))
 {
@@ -147,8 +149,7 @@
 	if (count($languages) > 1)
 	{
 
-?>
-	<form class="frm-form" method="get" accept-charset="utf-8" action="install.php">
+?>	<form class="frm-form" method="get" accept-charset="utf-8" action="install.php">
 	<div class="main-subhead">
 		<h2 class="hn"><span><?php echo $lang_install['Choose language'] ?></span></h2>
 	</div>
@@ -164,8 +165,7 @@
 		foreach ($languages as $lang)
 			echo "\t\t\t\t\t".'<option value="'.$lang.'"'.($language == $lang ? ' selected="selected"' : '').'>'.$lang.'</option>'."\n";
 
-?>
-					</select></span>
+?>					</select></span>
 				</div>
 			</div>
 		</fieldset>
@@ -178,8 +178,7 @@
 
 	}
 
-?>
-	<form class="frm-form" method="post" accept-charset="utf-8" action="install.php">
+?>	<form class="frm-form" method="post" accept-charset="utf-8" action="install.php">
 	<div class="hidden">
 		<input type="hidden" name="form_sent" value="1" />
 	</div>
@@ -211,8 +210,7 @@
 	foreach ($db_extensions as $db_type)
 		echo "\t\t\t\t\t".'<option value="'.$db_type[0].'">'.$db_type[1].'</option>'."\n";
 
-?>
-					</select></span>
+?>					</select></span>
 				</div>
 			</div>
 			<div class="sf-set set1">
@@ -318,8 +316,8 @@
 
 	if (count($languages) > 1)
 	{
-?>
-			<div class="sf-set set4">
+
+?>			<div class="sf-set set4">
 				<div class="sf-box text">
 					<label for="fld14"><span><?php echo $lang_install['Default language'] ?></span> <small><?php echo $lang_install['Default language help'] ?></small></label><br />
 					<span class="fld-input"><select id="fld14" name="req_language">
@@ -328,28 +326,35 @@
 		foreach ($languages as $lang)
 			echo "\t\t\t\t\t".'<option value="'.$lang.'"'.($language == $lang ? ' selected="selected"' : '').'>'.$lang.'</option>'."\n";
 
-?>
-					</select></span>
+?>					</select></span>
 				</div>
 			</div>
 <?php
+
 	}
 	else
 	{
-?>
-			<div class="hidden">
+
+?>			<div class="hidden">
 				<input type="hidden" name="req_language" value="<?php echo $languages[0]; ?>" />
 			</div>
 <?php
 	}
 
-?>
-			<div class="sf-set set5">
+	if (file_exists(FORUM_ROOT.'extensions/pun_repository/manifest.xml'))
+	{
+
+?>			<div class="sf-set set5">
 				<div class="sf-box checkbox">
 					<span class="fld-input"><input id="fld15" type="checkbox" name="install_pun_repository" value="1" checked="checked" /></span>
 					<label for="fld15"><span><?php echo $lang_install['Pun repository'] ?></span> <?php echo $lang_install['Pun repository help'] ?></label><br />
 				</div>
 			</div>
+<?php
+
+	}
+
+?>
 		</fieldset>
 		<div class="frm-buttons">
 			<span class="submit"><input type="submit" name="start" value="<?php echo $lang_install['Start install'] ?>" /></span>
@@ -456,7 +461,7 @@
 			break;
 
 		default:
-			error(sprintf($lang_install['No such database type'], $db_type));
+			error(sprintf($lang_install['No such database type'], forum_htmlencode($db_type)));
 	}
 
 	// Create the database object (and connect/select db)
@@ -1743,15 +1748,15 @@
 	$alerts = array();
 	// Check if the cache directory is writable
 	if (!is_writable('./cache/'))
-		$alerts[] = '<li>'.$lang_install['No cache write'].'</li>';
+		$alerts[] = '<li><span>'.$lang_install['No cache write'].'</span></li>';
 
 	// Check if default avatar directory is writable
 	if (!is_writable('./img/avatars/'))
-		$alerts[] = '<li>'.$lang_install['No avatar write'].'</li>';
+		$alerts[] = '<li><span>'.$lang_install['No avatar write'].'</span></li>';
 
 	// Check if we disabled uploading avatars because file_uploads was disabled
 	if ($avatars == '0')
-		$alerts[] = '<li>'.$lang_install['File upload alert'].'</li>';
+		$alerts[] = '<li><span>'.$lang_install['File upload alert'].'</span></li>';
 
 	// Add some random bytes at the end of the cookie name to prevent collisions
 	$cookie_name = 'forum_cookie_'.random_key(6, false, true);
@@ -1819,9 +1824,9 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>PunBB Installation</title>
 <link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen.css" />
-<link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen_forms.css" />
 <link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen_cs.css" />
-<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen_ie.css" /><![endif]-->
+<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen_ie6.css" /><![endif]-->
+<!--[if IE 7]><link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen_ie7.css" /><![endif]-->
 </head>
 
 <body>
@@ -1854,17 +1859,19 @@
 {
 
 ?>
-		<div class="ct-box warn-box">
+		<div class="ct-box info-box">
 			<p class="warn"><?php echo $lang_install['No write info 1'] ?></p>
 			<p class="warn"><?php printf($lang_install['No write info 2'], '<a href="'.FORUM_ROOT.'index.php">'.$lang_install['Go to index'].'</a>') ?></p>
 		</div>
-<?php if (!empty($alerts)): ?>		<div class="ct-box error-box">
-			<?php echo $lang_install['Warning'] ?></p>
+<?php if (!empty($alerts)): ?>
+		<div class="ct-box error-box">
+			<p class="warn"><strong><?php echo $lang_install['Warning'] ?></strong></p>
 			<ul>
 				<?php echo implode("\n\t\t\t\t", $alerts)."\n" ?>
 			</ul>
 		</div>
-<?php endif; ?>		<form class="frm-form" method="post" accept-charset="utf-8" action="install.php">
+<?php endif; ?>
+		<form class="frm-form" method="post" accept-charset="utf-8" action="install.php">
 			<div class="hidden">
 			<input type="hidden" name="generate_config" value="1" />
 			<input type="hidden" name="db_type" value="<?php echo $db_type; ?>" />
diff -urN punbb-1.3/admin/prune.php punbb-1.3.4/admin/prune.php
--- punbb-1.3/admin/prune.php	2008-10-28 14:12:01.000000000 +0000
+++ punbb-1.3.4/admin/prune.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to delete older topics from the site.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/admin/ranks.php punbb-1.3.4/admin/ranks.php
--- punbb-1.3/admin/ranks.php	2008-10-30 12:12:19.000000000 +0000
+++ punbb-1.3.4/admin/ranks.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control the tags given to posters based on their post count.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/admin/reindex.php punbb-1.3.4/admin/reindex.php
--- punbb-1.3/admin/reindex.php	2008-10-28 14:12:01.000000000 +0000
+++ punbb-1.3.4/admin/reindex.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to rebuild the index used to search the posts and topics.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/admin/reports.php punbb-1.3.4/admin/reports.php
--- punbb-1.3/admin/reports.php	2008-10-28 14:12:01.000000000 +0000
+++ punbb-1.3.4/admin/reports.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators and moderators to handle reported posts.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -54,10 +54,11 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-	array($lang_admin_common['Management'], forum_link($forum_url['admin_reports'])),
-	array($lang_admin_common['Reports'], forum_link($forum_url['admin_reports']))
+	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 );
+if ($forum_user['g_id'] == FORUM_ADMIN)
+	$forum_page['crumbs'][] = array($lang_admin_common['Management'], forum_link($forum_url['admin_reports']));
+$forum_page['crumbs'][] = array($lang_admin_common['Reports'], forum_link($forum_url['admin_reports']));
 
 ($hook = get_hook('arp_pre_header_load')) ? eval($hook) : null;
 
diff -urN punbb-1.3/admin/settings.php punbb-1.3.4/admin/settings.php
--- punbb-1.3/admin/settings.php	2008-11-07 22:14:13.000000000 +0000
+++ punbb-1.3.4/admin/settings.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control many of the settings used in the site.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -214,7 +214,7 @@
 		{
 			$query = array(
 				'UPDATE'	=> 'config',
-				'SET'		=> 'conf_value='.$input,
+				'SET'		=> 'conf_value='.intval($input),
 				'WHERE'		=> 'conf_name=\'p_'.$forum_db->escape($key).'\''
 			);
 
@@ -266,8 +266,6 @@
 		array($lang_admin_common['Setup'], forum_link($forum_url['admin_settings_setup']))
 	);
 
-	$forum_page['main_head'] = $lang_admin_common['Settings'];
-
 	($hook = get_hook('aop_setup_pre_header_load')) ? eval($hook) : null;
 
 	define('FORUM_PAGE_SECTION', 'settings');
@@ -980,10 +978,6 @@
 						<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_admin_settings['Update check'] ?></span> <?php echo $lang_admin_settings['Update check label'] ?></label>
 					</div>
 				</div>
-<?php ($hook = get_hook('aop_features_pre_updates_fieldset_end')) ? eval($hook) : null; ?>
-			</fieldset>
-			<fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
-				<legend class="group-legend"><strong><?php echo $lang_admin_settings['Check for versions'] ?></strong></legend>
 <?php ($hook = get_hook('aop_features_pre_version_updates_checkbox')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
@@ -991,7 +985,7 @@
 						<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_admin_settings['Check for versions'] ?></span> <?php echo $lang_admin_settings['Auto check for versions'] ?></label>
 					</div>
 				</div>
-<?php ($hook = get_hook('aop_features_pre_version_updates_fieldset_end')) ? eval($hook) : null; ?>
+<?php ($hook = get_hook('aop_features_pre_updates_fieldset_end')) ? eval($hook) : null; ?>
 			</fieldset>
 <?php ($hook = get_hook('aop_features_updates_fieldset_end')) ? eval($hook) : null; ?>
 <?php else: ?>
@@ -1268,16 +1262,16 @@
 	($hook = get_hook('aop_maintenance_output_start')) ? eval($hook) : null;
 
 ?>
+	<div class="main-subhead">
+		<h2 class="hn"><span><?php echo $lang_admin_settings['Maintenance head'] ?></span></h2>
+	</div>
 	<div class="main-content main-frm">
-		<div class="content-head">
-			<h2 class="hn"><span><?php echo $lang_admin_settings['Maintenance head'] ?></span></h2>
-		</div>
 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo forum_link($forum_url['admin_settings_maintenance']) ?>">
 			<div class="hidden">
 				<input type="hidden" name="csrf_token" value="<?php echo generate_form_token(forum_link($forum_url['admin_settings_maintenance'])) ?>" />
 				<input type="hidden" name="form_sent" value="1" />
 			</div>
-			<div class="ct-box">
+			<div class="ct-box warn-box">
 				<p class="important"><?php echo $lang_admin_settings['Maintenance mode info'] ?></p>
 				<p class="warn"><?php echo $lang_admin_settings['Maintenance mode warn'] ?></p>
 			</div>
diff -urN punbb-1.3/admin/users.php punbb-1.3.4/admin/users.php
--- punbb-1.3/admin/users.php	2008-11-08 17:17:40.000000000 +0000
+++ punbb-1.3.4/admin/users.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators or moderators to search the existing users based on various criteria.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -50,11 +50,12 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-		array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-		array($lang_admin_common['Searches'], forum_link($forum_url['admin_users'])),
-		$lang_admin_users['User search results']
+		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 	);
+	if ($forum_user['g_id'] == FORUM_ADMIN)
+		$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = array($lang_admin_common['Searches'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = $lang_admin_users['User search results'];
 
 	($hook = get_hook('aus_ip_stats_pre_header_load')) ? eval($hook) : null;
 
@@ -198,11 +199,12 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-		array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-		array($lang_admin_common['Searches'], forum_link($forum_url['admin_users'])),
-		$lang_admin_users['User search results']
+		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 	);
+	if ($forum_user['g_id'] == FORUM_ADMIN)
+		$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = array($lang_admin_common['Searches'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = $lang_admin_users['User search results'];
 
 	($hook = get_hook('aus_show_users_pre_header_load')) ? eval($hook) : null;
 
@@ -605,11 +607,12 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-		array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-		array($lang_admin_common['Searches'], forum_link($forum_url['admin_users'])),
-		$lang_admin_users['Ban users']
+		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 	);
+	if ($forum_user['g_id'] == FORUM_ADMIN)
+		$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = array($lang_admin_common['Searches'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = $lang_admin_users['Ban users'];
 
 	($hook = get_hook('aus_ban_users_pre_header_load')) ? eval($hook) : null;
 
@@ -814,6 +817,14 @@
 	$form = $_POST['form'];
 	$form['username'] = $_POST['username'];
 
+	//Check up for order_by and direction values
+	$order_by = isset($_POST['order_by']) ? forum_trim($_POST['order_by']) : null;
+	$direction = isset($_POST['direction']) ? forum_trim($_POST['direction']) : null;
+	if ($order_by == null || $direction == null)
+		message($lang_common['Bad request']);
+	if (!in_array($order_by, array('username', 'email', 'num_posts', 'num_posts', 'registered')) || !in_array($direction, array('ASC', 'DESC')))
+		message($lang_common['Bad request']);
+
 	($hook = get_hook('aus_find_user_selected')) ? eval($hook) : null;
 
 	// forum_trim() all elements in $form
@@ -826,8 +837,6 @@
 	$last_post_before = forum_trim($_POST['last_post_before']);
 	$registered_after = forum_trim($_POST['registered_after']);
 	$registered_before = forum_trim($_POST['registered_before']);
-	$order_by = $_POST['order_by'];
-	$direction = $_POST['direction'];
 	$user_group = $_POST['user_group'];
 
 	if ((!empty($posts_greater) || !empty($posts_less)) && !ctype_digit($posts_greater.$posts_less))
@@ -888,7 +897,7 @@
 			)
 		),
 		'WHERE'		=> 'u.id>1 AND '.implode(' AND ', $conditions),
-		'ORDER BY'	=> $forum_db->escape($order_by).' '.$forum_db->escape($direction)
+		'ORDER BY'	=> $order_by.' '.$direction
 	);
 
 	($hook = get_hook('aus_find_user_qr_find_users')) ? eval($hook) : null;
@@ -899,11 +908,12 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-		array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-		array($lang_admin_common['Searches'], forum_link($forum_url['admin_users'])),
-		$lang_admin_users['User search results']
+		array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 	);
+	if ($forum_user['g_id'] == FORUM_ADMIN)
+		$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = array($lang_admin_common['Searches'], forum_link($forum_url['admin_users']));
+	$forum_page['crumbs'][] = $lang_admin_users['User search results'];
 
 	($hook = get_hook('aus_find_user_pre_header_load')) ? eval($hook) : null;
 
@@ -1071,15 +1081,15 @@
 
 // Setup form
 $forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
-$forum_page['form_action'] = '';
 
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])),
-	array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])),
-	array($lang_admin_common['Searches'], forum_link($forum_url['admin_users'])),
+	array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index']))
 );
+if ($forum_user['g_id'] == FORUM_ADMIN)
+	$forum_page['crumbs'][] = array($lang_admin_common['Users'], forum_link($forum_url['admin_users']));
+$forum_page['crumbs'][] = array($lang_admin_common['Searches'], forum_link($forum_url['admin_users']));
 
 ($hook = get_hook('aus_search_form_pre_header_load')) ? eval($hook) : null;
 
diff -urN punbb-1.3/delete.php punbb-1.3.4/delete.php
--- punbb-1.3/delete.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/delete.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Deletes the specified post (and, if necessary, the topic it is in).
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/edit.php punbb-1.3.4/edit.php
--- punbb-1.3/edit.php	2008-11-08 17:53:23.000000000 +0000
+++ punbb-1.3.4/edit.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Modifies the contents of the specified post.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -297,7 +297,7 @@
 <?php if ($can_edit_subject): ?>				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++ $forum_page['fld_count'] ?>"><span><?php echo $lang_post['Topic subject'] ?>  <em><?php echo $lang_common['Required'] ?></em></span></label><br />
-						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="text" name="req_subject" size="80" maxlength="70" value="<?php echo forum_htmlencode(isset($_POST['req_subject']) ? $_POST['req_subject'] : $cur_post['subject']) ?>" /></span>
+						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="text" name="req_subject" size="70" maxlength="70" value="<?php echo forum_htmlencode(isset($_POST['req_subject']) ? $_POST['req_subject'] : $cur_post['subject']) ?>" /></span>
 					</div>
 				</div>
 <?php endif; ($hook = get_hook('ed_pre_message_box')) ? eval($hook) : null; ?>				<div class="txt-set set<?php echo ++$forum_page['item_count'] ?>">
diff -urN punbb-1.3/extensions/pun_repository/manifest.xml punbb-1.3.4/extensions/pun_repository/manifest.xml
--- punbb-1.3/extensions/pun_repository/manifest.xml	2008-11-20 15:24:28.000000000 +0000
+++ punbb-1.3.4/extensions/pun_repository/manifest.xml	2009-04-30 10:12:47.000000000 +0000
@@ -440,11 +440,14 @@
 		<hook id="co_common"><![CDATA[
 $pun_extensions_used = array_merge(isset($pun_extensions_used) ? $pun_extensions_used : array(), array($ext_info['id']));
 		]]></hook>
-		<hook id="ft_about_end" priority="10"><![CDATA[
+		<hook id="ft_about_end" priority="9"><![CDATA[
 if (!defined('PUN_EXTENSIONS_USED') && !empty($pun_extensions_used))
 {
 	define('PUN_EXTENSIONS_USED', 1);
-	echo '<p id="extensions-used">Currently used extensions: '.implode(', ', $pun_extensions_used).'. Copyright &copy; 2008 <a href="http://punbb.informer.com/">PunBB</a></p>';
+	if (count($pun_extensions_used) == 1)
+		echo '<p style="clear: both; ">The '.$pun_extensions_used[0].' official extension is installed. Copyright &copy; 2003&ndash;2009 <a href="http://punbb.informer.com/">PunBB</a>.</p>';
+	else
+		echo '<p style="clear: both; ">Currently installed <span id="extensions-used" title="'.implode(', ', $pun_extensions_used).'.">'.count($pun_extensions_used).' official extensions</span>. Copyright &copy; 2003&ndash;2009 <a href="http://punbb.informer.com/">PunBB</a>.</p>';
 }
 		]]></hook>
 	</hooks>
diff -urN punbb-1.3/extern.php punbb-1.3.4/extern.php
--- punbb-1.3/extern.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/extern.php	2009-04-17 12:51:23.000000000 +0000
@@ -5,7 +5,7 @@
  * Allows forum content to be syndicated outside of the site in various formats
  * (ie: RSS, Atom, XML, HTML).
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -120,8 +120,9 @@
 	else
 		echo "\t\t".'<generator>PunBB</generator>'."\n";
 
-	foreach ($feed['items'] as $item)
+	($hook = get_hook('ex_add_new_rss_info')) ? eval($hook) : null;
 
+	foreach ($feed['items'] as $item)
 	{
 		echo "\t\t".'<item>'."\n";
 		echo "\t\t\t".'<title><![CDATA['.escape_cdata($item['title']).']]></title>'."\n";
@@ -131,6 +132,8 @@
 		echo "\t\t\t".'<pubDate>'.gmdate('r', $item['pubdate']).'</pubDate>'."\n";
 		echo "\t\t\t".'<guid>'.$item['link'].'</guid>'."\n";
 
+		($hook = get_hook('ex_add_new_rss_item_info')) ? eval($hook) : null;
+
 		echo "\t\t".'</item>'."\n";
 	}
 
@@ -164,6 +167,8 @@
 	else
 		echo "\t".'<generator>PunBB</generator>'."\n";
 
+	($hook = get_hook('ex_add_new_atom_info')) ? eval($hook) : null;
+
 	echo "\t".'<id>'.$feed['link'].'</id>'."\n";
 
 	$content_tag = ($feed['type'] == 'posts') ? 'content' : 'summary';
@@ -186,6 +191,8 @@
 		echo "\t\t\t".'</author>'."\n";
 		echo "\t\t\t".'<updated>'.gmdate('Y-m-d\TH:i:s\Z', $item['pubdate']).'</updated>'."\n";
 
+		($hook = get_hook('ex_add_new_atom_item_info')) ? eval($hook) : null;
+
 		echo "\t\t\t".'<id>'.$item['link'].'</id>'."\n";
 		echo "\t\t".'</entry>'."\n";
 	}
@@ -202,7 +209,7 @@
 	global $lang_common, $forum_config;
 
 	// Send XML/no cache headers
-	header('Content-Type: text/xml; charset=utf-8');
+	header('Content-Type: application/xml; charset=utf-8');
 	header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
 	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 	header('Pragma: public');
@@ -211,6 +218,8 @@
 	echo '<source>'."\n";
 	echo "\t".'<url>'.$feed['link'].'</url>'."\n";
 
+	($hook = get_hook('ex_add_new_xml_info')) ? eval($hook) : null;
+
 	$forum_tag = ($feed['type'] == 'posts') ? 'post' : 'topic';
 
 	foreach ($feed['items'] as $item)
@@ -232,6 +241,8 @@
 		echo "\t\t".'</author>'."\n";
 		echo "\t\t".'<posted>'.gmdate('r', $item['pubdate']).'</posted>'."\n";
 
+		($hook = get_hook('ex_add_new_xml_item_info')) ? eval($hook) : null;
+
 		echo "\t".'</'.$forum_tag.'>'."\n";
 	}
 
@@ -247,11 +258,14 @@
 
 	// Send the Content-type header in case the web server is setup to send something else
 	header('Content-type: text/html; charset=utf-8');
+	header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
+	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+	header('Pragma: public');
 
 	foreach ($feed['items'] as $item)
 	{
 		if (utf8_strlen($item['title']) > FORUM_EXTERN_MAX_SUBJECT_LENGTH)
-			$subject_truncated = forum_htmlencode(forum_trim(utf8_substr($item['title'], 0, (FORUM_EXTERN_MAX_SUBJECT_LENGTH - 5)))).' …';
+			$subject_truncated = forum_htmlencode(forum_trim(utf8_substr($item['title'], 0, (FORUM_EXTERN_MAX_SUBJECT_LENGTH - 5)))).'…';
 		else
 			$subject_truncated = forum_htmlencode($item['title']);
 
@@ -269,6 +283,8 @@
 	if ($show < 1 || $show > 50)
 		$show = 15;
 
+	($hook = get_hook('ex_set_syndication_type')) ? eval($hook) : null;
+
 	// Was a topic ID supplied?
 	if (isset($_GET['tid']))
 	{
@@ -276,7 +292,7 @@
 
 		// Fetch topic subject
 		$query = array(
-			'SELECT'	=> 't.subject, t.num_replies, t.first_post_id',
+			'SELECT'	=> 't.subject, t.first_post_id',
 			'FROM'		=> 'topics AS t',
 			'JOINS'		=> array(
 				array(
@@ -297,12 +313,15 @@
 
 		$cur_topic = $forum_db->fetch_assoc($result);
 
+		if (!defined('FORUM_PARSER_LOADED'))
+			require FORUM_ROOT.'include/parser.php';
+
 		if ($forum_config['o_censoring'] == '1')
 			$cur_topic['subject'] = censor_words($cur_topic['subject']);
 
 		// Setup the feed
 		$feed = array(
-			'title' 		=>	$forum_config['o_board_title'].' - '.$cur_topic['subject'],
+			'title' 		=>	$forum_config['o_board_title'].$lang_common['Title separator'].$cur_topic['subject'],
 			'link'			=>	forum_link($forum_url['topic'], array($tid, sef_friendly($cur_topic['subject']))),
 			'description'	=>	sprintf($lang_common['RSS description topic'], $cur_topic['subject']),
 			'items'			=>	array(),
@@ -311,7 +330,7 @@
 
 		// Fetch $show posts
 		$query = array(
-			'SELECT'	=> 'p.id, p.poster, p.message, p.posted, p.poster_id, u.email_setting, u.email, p.poster_email',
+			'SELECT'	=> 'p.id, p.poster, p.message, p.hide_smilies, p.posted, p.poster_id, u.email_setting, u.email, p.poster_email',
 			'FROM'		=> 'posts AS p',
 			'JOINS'		=> array(
 				array(
@@ -331,6 +350,8 @@
 			if ($forum_config['o_censoring'] == '1')
 				$cur_post['message'] = censor_words($cur_post['message']);
 
+			$cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);
+
 			$item = array(
 				'id'			=>	$cur_post['id'],
 				'title'			=>	$cur_topic['first_post_id'] == $cur_post['id'] ? $cur_topic['subject'] : $lang_common['RSS reply'].$cur_topic['subject'],
@@ -344,12 +365,12 @@
 
 			if ($cur_post['poster_id'] > 1)
 			{
-				if ($cur_post['email_setting'] == '0')
+				if ($cur_post['email_setting'] == '0' && !$forum_user['is_guest'])
 					$item['author']['email'] = $cur_post['email'];
 
 				$item['author']['uri'] = forum_link($forum_url['user'], $cur_post['poster_id']);
 			}
-			else if ($cur_post['poster_email'] != '')
+			else if ($cur_post['poster_email'] != '' && !$forum_user['is_guest'])
 				$item['author']['email'] = $cur_post['poster_email'];
 
 			$feed['items'][] = $item;
@@ -364,6 +385,11 @@
 	}
 	else
 	{
+		$forum_name = '';
+
+		if (!defined('FORUM_PARSER_LOADED'))
+			require FORUM_ROOT.'include/parser.php';
+
 		// Were any forum ID's supplied?
 		if (isset($_GET['fid']) && is_scalar($_GET['fid']) && $_GET['fid'] != '')
 		{
@@ -372,6 +398,26 @@
 
 			if (!empty($fids))
 				$forum_sql = ' AND t.forum_id IN('.implode(',', $fids).')';
+
+			if (count($fids) == 1)
+			{
+			// Fetch forum name
+			$query = array(
+				'SELECT'	=> 'f.forum_name',
+				'FROM'		=> 'forums AS f',
+				'JOINS'		=> array(
+					array(
+						'LEFT JOIN'		=> 'forum_perms AS fp',
+						'ON'			=> '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
+					)
+				),
+				'WHERE'		=> '(fp.read_forum IS NULL OR fp.read_forum=1) AND f.id='.$fids[0]
+			);
+
+			$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
+			if ($forum_db->num_rows($result))
+				$forum_name = $lang_common['Title separator'].$forum_db->result($result);
+			}
 		}
 
 		// Any forum ID's to exclude?
@@ -386,7 +432,7 @@
 
 		// Setup the feed
 		$feed = array(
-			'title' 		=>	$forum_config['o_board_title'],
+			'title' 		=>	$forum_config['o_board_title'].$forum_name,
 			'link'			=>	forum_link($forum_url['index']),
 			'description'	=>	sprintf($lang_common['RSS description'], $forum_config['o_board_title']),
 			'items'			=>	array(),
@@ -395,7 +441,7 @@
 
 		// Fetch $show topics
 		$query = array(
-			'SELECT'	=> 't.id, t.poster, t.subject, t.last_post, t.last_poster, p.message, u.email_setting, u.email, p.poster_id, p.poster_email',
+			'SELECT'	=> 't.id, t.poster, t.subject, t.last_post, t.last_poster, p.message, p.hide_smilies, u.email_setting, u.email, p.poster_id, p.poster_email',
 			'FROM'		=> 'topics AS t',
 			'JOINS'		=> array(
 				array(
@@ -429,11 +475,13 @@
 				$cur_topic['message'] = censor_words($cur_topic['message']);
 			}
 
+			$cur_topic['message'] = parse_message($cur_topic['message'], $cur_topic['hide_smilies']);
+
 			$item = array(
 				'id'			=>	$cur_topic['id'],
 				'title'			=>	$cur_topic['subject'],
 				'link'			=>	forum_link($forum_url['topic_new_posts'], array($cur_topic['id'], sef_friendly($cur_topic['subject']))),
-				'description'		=>	$cur_topic['message'],
+				'description'	=>	$cur_topic['message'],
 				'author'		=>	array(
 					'name'	=> $cur_topic['last_poster']
 				),
@@ -442,12 +490,12 @@
 
 			if ($cur_topic['poster_id'] > 1)
 			{
-				if ($cur_topic['email_setting'] == '0')
+				if ($cur_topic['email_setting'] == '0' && !$forum_user['is_guest'])
 					$item['author']['email'] = $cur_topic['email'];
 
 				$item['author']['uri'] = forum_link($forum_url['user'], $cur_topic['poster_id']);
 			}
-			else if ($cur_topic['poster_email'] != '')
+			else if ($cur_topic['poster_email'] != '' && !$forum_user['is_guest'])
 				$item['author']['email'] = $cur_topic['poster_email'];
 
 			$feed['items'][] = $item;
@@ -487,7 +535,7 @@
 	{
 		if ($forum_user_online['user_id'] > 1)
 		{
-			$users[] = '<a href="'.forum_link($forum_url['user'], $forum_user_online['user_id']).'">'.forum_htmlencode($forum_user_online['ident']).'</a>';
+			$users[] = $forum_user['g_view_users'] == '1' ?'<a href="'.forum_link($forum_url['user'], $forum_user_online['user_id']).'">'.forum_htmlencode($forum_user_online['ident']).'</a>' : forum_htmlencode($forum_user_online['ident']);
 			++$num_users;
 		}
 		else
@@ -495,11 +543,17 @@
 	}
 
 	($hook = get_hook('ex_pre_online_output')) ? eval($hook) : null;
+	// Send the Content-type header in case the web server is setup to send something else
+	header('Content-type: text/html; charset=utf-8');
+	header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
+	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+	header('Pragma: public');
+
 
 	echo $lang_index['Guests online'].': '.forum_number_format($num_guests).'<br />'."\n";
 
-	if ($_GET['action'] == 'online_full')
-		echo $lang_index['Users online'].': '.implode(', ', $users).'<br />'."\n";
+	if ($_GET['action'] == 'online_full' && !empty($users))
+		echo $lang_index['Users online'].': '.implode($lang_index['Online list separator'], $users).'<br />'."\n";
 	else
 		echo $lang_index['Users online'].': '.forum_number_format($num_users).'<br />'."\n";
 
@@ -544,6 +598,12 @@
 	$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 	list($stats['total_topics'], $stats['total_posts']) = $forum_db->fetch_row($result);
 
+	// Send the Content-type header in case the web server is setup to send something else
+	header('Content-type: text/html; charset=utf-8');
+	header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
+	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+	header('Pragma: public');
+
 	($hook = get_hook('ex_pre_stats_output')) ? eval($hook) : null;
 
 	echo sprintf($lang_index['No of users'], forum_number_format($stats['total_users'])).'<br />'."\n";
diff -urN punbb-1.3/footer.php punbb-1.3.4/footer.php
--- punbb-1.3/footer.php	2008-11-09 13:28:04.000000000 +0000
+++ punbb-1.3.4/footer.php	2009-05-20 09:09:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Outputs the footer used by most forum pages.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -15,11 +15,12 @@
 // START SUBST - <!-- forum_about -->
 ob_start();
 ($hook = get_hook('ft_about_output_start')) ? eval($hook) : null;
-($hook = get_hook('ft_about_pre_quickjump')) ? eval($hook) : null;
 
 // Display the "Jump to" drop list
 if ($forum_user['g_read_board'] == '1' && $forum_config['o_quickjump'] == '1')
 {
+	($hook = get_hook('ft_about_pre_quickjump')) ? eval($hook) : null;
+
 	// Load cached quickjump
 	if (file_exists(FORUM_CACHE_DIR.'cache_quickjump_'.$forum_user['g_id'].'.php'))
 		include FORUM_CACHE_DIR.'cache_quickjump_'.$forum_user['g_id'].'.php';
@@ -34,15 +35,12 @@
 	}
 }
 
-
 ($hook = get_hook('ft_about_pre_copyright')) ? eval($hook) : null;
 
-// End the transaction
-$forum_db->end_transaction();
-
 ?>
-	<p id="copyright"><?php echo sprintf($lang_common['Powered by'], '<a href="http://punbb.informer.com/">PunBB</a>'.($forum_config['o_show_version'] == '1' ? ' '.$forum_config['o_cur_version'] : '')); ?></p>
+	<p id="copyright"><?php echo sprintf($lang_common['Powered by'], '<a href="http://punbb.informer.com/">PunBB</a>'.($forum_config['o_show_version'] == '1' ? ' '.$forum_config['o_cur_version'] : ''), '<a href="http://www.informer.com/">Informer Technologies, Inc</a>') ?></p>
 <?php
+
 ($hook = get_hook('ft_about_end')) ? eval($hook) : null;
 
 $tpl_temp = forum_trim(ob_get_contents());
@@ -81,6 +79,8 @@
 // Last call!
 ($hook = get_hook('ft_end')) ? eval($hook) : null;
 
+// End the transaction
+$forum_db->end_transaction();
 
 // Close the db connection (and free up any result data)
 $forum_db->close();
diff -urN punbb-1.3/header.php punbb-1.3.4/header.php
--- punbb-1.3/header.php	2008-11-07 15:27:12.000000000 +0000
+++ punbb-1.3.4/header.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Outputs the header used by most forum pages.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -247,11 +247,11 @@
 		if ($forum_updates['fail'])
 			$alert_items['update_fail'] = '<p><strong>'.$lang_common['Updates'].'</strong> '.$lang_common['Updates failed'].'</p>';
 		else if (isset($forum_updates['version']) && isset($forum_updates['hotfix']))
-			$alert_items['update_version_hotfix'] = '<p><strong>'.$lang_common['Updates'].'</strong> '.sprintf($lang_common['Updates version n hf'], $forum_updates['version']).'</p>';
+			$alert_items['update_version_hotfix'] = '<p><strong>'.$lang_common['Updates'].'</strong> '.sprintf($lang_common['Updates version n hf'], $forum_updates['version'], forum_link($forum_url['admin_extensions_hotfixes'])).'</p>';
 		else if (isset($forum_updates['version']))
 			$alert_items['update_version'] = '<p><strong>'.$lang_common['Updates'].'</strong> '.sprintf($lang_common['Updates version'], $forum_updates['version']).'</p>';
 		else if (isset($forum_updates['hotfix']))
-			$alert_items['update_hotfix'] = '<p><strong>'.$lang_common['Updates'].'</strong> '.$lang_common['Updates hf'].'</p>';
+			$alert_items['update_hotfix'] = '<p><strong>'.$lang_common['Updates'].'</strong> '.sprintf($lang_common['Updates hf'], forum_link($forum_url['admin_extensions_hotfixes'])).'</p>';
 	}
 
 	// Warn the admin that their version of the database is newer than the version supported by the code
@@ -279,7 +279,7 @@
 // Bottom breadcrumbs
 $main_elements['<!-- forum_crumbs_end -->'] = (FORUM_PAGE != 'index') ? '<div id="brd-crumbs-end" class="crumbs gen-content">'."\n\t".'<p>'.generate_crumbs(false).'</p>'."\n".'</div>' : '';
 // Main section heading
-$main_elements['<!-- forum_main_title -->'] =  '<h1 class="main-title">'.((isset($forum_page['main_title'])) ? $forum_page['main_title'] : (is_array($last_crumb = end($forum_page['crumbs'])) ? reset($last_crumb) : $last_crumb)).(isset($forum_page['main_head_pages']) ? ' <small>'.$forum_page['main_head_pages'].'</small>' : '').'</h1>'."\n";
+$main_elements['<!-- forum_main_title -->'] =  '<h1 class="main-title">'.((isset($forum_page['main_title'])) ? $forum_page['main_title'] : forum_htmlencode(is_array($last_crumb = end($forum_page['crumbs'])) ? reset($last_crumb) : $last_crumb)).(isset($forum_page['main_head_pages']) ? ' <small>'.$forum_page['main_head_pages'].'</small>' : '').'</h1>'."\n";
 
 // Top pagination and post links
 $main_elements['<!-- forum_main_pagepost_top -->'] = (!empty($forum_page['page_post'])) ? '<div id="brd-pagepost-top" class="main-pagepost gen-content">'."\n\t".implode("\n\t", $forum_page['page_post'])."\n".'</div>' : '';
diff -urN punbb-1.3/help.php punbb-1.3.4/help.php
--- punbb-1.3/help.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/help.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Provides examples of how to use various features of the forum (ie: BBCode, smilies).
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -26,7 +26,11 @@
 if (!$section)
 	message($lang_common['Bad request']);
 
-$page_title = forum_htmlencode($forum_config['o_board_title']).' - '.$lang_help['Help'];
+$forum_page['crumbs'] = array( 
+	array($forum_config['o_board_title'], forum_link($forum_url['help'])), 
+	$lang_help['Help'] 
+);
+
 define('FORUM_PAGE', 'help');
 require FORUM_ROOT.'header.php';
 
@@ -102,7 +106,7 @@
 				<samp><a href="mailto:name@example.com">name@example.com</a></samp>
 			</div>
 			<div class="entry-content">
-				<code>[email=name@example.com]<?php echo $lang_help['My e-mail address'] ?>[/email]</code><span><?php echo $lang_help['produces'] ?></span>
+				<code>[email=name@example.com]<?php echo $lang_help['My e-mail address'] ?>[/email]</code> <span><?php echo $lang_help['produces'] ?></span>
 				<samp><a href="mailto:name@example.com"><?php echo $lang_help['My e-mail address'] ?></a></samp>
 			</div>
 <?php ($hook = get_hook('he_new_bbcode_link')) ? eval($hook) : null; ?>
diff -urN punbb-1.3/include/cache.php punbb-1.3.4/include/cache.php
--- punbb-1.3/include/cache.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/include/cache.php	2009-04-17 12:51:23.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * This file contains all of the functions used to generate the cache files used by the site.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -371,7 +371,7 @@
 		$output = xml_to_array(forum_trim($result['content']));
 		$output = current($output);
 
-		if (is_array($output['hotfix']) && !is_array(current($output['hotfix'])))
+		if (!empty($output['hotfix']) && is_array($output['hotfix']) && !is_array(current($output['hotfix'])))
 			$output['hotfix'] = array($output['hotfix']);
 
 		$output['cached'] = time();
diff -urN punbb-1.3/include/common.php punbb-1.3.4/include/common.php
--- punbb-1.3/include/common.php	2008-10-30 16:06:04.000000000 +0000
+++ punbb-1.3.4/include/common.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads common data and performs various functions necessary for the site to work properly.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/common_admin.php punbb-1.3.4/include/common_admin.php
--- punbb-1.3/include/common_admin.php	2008-10-30 11:34:55.000000000 +0000
+++ punbb-1.3.4/include/common_admin.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads common functions used in the administration panel.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -35,7 +35,7 @@
 			if ($forum_config['o_censoring'] == '1')
 				$forum_page['admin_submenu']['censoring'] = '<li class="'.((FORUM_PAGE == 'admin-censoring') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_censoring']).'">'.$lang_admin_common['Censoring'].'</a></li>';
 
-			$form_page['admin_submenu']['reports'] = '<li class="'.((FORUM_PAGE == 'admin-reports') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_reports']).'">'.$lang_admin_common['Reports'].'</a></li>';
+			$forum_page['admin_submenu']['reports'] = '<li class="'.((FORUM_PAGE == 'admin-reports') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_reports']).'">'.$lang_admin_common['Reports'].'</a></li>';
 
 			if ($forum_user['g_mod_ban_users'] == '1')
 				$forum_page['admin_submenu']['bans'] = '<li class="'.((FORUM_PAGE == 'admin-bans') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_bans']).'">'.$lang_admin_common['Bans'].'</a></li>';
@@ -50,7 +50,7 @@
 			}
 			else if (FORUM_PAGE_SECTION == 'users')
 			{
-				$forum_page['admin_submenu']['users'] = '<li class="'.((FORUM_PAGE == 'admin-users') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_users']).'">'.$lang_admin_common['Searches'].'</a></li>';
+				$forum_page['admin_submenu']['users'] = '<li class="'.((FORUM_PAGE == 'admin-users' || FORUM_PAGE == 'admin-uresults' || FORUM_PAGE == 'admin-iresults') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_users']).'">'.$lang_admin_common['Searches'].'</a></li>';
 				$forum_page['admin_submenu']['groups'] = '<li class="'.((FORUM_PAGE == 'admin-groups') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_groups']).'">'.$lang_admin_common['Groups'].'</a></li>';
 				$forum_page['admin_submenu']['ranks'] = '<li class="'.((FORUM_PAGE == 'admin-ranks') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_ranks']).'">'.$lang_admin_common['Ranks'].'</a></li>';
 				$forum_page['admin_submenu']['bans'] = '<li class="'.((FORUM_PAGE == 'admin-bans') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['admin_bans']).'">'.$lang_admin_common['Bans'].'</a></li>';
diff -urN punbb-1.3/include/dblayer/common_db.php punbb-1.3.4/include/dblayer/common_db.php
--- punbb-1.3/include/dblayer/common_db.php	2008-10-23 07:49:10.000000000 +0000
+++ punbb-1.3.4/include/dblayer/common_db.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the proper database layer class.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/dblayer/mysql.php punbb-1.3.4/include/dblayer/mysql.php
--- punbb-1.3/include/dblayer/mysql.php	2008-10-30 17:09:06.000000000 +0000
+++ punbb-1.3.4/include/dblayer/mysql.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the MySQL PHP extension.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/dblayer/mysqli.php punbb-1.3.4/include/dblayer/mysqli.php
--- punbb-1.3/include/dblayer/mysqli.php	2008-10-30 17:09:06.000000000 +0000
+++ punbb-1.3.4/include/dblayer/mysqli.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the MySQLi PHP extension.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/dblayer/pgsql.php punbb-1.3.4/include/dblayer/pgsql.php
--- punbb-1.3/include/dblayer/pgsql.php	2008-10-30 17:09:06.000000000 +0000
+++ punbb-1.3.4/include/dblayer/pgsql.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the PostgreSQL PHP extension.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/dblayer/sqlite.php punbb-1.3.4/include/dblayer/sqlite.php
--- punbb-1.3/include/dblayer/sqlite.php	2008-11-06 22:34:26.000000000 +0000
+++ punbb-1.3.4/include/dblayer/sqlite.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the SQLite PHP extension.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/email.php punbb-1.3.4/include/email.php
--- punbb-1.3/include/email.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/include/email.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads functions used in dealing with email addresses and email sending.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/essentials.php punbb-1.3.4/include/essentials.php
--- punbb-1.3/include/essentials.php	2008-11-09 13:35:41.000000000 +0000
+++ punbb-1.3.4/include/essentials.php	2009-05-20 09:20:51.000000000 +0000
@@ -2,21 +2,21 @@
 /**
  * Loads the minimum amount of data (eg: functions, database connection, config data, etc) necessary to integrate the site.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 // Enable DEBUG mode by removing // from the following line
-define('FORUM_DEBUG', 1);
+//define('FORUM_DEBUG', 1);
 
 if (!defined('FORUM_ROOT'))
 	exit('The constant FORUM_ROOT must be defined and point to a valid PunBB installation root directory.');
 
 // Define the version and database revision that this code was written for
-define('FORUM_VERSION', '1.3');
-define('FORUM_DB_REVISION', 3);
+define('FORUM_VERSION', '1.3.4');
+define('FORUM_DB_REVISION', 4);
 
 // Load the functions script
 require FORUM_ROOT.'include/functions.php';
@@ -63,7 +63,10 @@
 $forum_start = ((float)$usec + (float)$sec);
 
 // Make sure PHP reports all errors except E_NOTICE. PunBB supports E_ALL, but a lot of scripts it may interact with, do not.
-error_reporting(E_ALL);
+if (defined('FORUM_DEBUG'))
+	error_reporting(E_ALL);
+else
+	error_reporting(E_ALL ^ E_NOTICE);
 
 // Force POSIX locale (to prevent functions such as strtolower() from messing up UTF-8 strings)
 setlocale(LC_CTYPE, 'C');
@@ -106,7 +109,7 @@
 
 // Verify that we are running the proper database schema revision
 if (defined('PUN') || !isset($forum_config['o_database_revision']) || $forum_config['o_database_revision'] < FORUM_DB_REVISION || version_compare($forum_config['o_cur_version'], FORUM_VERSION, '<'))
-	error('Your PunBB database is out-of-date and must be upgraded in order to continue. Please run <a href="'.FORUM_ROOT.'admin/db_update.php">db_update.php</a> in order to complete the upgrade process.');
+	error('Your PunBB database is out-of-date and must be upgraded in order to continue. Please run <a href="'.$base_url.'/admin/db_update.php">db_update.php</a> in order to complete the upgrade process.');
 
 
 // Load hooks
diff -urN punbb-1.3/include/functions.php punbb-1.3.4/include/functions.php
--- punbb-1.3/include/functions.php	2008-11-07 13:12:25.000000000 +0000
+++ punbb-1.3.4/include/functions.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads common functions used throughout the site.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -448,7 +448,7 @@
 		else
 		{
 			$links['search'] = '<li id="navsearch"'.((FORUM_PAGE == 'search') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['search']).'">'.$lang_common['Search'].'</a></li>';
-			$links['profile'] = '<li id="navprofile"'.((FORUM_PAGE == 'editprofile' || FORUM_PAGE == 'viewprofile') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['user'], $forum_user['id']).'">'.$lang_common['Profile'].'</a></li>';
+			$links['profile'] = '<li id="navprofile"'.((substr(FORUM_PAGE, 0, 7) == 'profile') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['user'], $forum_user['id']).'">'.$lang_common['Profile'].'</a></li>';
 			$links['logout'] = '<li id="navlogout"><a href="'.forum_link($forum_url['logout'], array($forum_user['id'], generate_form_token('logout'.$forum_user['id']))).'">'.$lang_common['Logout'].'</a></li>';
 			$links['admin'] = '<li id="navadmin"'.((substr(FORUM_PAGE, 0, 5) == 'admin') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['admin_index']).'">'.$lang_common['Admin'].'</a></li>';
 		}
@@ -631,7 +631,7 @@
 <div id="brd-debug" class="main">
 
 	<div class="main-head">
-		<h2><span><?php echo $lang_common['Debug table'] ?></span></h2>
+		<h2 class="hn"><span><?php echo $lang_common['Debug table'] ?></span></h2>
 	</div>
 
 	<div class="main-content debug">
@@ -937,10 +937,17 @@
 function get_scheme_packs()
 {
   	$schemes = array();
-
-	foreach (glob(FORUM_ROOT.'include/url/*') as $dirname)
-		if (is_dir($dirname) && file_exists($dirname.'/forum_urls.php'))
-			$schemes[] = basename($dirname);
+	
+	if($handle = opendir(FORUM_ROOT.'include/url'))
+	{
+		while (false !== ($dirname = readdir($handle)))
+		{
+			$dirname =  FORUM_ROOT.'include/url/'.$dirname;
+			if (is_dir($dirname) && file_exists($dirname.'/forum_urls.php'))
+				$schemes[] = basename($dirname);
+		}
+		closedir($handle);
+	}
 
 	($hook = get_hook('fn_get_scheme_packs_end')) ? eval($hook) : null;
 
@@ -952,12 +959,17 @@
 function get_style_packs()
 {
 	$styles = array();
-
-	foreach (glob(FORUM_ROOT.'style/*') as $dirname)
+	
+	if($handle = opendir(FORUM_ROOT.'style'))
 	{
-		$tempname = basename($dirname);
-		if (is_dir($dirname) && file_exists($dirname.'/'.$tempname.'.php'))
-			$styles[] = $tempname;
+		while (false !== ($dirname = readdir($handle)))
+		{
+			$dirname =  FORUM_ROOT.'style/'.$dirname;
+			$tempname = basename($dirname);
+			if (is_dir($dirname) && file_exists($dirname.'/'.$tempname.'.php'))
+				$styles[] = $tempname;
+		}
+		closedir($handle);
 	}
 
 	($hook = get_hook('fn_get_style_packs_end')) ? eval($hook) : null;
@@ -971,9 +983,16 @@
 {
 	$languages = array();
 
-	foreach (glob(FORUM_ROOT.'lang/*') as $dirname)
-		if (is_dir($dirname) && file_exists($dirname.'/common.php'))
-			$languages[] = basename($dirname);
+	if($handle = opendir(FORUM_ROOT.'lang'))
+	{
+		while (false !== ($dirname = readdir($handle)))
+		{
+			$dirname =  FORUM_ROOT.'lang/'.$dirname;
+			if (is_dir($dirname) && file_exists($dirname.'/common.php'))
+				$languages[] = basename($dirname);
+		}
+		closedir($handle);
+	}
 
 	($hook = get_hook('fn_get_language_packs_end')) ? eval($hook) : null;
 
@@ -1341,44 +1360,47 @@
 
 	$forum_user = $forum_db->fetch_assoc($result);
 
-	// Update online list
-	if (!$forum_user['logged'])
+	if (!defined('FORUM_QUIET_VISIT'))
 	{
-		$forum_user['logged'] = time();
-		$forum_user['csrf_token'] = random_key(40, false, true);
-		$forum_user['prev_url'] = get_current_url(255);
+		// Update online list
+		if (!$forum_user['logged'])
+		{
+			$forum_user['logged'] = time();
+			$forum_user['csrf_token'] = random_key(40, false, true);
+			$forum_user['prev_url'] = get_current_url(255);
 
-		// REPLACE INTO avoids a user having two rows in the online table
-		$query = array(
-			'REPLACE'	=> 'user_id, ident, logged, csrf_token',
-			'INTO'		=> 'online',
-			'VALUES'	=> '1, \''.$forum_db->escape($remote_addr).'\', '.$forum_user['logged'].', \''.$forum_user['csrf_token'].'\'',
-			'UNIQUE'	=> 'user_id=1 AND ident=\''.$forum_db->escape($remote_addr).'\''
-		);
+			// REPLACE INTO avoids a user having two rows in the online table
+			$query = array(
+				'REPLACE'	=> 'user_id, ident, logged, csrf_token',
+				'INTO'		=> 'online',
+				'VALUES'	=> '1, \''.$forum_db->escape($remote_addr).'\', '.$forum_user['logged'].', \''.$forum_user['csrf_token'].'\'',
+				'UNIQUE'	=> 'user_id=1 AND ident=\''.$forum_db->escape($remote_addr).'\''
+			);
 
-		if ($forum_user['prev_url'] != null)
-		{
-			$query['REPLACE'] .= ', prev_url';
-			$query['VALUES'] .= ', \''.$forum_db->escape($forum_user['prev_url']).'\'';
-		}
+			if ($forum_user['prev_url'] != null)
+			{
+				$query['REPLACE'] .= ', prev_url';
+				$query['VALUES'] .= ', \''.$forum_db->escape($forum_user['prev_url']).'\'';
+			}
 
-		($hook = get_hook('fn_set_default_user_qr_add_online_guest_user')) ? eval($hook) : null;
-		$forum_db->query_build($query) or error(__FILE__, __LINE__);
-	}
-	else
-	{
-		$query = array(
-			'UPDATE'	=> 'online',
-			'SET'		=> 'logged='.time(),
-			'WHERE'		=> 'ident=\''.$forum_db->escape($remote_addr).'\''
-		);
+			($hook = get_hook('fn_set_default_user_qr_add_online_guest_user')) ? eval($hook) : null;
+			$forum_db->query_build($query) or error(__FILE__, __LINE__);
+		}
+		else
+		{
+			$query = array(
+				'UPDATE'	=> 'online',
+				'SET'		=> 'logged='.time(),
+				'WHERE'		=> 'ident=\''.$forum_db->escape($remote_addr).'\''
+			);
 
-		$current_url = get_current_url(255);
-		if ($current_url != null)
-			$query['SET'] .= ', prev_url=\''.$forum_db->escape($current_url).'\'';
+			$current_url = get_current_url(255);
+			if ($current_url != null)
+				$query['SET'] .= ', prev_url=\''.$forum_db->escape($current_url).'\'';
 
-		($hook = get_hook('fn_set_default_user_qr_update_online_guest_user')) ? eval($hook) : null;
-		$forum_db->query_build($query) or error(__FILE__, __LINE__);
+			($hook = get_hook('fn_set_default_user_qr_update_online_guest_user')) ? eval($hook) : null;
+			$forum_db->query_build($query) or error(__FILE__, __LINE__);
+		}
 	}
 
 	$forum_user['disp_topics'] = $forum_config['o_disp_topics_default'];
@@ -1389,6 +1411,8 @@
 	$forum_user['style'] = $forum_config['o_default_style'];
 	$forum_user['is_guest'] = true;
 	$forum_user['is_admmod'] = false;
+
+	($hook = get_hook('fn_set_default_user_end')) ? eval($hook) : null;
 }
 
 
@@ -2572,9 +2596,9 @@
 	if (isset($_POST['confirm_cancel']))
 		redirect(forum_htmlencode($_POST['prev_url']), $lang_common['Cancel redirect']);
 
-		// A helper function for csrf_confirm_form. It takes a multi-dimensional array and returns it as a
+	// A helper function for csrf_confirm_form. It takes a multi-dimensional array and returns it as a
 	// single-dimensional array suitable for use in hidden fields.
-		function _csrf_confirm_form($key, $values)
+	function _csrf_confirm_form($key, $values)
 	{
 		$fields = array();
 
@@ -2756,7 +2780,7 @@
 	ob_start();
 
 ?>
-<title><?php echo $lang_common['Maintenance'].' - '.forum_htmlencode($forum_config['o_board_title']) ?></title>
+<title><?php echo $lang_common['Maintenance'].$lang_common['Title separator'].forum_htmlencode($forum_config['o_board_title']) ?></title>
 <link rel="stylesheet" type="text/css" media="screen" href="<?php echo $base_url ?>/style/<?php echo $forum_user['style'] ?>/<?php echo $forum_user['style'].'.css' ?>" />
 <link rel="stylesheet" type="text/css" media="screen" href="<?php echo $base_url ?>/style/<?php echo $forum_user['style'] ?>/<?php echo $forum_user['style'].'_cs.css' ?>" />
 <!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="<?php echo $base_url ?>/style/<?php echo $forum_user['style'] ?>/<?php echo $forum_user['style'].'_fix.css' ?>" /><![endif]-->
@@ -2773,7 +2797,7 @@
 	ob_start();
 
 ?>
-<div id="brd-main" class="main basic">
+<div id="brd-maint" class="main basic">
 
 	<div class="main-head">
 		<h1 class="hn"><span><?php echo $lang_common['Maintenance mode'] ?></span></h1>
@@ -2868,7 +2892,7 @@
 	// START SUBST - <!-- forum_head -->
 
 	$forum_head['refresh'] = '<meta http-equiv="refresh" content="'.$forum_config['o_redirect_delay'].';URL='.str_replace(array('<', '>', '"'), array('&lt;', '&gt;', '&quot;'), $destination_url).'" />';
-	$forum_head['title'] = '<title>'.$lang_common['Redirecting'].' - '.forum_htmlencode($forum_config['o_board_title']).'</title>';
+	$forum_head['title'] = '<title>'.$lang_common['Redirecting'].$lang_common['Title separator'].forum_htmlencode($forum_config['o_board_title']).'</title>';
 
 	ob_start();
 
@@ -2947,14 +2971,16 @@
 // Display a simple error message
 function error()
 {
+	global $forum_config;
+
 	if (!headers_sent())
 	{
+		// if no HTTP responce code is set we send 503
+		if (!defined('FORUM_HTTP_RESPONSE_CODE_SET'))
+			header('HTTP/1.1 503 Service Temporarily Unavailable');
 		header('Content-type: text/html; charset=utf-8');
-		header('HTTP/1.1 503 Service Temporarily Unavailable');
 	}
 
-	global $forum_config;
-
 	/*
 		Parse input parameters. Possible function signatures:
 		error('Error message.');
@@ -2987,7 +3013,7 @@
 	while (@ob_end_clean());
 
 	// "Restart" output buffering if we are using ob_gzhandler (since the gzip header is already sent)
-	if (!empty($forum_config['o_gzip']) && extension_loaded('zlib') && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false || strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') !== false))
+	if (!empty($forum_config['o_gzip']) && extension_loaded('zlib') && !empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false || strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') !== false))
 		ob_start('ob_gzhandler');
 
 ?>
diff -urN punbb-1.3/include/parser.php punbb-1.3.4/include/parser.php
--- punbb-1.3/include/parser.php	2008-10-23 07:49:10.000000000 +0000
+++ punbb-1.3.4/include/parser.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads various functions used to parse posts.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -681,8 +681,8 @@
 
 	if (strpos($text, '[quote') !== false)
 	{
+		$text = preg_replace('#\[quote=(&quot;|"|\'|)(.*?)\\1\]#e', '"</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'&#91;\', \'"\'), \'$2\')." ".$lang_common[\'wrote\'].":</cite><blockquote><p>"', $text);
 		$text = preg_replace('#\[quote\]\s*#', '</p><div class="quotebox"><blockquote><p>', $text);
-		$text = preg_replace('#\[quote=(&quot;|"|\'|)(.*?)\\1\]#se', '"</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'&#91;\', \'"\'), \'$2\')." ".$lang_common[\'wrote\'].":</cite><blockquote><p>"', $text);
 		$text = preg_replace('#\s*\[\/quote\]#S', '</p></blockquote></div><p>', $text);
 	}
 
@@ -700,7 +700,7 @@
 
 	$replace[] = '<strong>$1</strong>';
 	$replace[] = '<em>$1</em>';
-	$replace[] = '<em class="bbuline">$1</em>';
+	$replace[] = '<span class="bbu">$1</span>';
 	$replace[] = '<span style="color: $1">$2</span>';
 	$replace[] = '</p><h5>$1</h5><p>';
 
@@ -752,7 +752,7 @@
 {
 	$text = ' '.$text;
 
-	$text = preg_replace('#(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(https?|ftp|news){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^\s\[]*[^\s.,?!\[;:-])?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])#ie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5://$6\', \'$5://$6\', true).stripslashes(\'$4$10$11$12\')', $text);
+	$text = preg_replace('#(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(https?|ftp|news){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^\s\[]*[^\s.,?!\[;:-]?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])#ie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5://$6\', \'$5://$6\', true).stripslashes(\'$4$10$11$12\')', $text);
 	$text = preg_replace('#(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^\s\[]*[^\s.,?!\[;:-])?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])#ie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5.$6\', \'$5.$6\', true).stripslashes(\'$4$10$11$12\')', $text);
 
 	return substr($text, 1);
@@ -766,6 +766,10 @@
 {
 	global $forum_config, $base_url, $smilies;
 
+	$return = ($hook = get_hook('ps_do_smilies_start')) ? eval($hook) : null;
+	if ($return != null)
+		return $return;
+
 	$text = ' '.$text.' ';
 
 	foreach ($smilies as $smiley_text => $smiley_img)
@@ -774,6 +778,8 @@
 			$text = preg_replace("#(?<=[>\s])".preg_quote($smiley_text, '#')."(?=\W)#m", '<img src="'.$base_url.'/img/smilies/'.$smiley_img.'" width="15" height="15" alt="'.substr($smiley_img, 0, strrpos($smiley_img, '.')).'" />', $text);
 	}
 
+	$return = ($hook = get_hook('ps_do_smilies_end')) ? eval($hook) : null;
+
 	return substr($text, 1, -1);
 }
 
diff -urN punbb-1.3/include/search_functions.php punbb-1.3.4/include/search_functions.php
--- punbb-1.3/include/search_functions.php	2008-10-30 13:04:00.000000000 +0000
+++ punbb-1.3.4/include/search_functions.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads various functions that are used for searching the forum.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -788,14 +788,14 @@
 		case 'show_user_posts':
 			$forum_page['crumbs'][] = sprintf($lang_search['Posts by'], $search_set[0]['pposter'], ($forum_page['start_from'] + 1), $num_hits);
 			$forum_page['items_info'] = generate_items_info($lang_search['Posts found'], ($forum_page['start_from'] + 1), $num_hits);
-			$forum_page['main_head_options']['user_topics'] = '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_user_topics'], $search_id).'">'.sprintf($lang_search['Topics by'], $search_set[0]['pposter']).'</a></span>';
+			$forum_page['main_head_options']['user_topics'] = '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_user_topics'], $search_id).'">'.sprintf($lang_search['Topics by'], forum_htmlencode($search_set[0]['pposter'])).'</a></span>';
 			$forum_page['main_head_options']['defined_search'] = '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search']).'">'.$lang_search['User defined search'].'</a></span>';
 			break;
 
 		case 'show_user_topics':
 			$forum_page['crumbs'][] = sprintf($lang_search['Topics by'], $search_set[0]['poster']);
 			$forum_page['items_info'] = generate_items_info($lang_search['Topics found'], ($forum_page['start_from'] + 1), $num_hits);
-			$forum_page['main_head_options']['user_posts'] =  '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_user_posts'], $search_id).'">'.sprintf($lang_search['Posts by'], $search_set[0]['poster']).'</a></span>';
+			$forum_page['main_head_options']['user_posts'] =  '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_user_posts'], $search_id).'">'.sprintf($lang_search['Posts by'], forum_htmlencode($search_set[0]['poster'])).'</a></span>';
 			$forum_page['main_head_options']['defined_search'] = '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search']).'">'.$lang_search['User defined search'].'</a></span>';
 			break;
 
diff -urN punbb-1.3/include/search_idx.php punbb-1.3.4/include/search_idx.php
--- punbb-1.3/include/search_idx.php	2008-11-05 12:42:27.000000000 +0000
+++ punbb-1.3.4/include/search_idx.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Load various functions used in indexing posts and topics for searching.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/url/Default/forum_urls.php punbb-1.3.4/include/url/Default/forum_urls.php
--- punbb-1.3/include/url/Default/forum_urls.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Default/forum_urls.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Regular URL scheme.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/url/Default/index.html punbb-1.3.4/include/url/Default/index.html
--- punbb-1.3/include/url/Default/index.html	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Default/index.html	2009-03-13 15:55:28.000000000 +0000
@@ -5,12 +5,4 @@
 <body>
 .
 </body>
-</html>
-<html>
-<head>
-<title>.</title>
-</head>
-<body>
-.
-</body>
-</html>
+</html>
\ No newline at end of file
diff -urN punbb-1.3/include/url/Default/reserved_strings.php punbb-1.3.4/include/url/Default/reserved_strings.php
--- punbb-1.3/include/url/Default/reserved_strings.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Default/reserved_strings.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,22 +3,22 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_reserved_strings = array(
-	''		=>	'view',
+	''				=>	'view',
 
-	'newpost'	=>	'view',
-	'newposts'	=>	'view',
-	'new-post'	=>	'view',
-	'new-posts'	=>	'view',
+	'newpost'		=>	'view',
+	'newposts'		=>	'view',
+	'new-post'		=>	'view',
+	'new-posts'		=>	'view',
 
-	'lastpost'	=>	'view',
-	'lastposts'	=>	'view',
-	'last-post'	=>	'view',
+	'lastpost'		=>	'view',
+	'lastposts'		=>	'view',
+	'last-post'		=>	'view',
 	'last-posts'	=>	'view',
 );
diff -urN punbb-1.3/include/url/Default/rewrite_rules.php punbb-1.3.4/include/url/Default/rewrite_rules.php
--- punbb-1.3/include/url/Default/rewrite_rules.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Default/rewrite_rules.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,17 +2,17 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_rewrite_rules = array(
-	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'													=>	'viewtopic.php?id=$1&action=$2',
+	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'														=>	'viewtopic.php?id=$1&action=$2',
 	'/^post[\/_-]?([0-9]+)(\.html?|\/)?$/i'																					=>	'viewtopic.php?pid=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'view$1.php?id=$2&p=$4',
-	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'											=>	'extern.php?action=feed&$2id=$4&type=$1',
+	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'									=>	'extern.php?action=feed&$2id=$4&type=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*(\.html?|\/)?$/i'																		=>	'view$1.php?id=$2',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)(\.html?|\/)?$/i'																		=>	'post.php?tid=$1',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)[\/_-]?quote[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'post.php?tid=$1&qid=$2',
@@ -44,7 +44,7 @@
 	'/^search-k(.*)-(message|subject|all)-a(.*)-([0-9]+)-(ASC|DESC)-([0-9-]+)-(posts|topics)-p([0-9]+).html?$/i'			=>	'search.php?action=search&keywords=$1&author=$3&forum=$6&search_in=$2&sort_by=$4&sort_dir=$5&show_as=$7&p=$8',
 	'/^users(\.html?|\/)?$/i'																								=>	'userlist.php',
 	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'						=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4&p=$6',
-	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'											=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
+	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'													=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
 	'/^(email|report|subscribe|unsubscribe)[\/_-]?([0-9]+)[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'								=>	'misc.php?$1=$2&csrf_token=$3',
 	'/^(mark|rules)[\/_-]?(read)?[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'														=>	'misc.php?action=$1$2&csrf_token=$3',
 	'/^mark[\/_-](forum)[\/_-]?([0-9]+)[\/_-](read)[\/_-]([a-z0-9]+)(\.html?|\/)?$/i'										=>	'misc.php?action=markforumread&fid=$2&csrf_token=$4',
diff -urN punbb-1.3/include/url/File_based/forum_urls.php punbb-1.3.4/include/url/File_based/forum_urls.php
--- punbb-1.3/include/url/File_based/forum_urls.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based/forum_urls.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * SEF URLs that use a file-like layout.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/url/File_based/index.html punbb-1.3.4/include/url/File_based/index.html
--- punbb-1.3/include/url/File_based/index.html	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based/index.html	2009-03-13 15:55:28.000000000 +0000
@@ -5,12 +5,4 @@
 <body>
 .
 </body>
-</html>
-<html>
-<head>
-<title>.</title>
-</head>
-<body>
-.
-</body>
-</html>
+</html>
\ No newline at end of file
diff -urN punbb-1.3/include/url/File_based/reserved_strings.php punbb-1.3.4/include/url/File_based/reserved_strings.php
--- punbb-1.3/include/url/File_based/reserved_strings.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based/reserved_strings.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,22 +3,22 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_reserved_strings = array(
-	''		=>	'view',
+	''				=>	'view',
 
-	'newpost'	=>	'view',
-	'newposts'	=>	'view',
-	'new-post'	=>	'view',
-	'new-posts'	=>	'view',
+	'newpost'		=>	'view',
+	'newposts'		=>	'view',
+	'new-post'		=>	'view',
+	'new-posts'		=>	'view',
 
-	'lastpost'	=>	'view',
-	'lastposts'	=>	'view',
-	'last-post'	=>	'view',
+	'lastpost'		=>	'view',
+	'lastposts'		=>	'view',
+	'last-post'		=>	'view',
 	'last-posts'	=>	'view',
 );
diff -urN punbb-1.3/include/url/File_based/rewrite_rules.php punbb-1.3.4/include/url/File_based/rewrite_rules.php
--- punbb-1.3/include/url/File_based/rewrite_rules.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based/rewrite_rules.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,17 +2,17 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_rewrite_rules = array(
-	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'													=>	'viewtopic.php?id=$1&action=$2',
+	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'														=>	'viewtopic.php?id=$1&action=$2',
 	'/^post[\/_-]?([0-9]+)(\.html?|\/)?$/i'																					=>	'viewtopic.php?pid=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'view$1.php?id=$2&p=$4',
-	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'											=>	'extern.php?action=feed&$2id=$4&type=$1',
+	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'									=>	'extern.php?action=feed&$2id=$4&type=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*(\.html?|\/)?$/i'																		=>	'view$1.php?id=$2',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)(\.html?|\/)?$/i'																		=>	'post.php?tid=$1',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)[\/_-]?quote[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'post.php?tid=$1&qid=$2',
@@ -44,7 +44,7 @@
 	'/^search-k(.*)-(message|subject|all)-a(.*)-([0-9]+)-(ASC|DESC)-([0-9-]+)-(posts|topics)-p([0-9]+).html?$/i'			=>	'search.php?action=search&keywords=$1&author=$3&forum=$6&search_in=$2&sort_by=$4&sort_dir=$5&show_as=$7&p=$8',
 	'/^users(\.html?|\/)?$/i'																								=>	'userlist.php',
 	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'						=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4&p=$6',
-	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'											=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
+	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'													=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
 	'/^(email|report|subscribe|unsubscribe)[\/_-]?([0-9]+)[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'								=>	'misc.php?$1=$2&csrf_token=$3',
 	'/^(mark|rules)[\/_-]?(read)?[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'														=>	'misc.php?action=$1$2&csrf_token=$3',
 	'/^mark[\/_-](forum)[\/_-]?([0-9]+)[\/_-](read)[\/_-]([a-z0-9]+)(\.html?|\/)?$/i'										=>	'misc.php?action=markforumread&fid=$2&csrf_token=$4',
diff -urN punbb-1.3/include/url/File_based_(fancy)/forum_urls.php punbb-1.3.4/include/url/File_based_(fancy)/forum_urls.php
--- punbb-1.3/include/url/File_based_(fancy)/forum_urls.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based_(fancy)/forum_urls.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,7 +3,7 @@
  * SEF URLs that use a file-like layout and include topic name and forum name
  * where applicable.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/url/File_based_(fancy)/index.html punbb-1.3.4/include/url/File_based_(fancy)/index.html
--- punbb-1.3/include/url/File_based_(fancy)/index.html	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based_(fancy)/index.html	2009-03-13 15:55:28.000000000 +0000
@@ -5,12 +5,4 @@
 <body>
 .
 </body>
-</html>
-<html>
-<head>
-<title>.</title>
-</head>
-<body>
-.
-</body>
-</html>
+</html>
\ No newline at end of file
diff -urN punbb-1.3/include/url/File_based_(fancy)/reserved_strings.php punbb-1.3.4/include/url/File_based_(fancy)/reserved_strings.php
--- punbb-1.3/include/url/File_based_(fancy)/reserved_strings.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based_(fancy)/reserved_strings.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,22 +3,22 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_reserved_strings = array(
-	''		=>	'view',
+	''				=>	'view',
 
-	'newpost'	=>	'view',
-	'newposts'	=>	'view',
-	'new-post'	=>	'view',
-	'new-posts'	=>	'view',
+	'newpost'		=>	'view',
+	'newposts'		=>	'view',
+	'new-post'		=>	'view',
+	'new-posts'		=>	'view',
 
-	'lastpost'	=>	'view',
-	'lastposts'	=>	'view',
-	'last-post'	=>	'view',
+	'lastpost'		=>	'view',
+	'lastposts'		=>	'view',
+	'last-post'		=>	'view',
 	'last-posts'	=>	'view',
 );
diff -urN punbb-1.3/include/url/File_based_(fancy)/rewrite_rules.php punbb-1.3.4/include/url/File_based_(fancy)/rewrite_rules.php
--- punbb-1.3/include/url/File_based_(fancy)/rewrite_rules.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/File_based_(fancy)/rewrite_rules.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,17 +2,17 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_rewrite_rules = array(
-	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'													=>	'viewtopic.php?id=$1&action=$2',
+	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'														=>	'viewtopic.php?id=$1&action=$2',
 	'/^post[\/_-]?([0-9]+)(\.html?|\/)?$/i'																					=>	'viewtopic.php?pid=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'view$1.php?id=$2&p=$4',
-	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'											=>	'extern.php?action=feed&$2id=$4&type=$1',
+	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'									=>	'extern.php?action=feed&$2id=$4&type=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*(\.html?|\/)?$/i'																		=>	'view$1.php?id=$2',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)(\.html?|\/)?$/i'																		=>	'post.php?tid=$1',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)[\/_-]?quote[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'post.php?tid=$1&qid=$2',
@@ -44,7 +44,7 @@
 	'/^search-k(.*)-(message|subject|all)-a(.*)-([0-9]+)-(ASC|DESC)-([0-9-]+)-(posts|topics)-p([0-9]+).html?$/i'			=>	'search.php?action=search&keywords=$1&author=$3&forum=$6&search_in=$2&sort_by=$4&sort_dir=$5&show_as=$7&p=$8',
 	'/^users(\.html?|\/)?$/i'																								=>	'userlist.php',
 	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'						=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4&p=$6',
-	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'											=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
+	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'													=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
 	'/^(email|report|subscribe|unsubscribe)[\/_-]?([0-9]+)[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'								=>	'misc.php?$1=$2&csrf_token=$3',
 	'/^(mark|rules)[\/_-]?(read)?[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'														=>	'misc.php?action=$1$2&csrf_token=$3',
 	'/^mark[\/_-](forum)[\/_-]?([0-9]+)[\/_-](read)[\/_-]([a-z0-9]+)(\.html?|\/)?$/i'										=>	'misc.php?action=markforumread&fid=$2&csrf_token=$4',
diff -urN punbb-1.3/include/url/Folder_based/forum_urls.php punbb-1.3.4/include/url/Folder_based/forum_urls.php
--- punbb-1.3/include/url/Folder_based/forum_urls.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based/forum_urls.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * SEF URLs that use a folder-like layout.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/url/Folder_based/index.html punbb-1.3.4/include/url/Folder_based/index.html
--- punbb-1.3/include/url/Folder_based/index.html	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based/index.html	2009-03-13 15:55:28.000000000 +0000
@@ -5,12 +5,4 @@
 <body>
 .
 </body>
-</html>
-<html>
-<head>
-<title>.</title>
-</head>
-<body>
-.
-</body>
-</html>
+</html>
\ No newline at end of file
diff -urN punbb-1.3/include/url/Folder_based/reserved_strings.php punbb-1.3.4/include/url/Folder_based/reserved_strings.php
--- punbb-1.3/include/url/Folder_based/reserved_strings.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based/reserved_strings.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,22 +3,22 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_reserved_strings = array(
-	''		=>	'view',
+	''				=>	'view',
 
-	'newpost'	=>	'view',
-	'newposts'	=>	'view',
-	'new-post'	=>	'view',
-	'new-posts'	=>	'view',
+	'newpost'		=>	'view',
+	'newposts'		=>	'view',
+	'new-post'		=>	'view',
+	'new-posts'		=>	'view',
 
-	'lastpost'	=>	'view',
-	'lastposts'	=>	'view',
-	'last-post'	=>	'view',
+	'lastpost'		=>	'view',
+	'lastposts'		=>	'view',
+	'last-post'		=>	'view',
 	'last-posts'	=>	'view',
 );
diff -urN punbb-1.3/include/url/Folder_based/rewrite_rules.php punbb-1.3.4/include/url/Folder_based/rewrite_rules.php
--- punbb-1.3/include/url/Folder_based/rewrite_rules.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based/rewrite_rules.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,17 +2,17 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_rewrite_rules = array(
-	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'													=>	'viewtopic.php?id=$1&action=$2',
+	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'														=>	'viewtopic.php?id=$1&action=$2',
 	'/^post[\/_-]?([0-9]+)(\.html?|\/)?$/i'																					=>	'viewtopic.php?pid=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'view$1.php?id=$2&p=$4',
-	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'											=>	'extern.php?action=feed&$2id=$4&type=$1',
+	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'									=>	'extern.php?action=feed&$2id=$4&type=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*(\.html?|\/)?$/i'																		=>	'view$1.php?id=$2',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)(\.html?|\/)?$/i'																		=>	'post.php?tid=$1',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)[\/_-]?quote[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'post.php?tid=$1&qid=$2',
@@ -44,7 +44,7 @@
 	'/^search-k(.*)-(message|subject|all)-a(.*)-([0-9]+)-(ASC|DESC)-([0-9-]+)-(posts|topics)-p([0-9]+).html?$/i'			=>	'search.php?action=search&keywords=$1&author=$3&forum=$6&search_in=$2&sort_by=$4&sort_dir=$5&show_as=$7&p=$8',
 	'/^users(\.html?|\/)?$/i'																								=>	'userlist.php',
 	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'						=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4&p=$6',
-	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'											=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
+	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'													=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
 	'/^(email|report|subscribe|unsubscribe)[\/_-]?([0-9]+)[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'								=>	'misc.php?$1=$2&csrf_token=$3',
 	'/^(mark|rules)[\/_-]?(read)?[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'														=>	'misc.php?action=$1$2&csrf_token=$3',
 	'/^mark[\/_-](forum)[\/_-]?([0-9]+)[\/_-](read)[\/_-]([a-z0-9]+)(\.html?|\/)?$/i'										=>	'misc.php?action=markforumread&fid=$2&csrf_token=$4',
diff -urN punbb-1.3/include/url/Folder_based_(fancy)/forum_urls.php punbb-1.3.4/include/url/Folder_based_(fancy)/forum_urls.php
--- punbb-1.3/include/url/Folder_based_(fancy)/forum_urls.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based_(fancy)/forum_urls.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,7 +3,7 @@
  * SEF URLs that use a folder-like layout and include topic name and forum name
  * where applicable.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/include/url/Folder_based_(fancy)/index.html punbb-1.3.4/include/url/Folder_based_(fancy)/index.html
--- punbb-1.3/include/url/Folder_based_(fancy)/index.html	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based_(fancy)/index.html	2009-03-13 15:55:28.000000000 +0000
@@ -5,12 +5,4 @@
 <body>
 .
 </body>
-</html>
-<html>
-<head>
-<title>.</title>
-</head>
-<body>
-.
-</body>
-</html>
+</html>
\ No newline at end of file
diff -urN punbb-1.3/include/url/Folder_based_(fancy)/reserved_strings.php punbb-1.3.4/include/url/Folder_based_(fancy)/reserved_strings.php
--- punbb-1.3/include/url/Folder_based_(fancy)/reserved_strings.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based_(fancy)/reserved_strings.php	2009-04-17 12:51:23.000000000 +0000
@@ -3,22 +3,22 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_reserved_strings = array(
-	''		=>	'view',
+	''				=>	'view',
 
-	'newpost'	=>	'view',
-	'newposts'	=>	'view',
-	'new-post'	=>	'view',
-	'new-posts'	=>	'view',
+	'newpost'		=>	'view',
+	'newposts'		=>	'view',
+	'new-post'		=>	'view',
+	'new-posts'		=>	'view',
 
-	'lastpost'	=>	'view',
-	'lastposts'	=>	'view',
-	'last-post'	=>	'view',
+	'lastpost'		=>	'view',
+	'lastposts'		=>	'view',
+	'last-post'		=>	'view',
 	'last-posts'	=>	'view',
 );
diff -urN punbb-1.3/include/url/Folder_based_(fancy)/rewrite_rules.php punbb-1.3.4/include/url/Folder_based_(fancy)/rewrite_rules.php
--- punbb-1.3/include/url/Folder_based_(fancy)/rewrite_rules.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/include/url/Folder_based_(fancy)/rewrite_rules.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,17 +2,17 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
 $forum_rewrite_rules = array(
-	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'													=>	'viewtopic.php?id=$1&action=$2',
+	'/^topic[\/_-]?([0-9]+).*(new|last)[\/_-]?(posts?)(\.html?|\/)?$/i'														=>	'viewtopic.php?id=$1&action=$2',
 	'/^post[\/_-]?([0-9]+)(\.html?|\/)?$/i'																					=>	'viewtopic.php?pid=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'view$1.php?id=$2&p=$4',
-	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'											=>	'extern.php?action=feed&$2id=$4&&type=$1',
+	'/^feed[\/_-]?(rss|atom)[\/_-]?(f|t)(orum|opic)[\/_-]?([0-9]+)[\/_-]?(\.xml?|\/)?$/i'									=>	'extern.php?action=feed&$2id=$4&&type=$1',
 	'/^(forum|topic)[\/_-]?([0-9]+).*(\.html?|\/)?$/i'																		=>	'view$1.php?id=$2',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)(\.html?|\/)?$/i'																		=>	'post.php?tid=$1',
 	'/^new[\/_-]?reply[\/_-]?([0-9]+)[\/_-]?quote[\/_-]?([0-9]+)(\.html?|\/)?$/i'											=>	'post.php?tid=$1&qid=$2',
@@ -44,7 +44,7 @@
 	'/^search-k(.*)-(message|subject|all)-a(.*)-([0-9]+)-(ASC|DESC)-([0-9-]+)-(posts|topics)-p([0-9]+).html?$/i'			=>	'search.php?action=search&keywords=$1&author=$3&forum=$6&search_in=$2&sort_by=$4&sort_dir=$5&show_as=$7&p=$8',
 	'/^users(\.html?|\/)?$/i'																								=>	'userlist.php',
 	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)[\/_-]p(age)?[\/_-]?([0-9]+)(\.html?|\/)?$/i'						=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4&p=$6',
-	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'											=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
+	'/^users\/(.*)\/([0-9-]+)\/?([a-z_]+)[\/_-]([a-zA-Z]+)(\.html?|\/)?$/i'													=>	'userlist.php?username=$1&show_group=$2&sort_by=$3&sort_dir=$4',
 	'/^(email|report|subscribe|unsubscribe)[\/_-]?([0-9]+)[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'								=>	'misc.php?$1=$2&csrf_token=$3',
 	'/^(mark|rules)[\/_-]?(read)?[\/_-]?([a-z0-9]+)?(\.html?|\/)?$/i'														=>	'misc.php?action=$1$2&csrf_token=$3',
 	'/^mark[\/_-](forum)[\/_-]?([0-9]+)[\/_-](read)[\/_-]([a-z0-9]+)(\.html?|\/)?$/i'										=>	'misc.php?action=markforumread&fid=$2&csrf_token=$4',
diff -urN punbb-1.3/include/xml.php punbb-1.3.4/include/xml.php
--- punbb-1.3/include/xml.php	2008-10-26 12:40:37.000000000 +0000
+++ punbb-1.3.4/include/xml.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads various functions used in parsing XML (mostly for extensions).
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.3/index.php punbb-1.3.4/index.php
--- punbb-1.3/index.php	2008-11-08 10:30:00.000000000 +0000
+++ punbb-1.3.4/index.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Displays a list of the categories/forums that the current user can see, along with some statistics.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -91,7 +91,6 @@
 {
 	($hook = get_hook('in_forum_loop_start')) ? eval($hook) : null;
 
-	$forum_page['item_mods'] = '';
 	++$forum_page['item_count'];
 
 	if ($cur_forum['cid'] != $forum_page['cur_category'])	// A new category since last iteration?
@@ -125,7 +124,6 @@
 
 	// Reset arrays and globals for each forum
 	$forum_page['item_status'] = $forum_page['item_subject'] = $forum_page['item_body'] = $forum_page['item_title'] = array();
-	$forum_page['item_indicator'] = '';
 
 	// Is this a redirect forum?
 	if ($cur_forum['redirect_url'] != '')
diff -urN punbb-1.3/lang/English/admin_common.php punbb-1.3.4/lang/English/admin_common.php
--- punbb-1.3/lang/English/admin_common.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/lang/English/admin_common.php	2008-11-26 12:46:21.000000000 +0000
@@ -5,7 +5,7 @@
 
 // Common items
 'Save changes'					=>	'Save changes',
-'Redirect'						=>	'Redirecting …',
+'Redirect'						=>	'Redirecting…',
 'Add'							=>	'Add',
 'Add new'						=>	'Add new',
 'Delete'						=>	'Delete',
@@ -19,7 +19,7 @@
 'Save'							=>	'Save',
 'E-mail'						=>	'E-mail',
 'Cancel'						=>	'Cancel',
-'Cancel redirect'				=>	'Operation cancelled. Redirecting …',
+'Cancel redirect'				=>	'Operation cancelled. Redirecting…',
 'Unknown'						=>	'Unknown',
 'Delete help'					=>	'Requires confirmation via separate form.',
 'Select all'					=>	'Select all',
diff -urN punbb-1.3/lang/English/admin_forums.php punbb-1.3.4/lang/English/admin_forums.php
--- punbb-1.3/lang/English/admin_forums.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/lang/English/admin_forums.php	2008-12-15 13:12:08.000000000 +0000
@@ -34,6 +34,7 @@
 'User groups'					=>	'User groups',
 'Confirm delete forum'			=>	'You are deleting the forum "%s"',
 'Forum perms read info'			=>	'The "Read forum" permission checkbox will be disabled if the group in question lacks the "Read board" permission.',
+'Forum perms redirect info'		=>	'This is a redirect forum. Only the "Read forum" permission is editable.',
 'Forum perms restore info'		=>	'Permissions can be restored to default settings using the "Default permissions" button below.',
 'Forum perms groups info'		=>	'Permissions are the defaults as set in %s unless suffixed "(S)"',
 'Forum perms admins info'		=>	'Forum Administrators always have full permissions which cannot be restricted.',
diff -urN punbb-1.3/lang/English/admin_index.php punbb-1.3.4/lang/English/admin_index.php
--- punbb-1.3/lang/English/admin_index.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/lang/English/admin_index.php	2009-04-17 12:51:23.000000000 +0000
@@ -1,12 +1,14 @@
 <?php
 
+// Language definitions used in the index page of the admin panel
 $lang_admin_index = array(
 
 'Information head'				=>	'Welcome to PunBB administration control panel',
 'Alerts'						=>	'Administrator Alerts',
 'Check for updates enabled'		=>	'This board is setup to automatically check for updates and hotfixes against the punbb.informer.com updates service.',
 'Check for updates manual'		=>	'Check for updates',	// Link text
-'PunBB version'				=>	'PunBB version',
+'Copyright message'				=>	'&copy; 2008-2009 <a href="http://punbb.informer.com/">PunBB</a>, partially based on code &copy; 2008-2009 <a href="http://fluxbb.org/">FluxBB</a>',
+'PunBB version'					=>	'PunBB version',
 'Not available'					=>	'Not available',
 'Not applicable'				=>	'N/A',
 'Server load'					=>	'Server load',
diff -urN punbb-1.3/lang/English/admin_ranks.php punbb-1.3.4/lang/English/admin_ranks.php
--- punbb-1.3/lang/English/admin_ranks.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/lang/English/admin_ranks.php	2008-11-16 14:32:43.000000000 +0000
@@ -13,11 +13,9 @@
 'Rank removed'					=>	'Rank removed.',
 'Add rank intro'				=>	'Enter a rank and the minimum number of posts that a user has to have to acquire the rank. Different ranks cannot have the same value for minimum posts. If a title is set for a user, the title will be displayed instead of any rank. For this to have any effect "<strong>User ranks</strong>" must be enabled in %s.',
 'Add rank'						=>	'Add rank',
-'Add new rank'					=>	'Add new rank',
 'Add rank legend'				=>	'New rank details',
 'Rank title label'				=>	'Rank title',
 'Min posts label'				=>	'Minimum posts',
-'Existing ranks'				=>	'Existing ranks',
 'Existing ranks legend'			=>	'Edit or remove existing user ranks',
 'No ranks'						=>	'No ranks in list.',
 'Update'						=>	'Update',
diff -urN punbb-1.3/lang/English/admin_reindex.php punbb-1.3.4/lang/English/admin_reindex.php
--- punbb-1.3/lang/English/admin_reindex.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/lang/English/admin_reindex.php	2009-04-02 13:49:40.000000000 +0000
@@ -10,7 +10,7 @@
 'Empty index warning'		=>	'<strong>WARNING!</strong> If you want to resume an aborted rebuild, do not select "empty index".',
 'Posts per cycle'			=>	'Posts per cycle',
 'Posts per cycle info'		=>	'The number of posts to process per pageview. E.g. if you were to enter 100, one hundred posts would be processed and then the page would refresh. This is to prevent the script from timing out during the rebuild process.',
-'Starting post'				=>	'Starting Post ID',
+'Starting post'				=>	'Starting post ID',
 'Starting post info'		=>	'The post ID to start rebuilding at. The default value is the first available ID in the database. Normally you would not want to change this.',
 'Empty index'				=>	'Empty index',
 'Empty index info'			=>	'Empty search index before rebuilding (see below).',
diff -urN punbb-1.3/lang/English/admin_settings.php punbb-1.3.4/lang/English/admin_settings.php
--- punbb-1.3/lang/English/admin_settings.php	2008-11-09 17:45:53.000000000 +0000
+++ punbb-1.3.4/lang/English/admin_settings.php	2009-03-19 13:05:44.000000000 +0000
@@ -43,7 +43,7 @@
 'Report email label'			=>	'By e-mail to those on mailing list.',
 'Setup URL'						=>	'URL Scheme (<abbr title ="Search Engine Friendly">SEF</abbr> URLs) for your board\'s pages',
 'Setup URL legend'				=>	'Select a scheme',
-'URL scheme info'				=>	'<strong>WARNING!</strong> If you select any scheme other than the default scheme you must copy/upload the file .htaccess from the extras directory into the forum root directory. The server that hosts the forums must be configured with mod_rewrite support and must allow the use of .htaccess files. For servers other than Apache, please refer to your servers documentation.',
+'URL scheme info'				=>	'<strong>WARNING!</strong> If you select any scheme other than the default scheme you must copy/rename the file <em>.htaccess.dist</em> to <em>.htaccess</em> in the forum root directory. The server that hosts the forums must be configured with mod_rewrite support and must allow the use of <em>.htaccess</em> files. For servers other than Apache, please refer to your servers documentation.',
 'URL scheme label'				=>	'URL scheme',
 'URL scheme help'				=>	'Make sure you have read and understood the information above.',
 'Setup links'					=>	'Add your own links to the main navigation menu',
@@ -96,9 +96,9 @@
 'All caps message label'		=>	'Allow messages to contain only capital letters.',
 'All caps subject label'		=>	'Allow subjects to contain only capital letters.',
 'Indent size label'				=>	'[code] tag indent size',
-'Indent size help'				=>	'Indent text by this many spaces. If set to 8, a regular tab will be used',
+'Indent size help'				=>	'Indent text by this many spaces. If set to 8, a regular tab will be used.',
 'Quote depth label'				=>	'Maximum [quote] depth',
-'Quote depth help'				=>	'The maximum times a [quote] tag can go inside other [quote] tags, any tags deeper than this will be discarded',
+'Quote depth help'				=>	'The maximum times a [quote] tag can go inside other [quote] tags, any tags deeper than this will be discarded.',
 'Features sigs'					=>	'User signatures and signature content',
 'Features sigs legend'			=>	'Signature options',
 'Allow signatures'				=>	'Allow signatures',
@@ -166,10 +166,10 @@
 'Registration rules'			=>	'Forum rules (enable and compose forum rules)',
 'Registration rules info'		=>	'You may require new users to agree to a set of rules when registering. The rules will always be available through a link in the navigation table at the top of every page. You may enable the use of rules and then compose your rules below.',
 'Registration rules legend'		=>	'Forum rules',
-'Require rules'					=>	'Require agreement',
+'Require rules'					=>	'Use rules',
 'Require rules label'			=>	'Users must agree to forum rules before registering.',
 'Compose rules label'			=>	'Compose rules',
-'Compose rules help'			=>	'You may use HTML as text is not parsed. Leaving empty disables the use of rules.',
+'Compose rules help'			=>	'You may use HTML as text is not parsed.',
 'Rules default'					=>	'Enter your rules here.',
 
 // Email section
diff -urN punbb-1.3/lang/English/common.php punbb-1.3.4/lang/English/common.php
--- punbb-1.3/lang/English/common.php	2008-10-30 17:12:12.000000000 +0000
+++ punbb-1.3.4/lang/English/common.php	2009-05-20 09:09:23.000000000 +0000
@@ -8,8 +8,8 @@
 'lang_identifier'			=>	'en',
 
 // Number formatting
-'lang_decimal_point'	=>	'.',
-'lang_thousands_sep'	=>	',',
+'lang_decimal_point'		=>	'.',
+'lang_thousands_sep'		=>	',',
 
 // Notices
 'Bad request'				=>	'Bad request. The link you followed is incorrect or outdated.',
@@ -76,8 +76,8 @@
 'Paging separator'			=>	' ', //The character or text that separates page numbers for page navigation generally
 'Previous'					=>	'Previous',
 'Next'						=>	'Next',
-'Cancel redirect'			=>	'Operation cancelled. Redirecting …',
-'No confirm redirect'		=>	'No confirmation provided. Operation cancelled. Redirecting …',
+'Cancel redirect'			=>	'Operation cancelled. Redirecting…',
+'No confirm redirect'		=>	'No confirmation provided. Operation cancelled. Redirecting…',
 'Please confirm'			=>	'Please confirm:',
 'Help page'					=>	'Help with: %s',
 'Re'						=>	'Re:',
@@ -85,7 +85,7 @@
 'Item info single'			=>	'%s [ %s ]',
 'Item info plural'			=>	'%s [ %s to %s of %s ]', // e.g. Topics [ 10 to 20 of 30 ]
 'Info separator'			=>	' ', // e.g. 1 Page | 10 Topics
-'Powered by'				=>	'Powered by <strong>%s</strong>',
+'Powered by'				=>	'Powered by <strong>%s</strong>, supported by <strong>%s</strong>.',
 'Maintenance'				=>	'Maintenance',
 
 // CSRF confirmation form
@@ -133,11 +133,11 @@
 // Alerts
 'New alerts'				=>	'New Alerts',
 'Maintenance alert'			=>	'<strong>WARNING! Maintenance mode enabled.</strong> This board is currently in maintenance mode. <em>DO NOT</em> logout, if you do you will not be able to login again.',
-'Updates'					=>	'PunBB updates',
+'Updates'					=>	'PunBB updates:',
 'Updates failed'			=>	'The latest attempt at checking for updates against the punbb.informer.com updates service failed. This probably just means that the service is temporarily overloaded or out of order. However, if this alert does not disappear within a day or two, you should disable the automatic check for updates and check for updates manually in the future.',
-'Updates version n hf'		=>	'A newer version of PunBB, version %s, is available for download at <a href="http://punbb.informer.com/">punbb.informer.com</a>. Furthermore, one or more hotfix extensions are available for install on the Extensions tab of the admin interface.',
+'Updates version n hf'		=>	'A newer version of PunBB, version %s, is available for download at <a href="http://punbb.informer.com/">punbb.informer.com</a>. Furthermore, one or more hotfixes are available for install on the <a href="%s">Manage hotfixes</a> tab of the admin interface.',
 'Updates version'			=>	'A newer version of PunBB, version %s, is available for download at <a href="http://punbb.informer.com/">punbb.informer.com</a>.',
-'Updates hf'				=>	'One or more hotfix extensions are available for install on the Extensions tab of the admin interface.',
+'Updates hf'				=>	'One or more hotfixes are available for install on the <a href="%s">Manage hotfixes</a> tab of the admin interface.',
 'Database mismatch'			=>	'Database version mismatch',
 'Database mismatch alert'	=>	'Your PunBB database is meant to be used in conjunction with a newer version of the PunBB code. This mismatch can lead to your forum not working properly. It is suggested that you upgrade your forum to the newest version of PunBB.',
 
@@ -146,21 +146,19 @@
 'Jump to'					=>	'Jump to forum:',
 
 // For extern.php RSS feed
-'ATOM Feed'					=>	'Atom',
-'RSS Feed'					=>	'RSS',
 'RSS description'			=>	'The most recent topics at %s.',
 'RSS description topic'		=>	'The most recent posts in %s.',
 'RSS reply'					=>	'Re: ',	// The topic subject will be appended to this string (to signify a reply)
 
 // Accessibility
-'Skip to content'					=>	'Skip to forum content',
+'Skip to content'			=>	'Skip to forum content',
 
 // Debug information
-'Querytime'						=>	'Generated in %1$s seconds, %2$s queries executed',
-'Debug table'						=>	'Debug information',
-'Debug summary'						=>	'Database query performance information',
-'Query times'						=>	'Time (s)',
-'Query'							=>	'Query',
-'Total query time'					=>	'Total query time',
+'Querytime'					=>	'Generated in %1$s seconds, %2$s queries executed',
+'Debug table'				=>	'Debug information',
+'Debug summary'				=>	'Database query performance information',
+'Query times'				=>	'Time (s)',
+'Query'						=>	'Query',
+'Total query time'			=>	'Total query time',
 
 );
diff -urN punbb-1.3/lang/English/delete.php punbb-1.3.4/lang/English/delete.php
--- punbb-1.3/lang/English/delete.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/lang/English/delete.php	2008-11-26 12:46:21.000000000 +0000
@@ -16,7 +16,7 @@
 'Topic title'			=>	'Topic: %s',
 'Reply title'			=>	'Reply to: %s',
 'Please confirm'		=>	'Please confirm:',
-'Post del redirect'		=>	'Post deleted. Redirecting …',
-'Topic del redirect'	=>	'Topic deleted. Redirecting …',
+'Post del redirect'		=>	'Post deleted. Redirecting…',
+'Topic del redirect'	=>	'Topic deleted. Redirecting…',
 
 );
diff -urN punbb-1.3/lang/English/forum.php punbb-1.3.4/lang/English/forum.php
--- punbb-1.3/lang/English/forum.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/lang/English/forum.php	2009-04-03 10:13:23.000000000 +0000
@@ -23,16 +23,16 @@
 'No views info'				=>	'No viewing information',
 'No lastpost info'			=>	'No last post information',
 'by poster'					=>	'by %s',
-'Item status'				=>	'%s :',
-'Topic starter'				=>	'by %s',
+'Item status'				=>	'%s:',
+'Topic starter'				=>	'by <cite>%s</cite>',
 'New posts'					=>	'New posts',
 'Topic navigation'			=>	'( %s )',
-'Location'					=>	'Found in forum : %s',
+'Location'					=>	'Found in forum: %s',
 'Pages'						=>	'Pages',
 'Post topic'				=>	'Post new topic',
 'Login to post'				=>	'You must %1$s or %2$s to post a new topic',
 'No permission'				=>	'Sorry! no permission to post new topics',
-'Moved'						=>	'Moved:',
+'Moved'						=>	'Moved',
 'Sticky'					=>	'Sticky',
 'Closed'					=>	'Closed',
 'Empty forum'				=>	'Empty forum',
@@ -43,7 +43,7 @@
 'Forum options'				=>	'Forum options',
 'Moderate forum'			=>	'Moderate forum',
 'Mark forum read'			=>	'Mark forum as read',
-'RSS forum feed'			=>	'RSS Forum Feed',
+'RSS forum feed'			=>	'RSS forum feed',
 'New posts info'			=>	'Go to the first new post since your last visit.'
 
 );
diff -urN punbb-1.3/lang/English/help.php punbb-1.3.4/lang/English/help.php
--- punbb-1.3/lang/English/help.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/lang/English/help.php	2009-03-18 14:30:52.000000000 +0000
@@ -36,8 +36,8 @@
 'List text 2'			=>	'Example list item 2.',
 'List text 3'			=>	'Example list item 3.',
 'produces list'			=>	'produces a bulleted list.',
-'produces decimal list'	=>	'produces numbered list.',
-'produces alpha list'	=>	'produces alphabetically labelled list.',
+'produces decimal list'	=>	'produces a numbered list.',
+'produces alpha list'	=>	'produces an alphabetically labelled list.',
 'Bold, underlined text'	=>	'Bold, underlined text',
 'Smilies info'			=>	'If you like (and if it is enabled), the forum can convert a selection of smilies to image representations of those smilies. This forum recognizes the smilies listed below and replaces them with images.'
 
diff -urN punbb-1.3/lang/English/index.php punbb-1.3.4/lang/English/index.php
--- punbb-1.3/lang/English/index.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/lang/English/index.php	2009-01-22 10:11:19.000000000 +0000
@@ -42,6 +42,7 @@
 'New posts title'			=>	'This forum contain posts made since your last visit.',
 'Board options'				=>	'Board options',
 'RSS active feed'			=>	'RSS active topics feed',
-'Mark all as read'			=>	'Mark all forums as read'
+'Guests online'				=>	'Guests online',
+'Users online'				=>	'Users online'
 
 );
diff -urN punbb-1.3/lang/English/install.php punbb-1.3.4/lang/English/install.php
--- punbb-1.3/lang/English/install.php	2008-11-09 17:18:44.000000000 +0000
+++ punbb-1.3.4/lang/English/install.php	2009-04-16 09:17:55.000000000 +0000
@@ -4,7 +4,11 @@
 $lang_install = array(
 
 // Install Form
-'Install PunBB'			=>	'Install PunBB %s',
+'Install PunBB'				=>	'Install PunBB %s',
+'Choose language'			=>	'Change installer language',
+'Choose language help'		=>	'You can change the language of this install script if you find it easier to follow the instructions in your own language. Just choose your language from the list of installed ones below.',
+'Installer language'		=>	'Installer language:',
+'Choose language legend'	=>	'Installer language',
 'Install intro'				=>	'In order to install PunBB you must complete the form set out below. Please read the instructions provided before completing the form. If you encounter any difficulties with the installation, please refer to the documentation supplied as part of PunBB\'s download package.',
 'Part1'						=>	'Part 1 - Database setup',
 'Part1 intro'				=>	'Please enter the requested information in order to setup your database for PunBB. You must know all the information asked for before proceeding with the installation. Help with completing this part of the form is set out below.',
@@ -17,7 +21,6 @@
 'Table prefix'				=>	'Table prefix',
 'Database type info'		=>	'PunBB currently supports MySQL, PostgreSQL and SQLite. If your database of choice is missing from the drop-down menu below, it means this PHP environment does not have support for that particular database. More information regarding support for particular versions of each database can be found in the FAQ.',
 'Mysql type info'			=>	'PunBB has detected that your PHP environment supports two different ways of communicating with MySQL. The two options are called "<em>standard</em>" and "<em>improved</em>". If you are uncertain which one to use, start by trying improved and if that fails, try standard.',
-'MySQL InnoDB info'			=>	'PunBB has detected that your MySQL server might support <a href="http://dev.mysql.com/doc/refman/5.0/en/innodb-overview.html">InnoDB</a>. This would be a good choice if you are planning to run a large forum. If you are uncertain, it is recommended to not use InnoDB.',
 'Database server info'		=>	'Enter the address of the database server (example: <em>localhost</em>, <em>mysql1.example.com</em> or <em>208.77.188.166</em>). You can specify a custom port number if your database doesn\'t run on the default port (example: <em>localhost:3580</em>). For SQLite support, just enter anything or leave it at \'localhost\'.',
 'Database name info'		=>	'Enter the name of the database that PunBB will be installed into. The database must exist. For SQLite, this is the relative path to the database file. If the SQLite database file does not exist, PunBB will attempt to create it.',
 'Database username info'	=>	'Enter the username and password used for connecting to the selected database. Ignore for SQLite.',
@@ -74,9 +77,11 @@
 'Invalid table prefix'		=>	'The table prefix \'%s\' contains illegal characters or is too long. The prefix may contain the letters a to z, any numbers and the underscore character. They must however not start with a number. The maximum length is 40 characters. Please choose a different prefix.',
 'SQLite prefix collision'	=>	'The table prefix \'sqlite_\' is reserved for use by the SQLite engine. Please choose a different prefix.',
 'PunBB already installed'	=>	'A table called "%1$susers" is already present in the database "%2$s". This could mean that PunBB is already installed or that another piece of software is installed and is occupying one or more of the table names PunBB requires. If you want to install multiple copies of PunBB in the same database, you must choose a different table prefix.',
-'InnoDB not enabled'		=>	'InnoDB does not seem to be enabled. Please choose a database layer that does not have InnoDB support, or enable InnoDB on your MySQL server.',
+'Invalid language'			=>	'The language pack you have chosen doesn\'t seem to exist or is corrupt. Please recheck and try again.',
 
 // Used in the install
+'Default language'			=>	'Default language',
+'Default language help'		=>	'(If you remove a language pack you must update this setting)',
 'Default announce heading'	=>	'Sample announcement',
 'Default announce message'	=>	'<p>Enter your announcement here.</p>',
 'Default maint message'		=>	"The forums are temporarily down for maintenance. Please try again in a few minutes.<br />\\n<br />\\n/Administrator",
diff -urN punbb-1.3/lang/English/login.php punbb-1.3.4/lang/English/login.php
--- punbb-1.3/lang/English/login.php	2008-10-27 14:45:19.000000000 +0000
+++ punbb-1.3.4/lang/English/login.php	2008-12-08 08:12:44.000000000 +0000
@@ -1,6 +1,6 @@
 <?php
 
-// Language definitions used in delete.php
+// Language definitions used in login.php
 $lang_login = array(
 
 // Miscellaneous
@@ -13,8 +13,8 @@
 'E-mail address help'				=>	'Enter the e-mail address set in your profile.',
 'Login errors'						=>	'<strong>Warning!</strong> The following errors must be corrected before you can login:',
 'Wrong user/pass'					=>	'Incorrect username and/or password.',
-'Login redirect'					=>	'Logged in successfully. Redirecting …',
-'Logout redirect'					=>	'Logged out. Redirecting …',
+'Login redirect'					=>	'Logged in successfully. Redirecting…',
+'Logout redirect'					=>	'Logged out. Redirecting…',
 'No e-mail match'					=>	'There is no user registered with the e-mail address %s.',
 'Invalid e-mail'					=>	'The e-mail address you entered is invalid.',
 'Login options'						=>	'Do you need to %1$s or obtain a %2$s before you login?',
@@ -25,7 +25,7 @@
 'New password request'				=>	'New password request',
 'New password errors'				=>	'<strong>Warning!</strong> The following errors must be corrected before a new password can be sent:',
 'New password info'					=>	'<strong>Important!</strong> An e-mail will be sent to the specified address with instructions on how to change your password.',
-'New password cancel redirect'		=>	'New password request cancelled. Redirecting …',
+'New password cancel redirect'		=>	'New password request cancelled. Redirecting…',
 'Forget mail'						=>	'An e-mail has been sent to the specified address with instructions on how to change your password. If it does not arrive you can contact the forum administrator at %s.',
 'Persistent login'					=>	'Log me in automatically each time I visit.'
 
diff -urN punbb-1.3/lang/English/misc.php punbb-1.3.4/lang/English/misc.php
--- punbb-1.3/lang/English/misc.php	2008-10-30 14:36:39.000000000 +0000
+++ punbb-1.3.4/lang/English/misc.php	2008-11-26 12:46:21.000000000 +0000
@@ -3,8 +3,8 @@
 // Language definitions used in various scripts
 $lang_misc = array(
 
-'Mark read redirect'		=>	'All topics and forums have been marked as read. Redirecting …',
-'Mark forum read redirect'	=>	'All topics in the specified forum have been marked as read. Redirecting …',
+'Mark read redirect'		=>	'All topics and forums have been marked as read. Redirecting…',
+'Mark forum read redirect'	=>	'All topics in the specified forum have been marked as read. Redirecting…',
 
 // Send e-mail
 'Form e-mail disabled'		=>	'The user you are trying to send an e-mail to has disabled form e-mail.',
@@ -13,7 +13,7 @@
 'No e-mail message'			=>	'You must enter a message.',
 'Too long e-mail message'	=>	'Your message length is %s bytes. This exceeds the %s bytes limit.',
 'Email flood'				=>	'At least %s seconds have to pass between sent emails. Please wait a while and try sending again.',
-'E-mail sent redirect'		=>	'E-mail sent. Redirecting …',
+'E-mail sent redirect'		=>	'E-mail sent. Redirecting…',
 'E-mail subject'			=>	'Subject',
 'E-mail message'			=>	'Message',
 'E-mail disclosure note'	=>	'<strong>Important!</strong> When you send an e-mail using this form your e-mail address will be disclosed to the recipient.',
@@ -23,16 +23,16 @@
 // Report
 'No reason'					=>	'You must enter a reason.',
 'Report flood'				=>	'At least %s seconds have to pass between reports. Please wait a while and try sending again.',
-'Report redirect'			=>	'Post reported. Redirecting …',
+'Report redirect'			=>	'Post reported. Redirecting…',
 'Report post'				=>	'Report post',
 'Reason'					=>	'Reason',
 'Reason help'				=>	'Enter a short reason why you are reporting this post.',
 
 // Subscriptions
 'Already subscribed'		=>	'You are already subscribed to this topic.',
-'Subscribe redirect'		=>	'Your subscription has been added. Redirecting …',
+'Subscribe redirect'		=>	'Your subscription has been added. Redirecting…',
 'Not subscribed'			=>	'You are not subscribed to this topic.',
-'Unsubscribe redirect'		=>	'Your subscription has been removed. Redirecting …',
+'Unsubscribe redirect'		=>	'Your subscription has been removed. Redirecting…',
 
 // General forum and topic moderation
 'Moderate forum'			=>	'Moderate forum',
@@ -49,7 +49,7 @@
 'Show more users'			=>	'Show more users for this IP',
 
 // Moderate forum
-'Moderate forum head'		=>	'Moderate : %s',
+'Moderate forum head'		=>	'Moderate: %s',
 'Topics'					=>	'Topics',
 'Move topic'				=>	'Move topic',
 'Move topics'				=>	'Move topics',
@@ -63,20 +63,20 @@
 'Leave redirect'			=>	'Leave a redirect topic in the forum from which the topic was moved.',
 'Leave redirects'			=>	'Leave redirect topics in the forum from which topics were moved.',
 'Leave merge redirects'		=>	'Leave redirect topics for those topics which were merged.',
-'Move topic redirect'		=>	'Topic moved. Redirecting …',
-'Move topics redirect'		=>	'Topics moved. Redirecting …',
-'Merge topics redirect'		=>	'Topics merged. Redirecting …',
+'Move topic redirect'		=>	'Topic moved. Redirecting…',
+'Move topics redirect'		=>	'Topics moved. Redirecting…',
+'Merge topics redirect'		=>	'Topics merged. Redirecting…',
 'Delete topic comply'		=>	'Are you sure you want to delete the selected topic?',
 'Delete topics comply'		=>	'Are you sure you want to delete all the selected topics?',
-'Delete topic redirect'		=>	'Topic deleted. Redirecting …',
-'Delete topics redirect'	=>	'Topics deleted. Redirecting …',
-'Open topic redirect'		=>	'Topic opened. Redirecting …',
-'Open topics redirect'		=>	'Topics opened. Redirecting …',
-'Close topic redirect'		=>	'Topic closed. Redirecting …',
-'Close topics redirect'		=>	'Topics closed. Redirecting …',
+'Delete topic redirect'		=>	'Topic deleted. Redirecting…',
+'Delete topics redirect'	=>	'Topics deleted. Redirecting…',
+'Open topic redirect'		=>	'Topic opened. Redirecting…',
+'Open topics redirect'		=>	'Topics opened. Redirecting…',
+'Close topic redirect'		=>	'Topic closed. Redirecting…',
+'Close topics redirect'		=>	'Topics closed. Redirecting…',
 'No topics selected'		=>	'You must select at least one topic.',
-'Stick topic redirect'		=>	'Topic is now sticky. Redirecting …',
-'Unstick topic redirect'	=>	'Topic no longer sticky. Redirecting …',
+'Stick topic redirect'		=>	'Topic is now sticky. Redirecting…',
+'Unstick topic redirect'	=>	'Topic no longer sticky. Redirecting…',
 'Merge error'				=>	'You should select more than 1 topic to merge.',
 
 // Moderate topic
@@ -84,7 +84,7 @@
 'Delete posts'				=>	'Delete selected posts',
 'Split posts'				=>	'Split selected posts',
 'Delete whole topic'		=>	'Delete whole topic',
-'Moderate topic head'		=>	'Moderate topic : %s',
+'Moderate topic head'		=>	'Moderate topic: %s',
 'New subject'				=>	'New topic subject:',
 'Select post'				=>	'Select post', // Label for checkbox
 'Confirm post delete'		=>	'Confirm deletion of all selected posts',
@@ -92,8 +92,8 @@
 'Confirm topic split'		=>	'Confirm splitting of all selected posts into a new topic',
 'Confirm topic merge'		=>	'Confirm merging of all selected topics into one topic',
 'Confirm post split'		=>	'Confirm splitting of all selected posts',
-'Delete posts redirect'		=>	'Posts deleted. Redirecting …',
-'Split posts redirect'		=>	'Posts split into a new topic. Redirecting …',
+'Delete posts redirect'		=>	'Posts deleted. Redirecting…',
+'Split posts redirect'		=>	'Posts split into a new topic. Redirecting…',
 'No posts selected'			=>	'You must select at least one post.'
 
 );
diff -urN punbb-1.3/lang/English/post.php punbb-1.3.4/lang/English/post.php
--- punbb-1.3/lang/English/post.php	2008-10-30 14:40:01.000000000 +0000
+++ punbb-1.3.4/lang/English/post.php	2008-11-26 12:46:21.000000000 +0000
@@ -22,7 +22,7 @@
 'Post errors'			=>	'<strong>Warning!</strong> The following errors must be corrected before your message can be posted:',
 'Guest name'			=>	'Guest name',	// For guests (instead of Username)
 'Guest e-mail'			=>	'Guest e-mail',
-'Post redirect'			=>	'Post entered. Redirecting …',
+'Post redirect'			=>	'Post entered. Redirecting…',
 'Post reply'			=>	'Post new reply',
 'Post new topic'		=>	'Post new topic',
 'Topic subject'			=>	'Topic subject',
@@ -52,9 +52,9 @@
 'Edit post legend'		=>	'Edit message',
 'Edit topic'			=>	'Edit topic',
 'Edit reply'			=>	'Edit reply',
-'Silent edit'			=>	'Silent edit (don\'t display "Last edited by …" in topic view for this edit).',
+'Silent edit'			=>	'Silent edit (don\'t display "Last edited by…" in topic view for this edit).',
 'Preview edited topic'	=>	'Preview of your edited topic',
 'Preview edited reply'	=>	'Preview of your edited reply',
-'Edit redirect'			=>	'Post updated. Redirecting …'
+'Edit redirect'			=>	'Post updated. Redirecting…'
 
 );
diff -urN punbb-1.3/lang/English/profile.php punbb-1.3.4/lang/English/profile.php
--- punbb-1.3/lang/English/profile.php	2008-10-30 21:03:47.000000000 +0000
+++ punbb-1.3.4/lang/English/profile.php	2009-04-09 09:06:21.000000000 +0000
@@ -3,22 +3,21 @@
 $lang_profile = array(
 
 // Navigation and sections
-'Profile redirect'			=>	'Profile updated. Redirecting …',
+'Profile redirect'			=>	'Profile updated. Redirecting…',
 'Instructions'				=>	'You will be redirected back to this page',
 'Update profile'			=>	'Update profile',
-'Subform heading'			=>	'%1$s : %2$s',
 
 // Administration stuff
-'User delete redirect'		=>	'User deleted. Redirecting …',
+'User delete redirect'		=>	'User deleted. Redirecting…',
 'Section admin'				=>	'Administration',
 'Delete user'				=>	'Delete user',
 'Delete warning'			=>	'<strong>Warning!</strong> Once deleted a user and/or their posts cannot be restored.',
 'Delete posts info'			=>	'<strong>Warning!</strong> If you choose not to delete this user\'s posts they can only be deleted manually at a later time.',
 'Delete posts'				=>	'Delete posts',
 'Delete posts label'		=>	'Delete any posts and topics %s has made.',
-'Group membership redirect'	=>	'Group membership updated. Redirecting …',
-'Moderate forums redirect'	=>	'Forum moderator rights updated. Redirecting …',
-'Ban redirect'				=>	'Redirecting …',
+'Group membership redirect'	=>	'Group membership updated. Redirecting…',
+'Moderate forums redirect'	=>	'Forum moderator rights updated. Redirecting…',
+'Ban redirect'				=>	'Redirecting…',
 'Ban user'					=>	'Ban user',
 'Ban user info'				=>	'Ban this user via the administration console.',
 'Delete user info'			=>	'Permanently delete this user and, optionally, all their posts.',
@@ -33,7 +32,7 @@
 // Avatar stuff
 'Avatar welcome'			=>	'Set an avatar image to enhance your forum identity',
 'Avatar welcome user'		=>	'Set an avatar image to enhance  %s\'s forum identity',
-'Avatar deleted redirect'	=>	'Avatar deleted. Redirecting …',
+'Avatar deleted redirect'	=>	'Avatar deleted. Redirecting…',
 'Avatars disabled'			=>	'The administrator has disabled avatar support.',
 'No file'					=>	'You did not select a file for upload.',
 'Too large ini'				=>	'The selected file was too large to upload. The server didn\'t allow the upload.',
@@ -45,13 +44,13 @@
 'Too wide or high'			=>	'The file you tried to upload is wider and/or higher than the maximum allowed %sx%s pixels.',
 'Unknown failure'			=>	'An unknown error occurred. Please try again.',
 'Avatar'					=>	'Avatar',
-'Current avatar'			=>	'Current Avatar',
+'Current avatar'			=>	'Current avatar',
 'No avatar info'			=>	'No avatar is currently uploaded.',
 'Avatar info replace'		=>	'Uploading a new avatar will replace your existing avatar.',
 'Avatar info none'			=>	'To display an avatar you first need to upload one.',
 'Avatar info type'			=>	'The allowed image file types are gif, jpeg and png.',
 'Avatar info size'			=>	'The maximum image size allowed is %sx%s pixels and %s bytes (%s KB).',
-'Delete avatar info'		=>	'Delete avatar to cease displaying any avatar.',
+'Delete avatar info'		=>	'Delete avatar to stop displaying any avatar.',
 'Upload avatar file'		=>	'Upload avatar file',
 'Avatar upload help'		=>	'Select file then update your profile to install.',
 'No upload warn'			=>	'<strong>IMPORTANT! </strong> You must choose a file to upload before updating your profile.',
@@ -170,7 +169,7 @@
 'Change pass errors'		=>	'<strong>Warning!</strong> The following errors must be corrected before your password can be updated:',
 'Pass logout'				=>	'A user is currently logged in. Please logout and try again.',
 'Pass key bad'				=>	'The specified password activation key was incorrect or has expired. Please re-request a new password. If that fails, contact the forum administrator at %s.',
-'Pass updated'				=>	'Password updated. Login with your new password. Redirecting …',
+'Pass updated'				=>	'Password updated. Login with your new password. Redirecting…',
 'Change your password'		=>	'Change your password',
 'Change user password'		=>	'Change %s\'s password',
 'Old password'				=>	'Old password',
@@ -178,12 +177,13 @@
 'New password'				=>	'New password',
 'Confirm new password'		=>	'Confirm new password',
 'Wrong old password'		=>	'The old password you entered was incorrect.',
-'Pass updated redirect'		=>	'Password updated. Redirecting …',
+'Pass updated redirect'		=>	'Password updated. Redirecting…',
 
 // Change E-mail stuff
 'Change e-mail errors'		=>	'<strong>Warning!</strong> The following errors must be corrected before your e-mail address can be updated:',
 'E-mail key bad'			=>	'The specified e-mail activation key was incorrect or has expired. Please re-request change of e-mail address. If that fails, contact the forum administrator at %s.',
 'E-mail updated'			=>	'Your e-mail address has been updated.',
+'E-mail updated redirect'	=>	'Your e-mail address has been updated. Redirecting…',
 'Wrong password'			=>	'The password you entered was incorrect.',
 'Activate e-mail sent'		=>	'An email has been sent to the specified address with instructions on how to activate the new e-mail address. If it doesn\'t arrive you can contact the forum administrator at %s.',
 'Change your e-mail'		=>	'Change your e-mail address',
@@ -202,7 +202,7 @@
 
 // Registration stuff (some of these also used by profile)
 'No new regs'				=>	'This forum is not accepting new registrations.',
-'Reg cancel redirect'		=>	'Registration cancelled. Redirecting …',
+'Reg cancel redirect'		=>	'Registration cancelled. Redirecting…',
 'Agreement'					=>	'Agreement',
 'Agreement label'			=>	'I agree to the rules set out above and wish to register.',
 'Agree'						=>	'Agree',
@@ -213,7 +213,7 @@
 'Banned e-mail'				=>	'The e-mail address you entered is banned in this forum. Please choose another e-mail address.',
 'Dupe e-mail'				=>	'Someone else is already registered with that e-mail address. Please choose another e-mail address.',
 'Reg e-mail'				=>	'Thank you for registering. An email has been sent to the specified address with instructions on how to activate your new account. If it doesn\'t arrive you can contact the forum administrator at %s.',
-'Reg complete'				=>	'Registration complete. Logging in and redirecting …',
+'Reg complete'				=>	'Registration complete. Logging in and redirecting…',
 'Register errors'			=>	'<strong>Warning!</strong> The following errors must be corrected before you can register:',
 'E-mail info'				=>	'<strong>Important!</strong> An e-mail will be sent to your new address with an activation link. You must click the link in the e-mail you receive to activate the new address. You must therefore ensure that you enter a valid and current e-mail address.',
 'Reg e-mail info'			=>	'<strong>Important!</strong> An e-mail with an activation link will be sent to the address you provide. You must click the link in the e-mail in order to activate your new account. You must therefore ensure that you enter a valid and current e-mail address.',
diff -urN punbb-1.3/lang/English/search.php punbb-1.3.4/lang/English/search.php
--- punbb-1.3/lang/English/search.php	2008-10-27 14:45:19.000000000 +0000
+++ punbb-1.3.4/lang/English/search.php	2009-04-16 11:01:09.000000000 +0000
@@ -32,6 +32,10 @@
 'Show as posts'				=>	'As posts',
 'Submit search'				=>	'Submit search',
 'User defined search'		=>	'User defined search',
+'Search in'					=>	'Search in',
+'Message and subject'		=>	'Message text and topic subject',
+'Message only'				=>	'Message text only',
+'Topic only'				=>	'Topic subject only',
 
 // Results
 'Search results'			=>	'Search results',
@@ -47,7 +51,7 @@
 'Posts by user'				=>	'Posts by this user',
 'Perform new search'		=>	'Perform new search',
 'Search options'			=>	'Search options',
-'Location'					=>	'Forum: %s',
+'Posted in'					=>	'Posted in ',
 'No terms'					=>	'You have to enter at least one keyword and/or an author to search for.',
 'No hits'					=>	'Your search returned no hits.',
 'No user posts'				=>	'There are no posts by this user in this forum.',
diff -urN punbb-1.3/lang/English/topic.php punbb-1.3.4/lang/English/topic.php
--- punbb-1.3/lang/English/topic.php	2008-10-25 15:27:40.000000000 +0000
+++ punbb-1.3.4/lang/English/topic.php	2009-04-03 10:13:23.000000000 +0000
@@ -8,13 +8,14 @@
 'Search replies'		=>	'(%s replies, posted in %s)',
 'Post reply'			=>	'Post reply',
 'Topic closed'			=>	'[ Closed ]',
+'Topic closed info'		=>	'This topic is closed',
 'No permission'			=>	'Sorry! no permission to post a reply',
 'Topic title'			=>	'Topic: %s',
 'Reply title'			=>	'Re: %s',
 'Login to post'			=>	'You must %1$s or %2$s to post a reply',
-'From'					=>	'From:',				// User location
+'From'					=>	'From:', // User location
 'Registered'			=>	'Registered:',
-'Note'					=>	'Note:',				// Admin note
+'Note'					=>	'Note:', // Admin note
 'IP'					=>	'IP:',
 'Posts'					=>	'Posts',
 'Posts info'			=>	'Posts:',
@@ -32,7 +33,7 @@
 'Unsubscribe'			=>	'Unsubscribe',
 'Subscribe'				=>	'Subscribe',
 'Subscribe info'		=>	'Receive email notification of new posts.',
-'RSS topic feed'		=>	'RSS Topic Feed',
+'RSS topic feed'		=>	'RSS topic feed',
 'Quick post'			=>	'Quick reply to this topic',
 'Post'					=>	'Post',
 'Permalink post'		=>	'Permanent link to this post',
@@ -40,10 +41,10 @@
 'Go to profile'			=>	'Go to %s\'s profile',
 'Move'					=>	'Move topic',
 'Topic options'			=>	'Topic options',
-'Open'					=>  'Open topic',
-'Close'					=>  'Close topic',
-'Unstick'				=>  'Unstick topic',
-'Stick'					=>  'Stick topic',
+'Open'					=>	'Open topic',
+'Close'					=>	'Close topic',
+'Unstick'				=>	'Unstick topic',
+'Stick'					=>	'Stick topic',
 'Moderate topic'		=>	'Moderate topic',
 'Required warn'			=>	'You cannot submit or preview an empty message.',
 
diff -urN punbb-1.3/lang/English/url_replace.php punbb-1.3.4/lang/English/url_replace.php
--- punbb-1.3/lang/English/url_replace.php	2008-10-23 07:49:10.000000000 +0000
+++ punbb-1.3.4/lang/English/url_replace.php	2009-02-03 07:59:05.000000000 +0000
@@ -563,6 +563,13 @@
 'Ь' => '',
 'ь' => '',
 
+'Є' => 'YE',
+'є' => 'YE',
+'Ї' => 'YI',
+'ї' => 'YI',
+'Ґ' => 'KG',
+'ґ' => 'KG',
+
 'ð' => 'd',
 'Ð' => 'D',
 'þ' => 'th',
diff -urN punbb-1.3/lang/English/userlist.php punbb-1.3.4/lang/English/userlist.php
--- punbb-1.3/lang/English/userlist.php	2008-10-27 14:45:19.000000000 +0000
+++ punbb-1.3.4/lang/English/userlist.php	2009-03-18 14:30:52.000000000 +0000
@@ -23,12 +23,8 @@
 'All users'				=>	'All users',
 'Perform new search'	=>	'Perform new user search',
 'Table summary'			=>	'List of users filtered and sorted according to the criteria (if any) you have chosen.',
-'User list options'		=>	'User list options',
-'Perform new search'	=>	'Perform new user search',
 'Submit user search'	=>	'Submit user criteria',
 'Title'					=>	'Title',
-'Posts'					=>	'Posts',
-'User list options'		=>	'User list options'
-
+'Posts'					=>	'Posts'
 
 );
\ No newline at end of file
diff -urN punbb-1.3/login.php punbb-1.3.4/login.php
--- punbb-1.3/login.php	2008-11-08 17:53:23.000000000 +0000
+++ punbb-1.3.4/login.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Handles logins, logouts, and password reset requests.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -427,7 +427,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_login['Password'] ?> <em><?php echo $lang_common['Required'] ?></em></span></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" value="<?php echo isset($_POST['req_password']) ? ($_POST['req_password']) : '' ?>" size="35" /></span>
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" value="<?php echo isset($_POST['req_password']) ? forum_htmlencode($_POST['req_password']) : '' ?>" size="35" /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('li_login_pre_remember_me_checkbox')) ? eval($hook) : null; ?>
diff -urN punbb-1.3/misc.php punbb-1.3.4/misc.php
--- punbb-1.3/misc.php	2008-11-09 13:28:04.000000000 +0000
+++ punbb-1.3.4/misc.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Provides various features for forum users (ie: display rules, send emails through the forum, mark a forum as read, etc).
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -33,7 +33,7 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		$lang_common['Rules']
+		array($lang_common['Rules'], forum_link($forum_url['rules']))
 	);
 
 	($hook = get_hook('mi_rules_pre_header_load')) ? eval($hook) : null;
@@ -106,13 +106,13 @@
 	if ($forum_user['is_guest'])
 		message($lang_common['No permission']);
 
-	$fid = intval($_GET['fid']);
+	$fid = isset($_GET['fid']) ? intval($_GET['fid']) : 0;
 	if ($fid < 1)
 		message($lang_common['Bad request']);
 
 	// We validate the CSRF token. If it's set in POST and we're at this point, the token is valid.
 	// If it's in GET, we need to make sure it's valid.
-	if (!isset($_POST['csrf_token']) && (!isset($_GET['csrf_token']) || $_GET['csrf_token'] !== generate_form_token('markforumread'.intval($_GET['fid']).$forum_user['id'])))
+	if (!isset($_POST['csrf_token']) && (!isset($_GET['csrf_token']) || $_GET['csrf_token'] !== generate_form_token('markforumread'.$fid.$forum_user['id'])))
 		csrf_confirm_form();
 
 	($hook = get_hook('mi_markforumread_selected')) ? eval($hook) : null;
@@ -528,7 +528,7 @@
 
 	// We validate the CSRF token. If it's set in POST and we're at this point, the token is valid.
 	// If it's in GET, we need to make sure it's valid.
-	if (!isset($_POST['csrf_token']) && (!isset($_GET['csrf_token']) || $_GET['csrf_token'] !== generate_form_token('subscribe'.intval($_GET['subscribe']).$forum_user['id'])))
+	if (!isset($_POST['csrf_token']) && (!isset($_GET['csrf_token']) || $_GET['csrf_token'] !== generate_form_token('subscribe'.$topic_id.$forum_user['id'])))
 		csrf_confirm_form();
 
 	($hook = get_hook('mi_subscribe_selected')) ? eval($hook) : null;
@@ -590,7 +590,7 @@
 
 	// We validate the CSRF token. If it's set in POST and we're at this point, the token is valid.
 	// If it's in GET, we need to make sure it's valid.
-	if (!isset($_POST['csrf_token']) && (!isset($_GET['csrf_token']) || $_GET['csrf_token'] !== generate_form_token('unsubscribe'.intval($_GET['unsubscribe']).$forum_user['id'])))
+	if (!isset($_POST['csrf_token']) && (!isset($_GET['csrf_token']) || $_GET['csrf_token'] !== generate_form_token('unsubscribe'.$topic_id.$forum_user['id'])))
 		csrf_confirm_form();
 
 	($hook = get_hook('mi_unsubscribe_selected')) ? eval($hook) : null;
diff -urN punbb-1.3/moderate.php punbb-1.3.4/moderate.php
--- punbb-1.3/moderate.php	2008-11-08 13:00:21.000000000 +0000
+++ punbb-1.3.4/moderate.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Provides various mass-moderation tools to moderators.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -373,7 +373,7 @@
 <?php ($hook = get_hook('mr_confirm_split_posts_pre_subject')) ? eval($hook) : null; ?>
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_misc['New subject'] ?> <em><?php echo $lang_common['Required'] ?></em></span></label><br />
-						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="new_subject" value="" size="80" maxlength="70" /></span>
+						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="new_subject" value="" size="70" maxlength="70" /></span>
 					</div>
 <?php ($hook = get_hook('mr_confirm_split_posts_pre_confirm_checkbox')) ? eval($hook) : null; ?>
 					<div class="sf-box checkbox">
@@ -416,7 +416,7 @@
 
 	// Determine the post offset (based on $_GET['p'])
 	$forum_page['num_pages'] = ceil(($cur_topic['num_replies'] + 1) / $forum_user['disp_posts']);
-	$forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : intval($_GET['p']);
+	$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : intval($_GET['p']);
 	$forum_page['start_from'] = $forum_user['disp_posts'] * ($forum_page['page'] - 1);
 	$forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_posts']), ($cur_topic['num_replies'] + 1));
 	$forum_page['items_info'] = generate_items_info($lang_misc['Posts'], ($forum_page['start_from'] + 1), ($cur_topic['num_replies'] + 1));
@@ -521,7 +521,6 @@
 
 		$forum_page['post_ident'] = array();
 		$forum_page['message'] = array();
-		$forum_page['author_title'] = '';
 		$forum_page['user_ident'] = array();
 		$cur_post['username'] = $cur_post['poster'];
 
@@ -755,7 +754,12 @@
 			message($lang_misc['No topics selected']);
 
 		if (count($topics) == 1)
+		{
 			$topics = $topics[0];
+			$action = 'single';
+		}
+		else
+			$action = 'multiple';
 	}
 	else
 	{
@@ -764,7 +768,9 @@
 			message($lang_common['Bad request']);
 
 		$action = 'single';
-
+	}
+	if ($action == 'single')
+	{
 		// Fetch the topic subject
 		$query = array(
 			'SELECT'	=> 't.subject',
@@ -815,7 +821,7 @@
 
 	$forum_page['hidden_fields'] = array(
 		'csrf_token'	=> '<input type="hidden" name="csrf_token" value="'.generate_form_token($forum_page['form_action']).'" />',
-		'topics'		=> '<input type="hidden" name="topics" value="'.$topics.'" />'
+		'topics'		=> '<input type="hidden" name="topics" value="'.($action == 'single' ? $topics : implode(',', $topics)).'" />'
 	);
 
 	// Setup breadcrumbs
@@ -921,7 +927,7 @@
 		message($lang_misc['No topics selected']);
 
 	if (count($topics) == 1)
-			message($lang_misc['Merge error']);
+		message($lang_misc['Merge error']);
 
 	if (isset($_POST['merge_topics_comply']))
 	{
@@ -1011,9 +1017,6 @@
 		$lang_misc['Merge topics']
 	);
 
-	// Setup main heading
-	$forum_page['main_title'] = end($forum_page['crumbs']);
-
 	($hook = get_hook('mr_merge_topics_pre_header_load')) ? eval($hook) : null;
 
 	define('FORUM_PAGE', 'dialogue');
@@ -1035,7 +1038,7 @@
 			</div>
 <?php ($hook = get_hook('mr_merge_topics_pre_fieldset')) ? eval($hook) : null; ?>
 			<fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
-				<legend class="group-legend"><strong><?php echo $lang_misc['Merge topic'] ?></strong></legend>
+				<legend class="group-legend"><strong><?php echo $lang_misc['Merge topics'] ?></strong></legend>
 <?php ($hook = get_hook('mr_merge_topics_pre_redirect_checkbox')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
@@ -1420,7 +1423,7 @@
 // Determine the topic offset (based on $_GET['p'])
 $forum_page['num_pages'] = ceil($cur_forum['num_topics'] / $forum_user['disp_topics']);
 
-$forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
+$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
 $forum_page['start_from'] = $forum_user['disp_topics'] * ($forum_page['page'] - 1);
 $forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_topics']), ($cur_forum['num_topics']));
 $forum_page['items_info'] = generate_items_info($lang_misc['Topics'], ($forum_page['start_from'] + 1), $cur_forum['num_topics']);
@@ -1531,16 +1534,17 @@
 		++$forum_page['item_count'];
 
 		// Start from scratch
-		$forum_page['item_subject'] = $forum_page['item_body'] = $forum_page['item_status'] = $forum_page['item_nav'] = $forum_page['item_title'] = $forum_page['item_subject_status'] = array();
-		$forum_page['item_indicator'] = '';
+		$forum_page['item_subject'] = $forum_page['item_body'] = $forum_page['item_status'] = $forum_page['item_nav'] = $forum_page['item_title'] = $forum_page['item_title_status'] = array();
 
 		if ($forum_config['o_censoring'] == '1')
 			$cur_topic['subject'] = censor_words($cur_topic['subject']);
 
+		$forum_page['item_subject']['starter'] = '<span class="item-starter">'.sprintf($lang_forum['Topic starter'], forum_htmlencode($cur_topic['poster'])).'</span>';
+
 		if ($cur_topic['moved_to'] != null)
 		{
 			$forum_page['item_status']['moved'] = 'moved';
-			$forum_page['item_title']['link'] = '<a href="'.forum_link($forum_url['topic'], array($cur_topic['moved_to'], sef_friendly($cur_topic['subject']))).'"><span>'.$lang_forum['Moved'].'</span> '.forum_htmlencode($cur_topic['subject']).'</a>';
+			$forum_page['item_title']['link'] = '<span class="item-status"><em class="moved">'.sprintf($lang_forum['Item status'], $lang_forum['Moved']).'</em></span> <a href="'.forum_link($forum_url['topic'], array($cur_topic['moved_to'], sef_friendly($cur_topic['subject']))).'">'.forum_htmlencode($cur_topic['subject']).'</a>';
 
 			// Combine everything to produce the Topic heading
 			$forum_page['item_body']['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span> <strong>'.$forum_page['item_title']['link'].'</strong></h3>';
@@ -1552,7 +1556,7 @@
 
 			$forum_page['item_body']['info']['replies'] = '<li class="info-replies"><span class="label">'.$lang_forum['No replies info'].'</span></li>';
 			$forum_page['item_body']['info']['lastpost'] = '<li class="info-lastpost"><span class="label">'.$lang_forum['No lastpost info'].'</span></li>';
-			$forum_page['item_body']['info']['select'] = '<li class="info-select"><input id="fld'.++$forum_page['fld_count'].'" type="checkbox" name="topics[]" value="'.$cur_topic['id'].'" /> <label for="fld'.$forum_page['fld_count'].'">'.sprintf($lang_forum['Select topic'], $cur_topic['subject']).'</label></li>';
+			$forum_page['item_body']['info']['select'] = '<li class="info-select"><input id="fld'.++$forum_page['fld_count'].'" type="checkbox" name="topics[]" value="'.$cur_topic['id'].'" /> <label for="fld'.$forum_page['fld_count'].'">'.sprintf($lang_forum['Select topic'], forum_htmlencode($cur_topic['subject'])).'</label></li>';
 
 			($hook = get_hook('mr_topic_actions_moved_row_pre_output')) ? eval($hook) : null;
 		}
@@ -1569,8 +1573,33 @@
 				$forum_page['item_status']['posted'] = 'posted';
 			}
 
+			if ($cur_topic['sticky'] == '1')
+			{
+				$forum_page['item_title_status']['sticky'] = '<em class="sticky">'.$lang_forum['Sticky'].'</em>';
+				$forum_page['item_status']['sticky'] = 'sticky';
+			}
+
+			if ($cur_topic['closed'] == '1')
+			{
+				$forum_page['item_title_status']['closed'] = '<em class="closed">'.$lang_forum['Closed'].'</em>';
+				$forum_page['item_status']['closed'] = 'closed';
+			}
+
+			($hook = get_hook('mr_topic_loop_normal_topic_pre_item_title_status_merge')) ? eval($hook) : null;
+
+			if (!empty($forum_page['item_title_status']))
+				$forum_page['item_title']['status'] = '<span class="item-status">'.sprintf($lang_forum['Item status'], implode(', ', $forum_page['item_title_status'])).'</span>';
+
 			$forum_page['item_title']['link'] = '<strong><a href="'.forum_link($forum_url['topic'], array($cur_topic['id'], sef_friendly($cur_topic['subject']))).'">'.forum_htmlencode($cur_topic['subject']).'</a></strong>';
 
+			($hook = get_hook('mr_topic_loop_normal_topic_pre_item_title_merge')) ? eval($hook) : null;
+
+			$forum_page['item_body']['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span> '.implode(' ', $forum_page['item_title']).'</h3>';
+
+
+			if (empty($forum_page['item_status']))
+				$forum_page['item_status']['normal'] = 'normal';
+
 			$forum_page['item_pages'] = ceil(($cur_topic['num_replies'] + 1) / $forum_user['disp_posts']);
 
 			if ($forum_page['item_pages'] > 1)
@@ -1583,47 +1612,27 @@
 				$forum_page['item_status']['new'] = 'new';
 			}
 
-			if (!empty($forum_page['item_nav']))
-				$forum_page['item_title']['nav'] = '<span class="item-nav">'.sprintf($lang_forum['Topic navigation'], implode('&#160;&#160;', $forum_page['item_nav'])).'</span>';
-
-			($hook = get_hook('mr_topic_actions_moved_row_pre_item_title_merge')) ? eval($hook) : null;
+			($hook = get_hook('mr_topic_loop_normal_topic_pre_item_nav_merge')) ? eval($hook) : null;
 
-			$forum_page['item_body']['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span> '.implode(' ', $forum_page['item_title']).'</h3>';
+			if (!empty($forum_page['item_nav']))
+				$forum_page['item_subject']['nav'] = '<span class="item-nav">'.sprintf($lang_forum['Topic navigation'], implode('&#160;&#160;', $forum_page['item_nav'])).'</span>';
 
 			// Assemble the Topic subject
 
-			if ($cur_topic['sticky'] == '1')
-			{
-				$forum_page['item_subject_status']['sticky'] = $lang_forum['Sticky'];
-				$forum_page['item_status']['sticky'] = 'sticky';
-			}
-
-			if ($cur_topic['closed'] == '1')
-			{
-				$forum_page['item_subject_status']['closed'] = $lang_forum['Closed'];
-				$forum_page['item_status']['closed'] = 'closed';
-			}
-
-			($hook = get_hook('mr_topic_actions_moved_row_pre_item_subject_status_merge')) ? eval($hook) : null;
-
-			if (!empty($forum_page['item_subject_status']))
-				$forum_page['item_subject']['status'] = '<span class="item-status">'.sprintf($lang_forum['Item status'], implode(' ', $forum_page['item_subject_status'])).'</span>';
-
-			if (empty($forum_page['item_status']))
-				$forum_page['item_status']['normal'] = 'normal';
+			$forum_page['item_body']['info']['replies'] = '<li class="info-replies"><strong>'.forum_number_format($cur_topic['num_replies']).'</strong> <span class="label">'.(($cur_topic['num_replies'] == 1) ? $lang_forum['Reply'] : $lang_forum['Replies']).'</span></li>';
 
 			if ($forum_config['o_topic_views'] == '1')
 				$forum_page['item_body']['info']['views'] = '<li class="info-views"><strong>'.forum_number_format($cur_topic['num_views']).'</strong> <span class="label">'.(($cur_topic['num_views'] == 1) ? $lang_forum['View'] : $lang_forum['Views']).'</span></li>';
 
-			$forum_page['item_body']['info']['replies'] = '<li class="info-replies"><strong>'.forum_number_format($cur_topic['num_replies']).'</strong> <span class="label">'.(($cur_topic['num_replies'] == 1) ? $lang_forum['Reply'] : $lang_forum['Replies']).'</span></li>';
 			$forum_page['item_body']['info']['lastpost'] = '<li class="info-lastpost"><span class="label">'.$lang_forum['Last post'].'</span> <strong><a href="'.forum_link($forum_url['post'], $cur_topic['last_post_id']).'">'.format_time($cur_topic['last_post']).'</a></strong> <cite>'.sprintf($lang_forum['by poster'], forum_htmlencode($cur_topic['last_poster'])).'</cite></li>';
-			$forum_page['item_body']['info']['select'] = '<li class="info-select"><input id="fld'.++$forum_page['fld_count'].'" type="checkbox" name="topics[]" value="'.$cur_topic['id'].'" /> <label for="fld'.$forum_page['fld_count'].'">'.sprintf($lang_forum['Select topic'], $cur_topic['subject']).'</label></li>';
+			$forum_page['item_body']['info']['select'] = '<li class="info-select"><input id="fld'.++$forum_page['fld_count'].'" type="checkbox" name="topics[]" value="'.$cur_topic['id'].'" /> <label for="fld'.$forum_page['fld_count'].'">'.sprintf($lang_forum['Select topic'], forum_htmlencode($cur_topic['subject'])).'</label></li>';
 
 			($hook = get_hook('mr_topic_actions_normal_row_pre_output')) ? eval($hook) : null;
 		}
 
-		$forum_page['item_subject']['starter'] = '<span class="item-starter">'.sprintf($lang_forum['Topic starter'], '<cite>'.forum_htmlencode($cur_topic['poster']).'</cite>').'</span>';
-		$forum_page['item_body']['subject']['desc'] = implode(' ', $forum_page['item_subject']);
+		$forum_page['item_body']['subject']['desc'] = '<p>'.implode(' ', $forum_page['item_subject']).'</p>';
+
+		($hook = get_hook('mr_topic_actions_row_pre_item_status_merge')) ? eval($hook) : null;
 
 		$forum_page['item_style'] = (($forum_page['item_count'] % 2 != 0) ? ' odd' : ' even').(($forum_page['item_count'] == 1) ? ' main-first-item' : '').((!empty($forum_page['item_status'])) ? ' '.implode(' ', $forum_page['item_status']) : '');
 
diff -urN punbb-1.3/post.php punbb-1.3.4/post.php
--- punbb-1.3/post.php	2008-11-08 18:48:14.000000000 +0000
+++ punbb-1.3.4/post.php	2009-05-15 11:25:04.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Adds a new post to the specified topic or a new topic to the specified forum.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -153,6 +153,9 @@
 
 			if (!is_valid_email($email))
 				$errors[] = $lang_post['Invalid e-mail'];
+
+			if (is_banned_email($email))
+				$errors[] = $lang_profile['Banned e-mail'];
 		}
 	}
 
@@ -262,6 +265,8 @@
 
 	list($q_poster, $q_message) = $forum_db->fetch_row($result);
 
+	($hook = get_hook('po_modify_quote_info')) ? eval($hook) : null;
+
 	if ($forum_config['p_message_bbcode'] == '1')
 	{
 		// If username contains a square bracket, we add "" or '' around it (so we know when it starts and ends)
@@ -426,7 +431,7 @@
 <?php ($hook = get_hook('po_pre_guest_username')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
-						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><em><?php echo $lang_common['Required'] ?></em> <?php echo $lang_post['Guest name'] ?></span></label><br />
+						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_post['Guest name'] ?> <em><?php echo $lang_common['Required'] ?></em></span></label><br />
 						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php if (isset($_POST['req_username'])) echo forum_htmlencode($username); ?>" size="35" maxlength="25" /></span>
 					</div>
 				</div>
@@ -462,7 +467,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required longtext">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_post['Topic subject'] ?> <em><?php echo $lang_common['Required'] ?></em></span></label><br />
-						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="text" name="req_subject" value="<?php if (isset($_POST['req_subject'])) echo forum_htmlencode($subject); ?>" size="80" maxlength="70" /></span>
+						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="text" name="req_subject" value="<?php if (isset($_POST['req_subject'])) echo forum_htmlencode($subject); ?>" size="70" maxlength="70" /></span>
 					</div>
 				</div>
 <?php
@@ -543,13 +548,24 @@
 	if (!defined('FORUM_PARSER_LOADED'))
 		require FORUM_ROOT.'include/parser.php';
 
+	// Get the amount of posts in the topic
+	$query = array(
+		'SELECT'	=> 'count(p.id)',
+		'FROM'		=> 'posts AS p',
+		'WHERE'		=> 'topic_id='.$tid
+	);
+
+	($hook = get_hook('po_topic_review_qr_get_post_count')) ? eval($hook) : null;
+	$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
+	$forum_page['total_post_count'] = $forum_db->result($result, 0);
+
 	// Get posts to display in topic review
 	$query = array(
 		'SELECT'	=> 'p.id, p.poster, p.message, p.hide_smilies, p.posted',
 		'FROM'		=> 'posts AS p',
 		'WHERE'		=> 'topic_id='.$tid,
-		'ORDER BY'	=>	'id DESC',
-		'LIMIT'		=>	$forum_config['o_topic_review']
+		'ORDER BY'	=> 'id DESC',
+		'LIMIT'		=> $forum_config['o_topic_review']
 	);
 
 	($hook = get_hook('po_topic_review_qr_get_topic_review_posts')) ? eval($hook) : null;
@@ -564,25 +580,16 @@
 
 	$forum_page['item_count'] = 0;
 	$forum_page['item_total'] = $forum_db->num_rows($result);
-	$forum_page['author_title'] = '';
 
 	while ($cur_post = $forum_db->fetch_assoc($result))
 	{
 		++$forum_page['item_count'];
 
-		// Generate the post heading
-		$forum_page['post_ident'] = array(
-			'num'	=> '<span class="post-num">'.forum_number_format($forum_page['item_count']).'</span>',
-			'link'	=> '<span class="post-link">'.sprintf($lang_post['Post posted'], '<a class="permalink" rel="bookmark" title="'.$lang_post['Permalink post'].'" href="'.forum_link($forum_url['post'], $cur_post['id']).'">'.format_time($cur_post['posted']).'</a>').'</span>'
-		);
-
-		($hook = get_hook('po_topic_review_pre_item_indent_merge')) ? eval($hook) : null;
-
 		$forum_page['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);
 
 		// Generate the post heading
 		$forum_page['post_ident'] = array();
-		$forum_page['post_ident']['num'] = '<span class="post-num">'.forum_number_format($forum_page['item_count']).'</span>';
+		$forum_page['post_ident']['num'] = '<span class="post-num">'.forum_number_format($forum_page['total_post_count'] - $forum_page['item_count'] + 1).'</span>';
 		$forum_page['post_ident']['byline'] = '<span class="post-byline">'.sprintf($lang_post['Post byline'], '<strong>'.forum_htmlencode($cur_post['poster']).'</strong>').'</span>';
 		$forum_page['post_ident']['link'] = '<span class="post-link"><a class="permalink" rel="bookmark" title="'.$lang_post['Permalink post'].'" href="'.forum_link($forum_url['post'], $cur_post['id']).'">'.format_time($cur_post['posted']).'</a></span>';
 
diff -urN punbb-1.3/profile.php punbb-1.3.4/profile.php
--- punbb-1.3/profile.php	2008-11-09 13:28:04.000000000 +0000
+++ punbb-1.3.4/profile.php	2009-05-20 09:08:28.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Allows users to view and edit their details.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -123,9 +123,6 @@
 				($forum_page['own_profile']) ? array($lang_profile['Change your password'], forum_link($forum_url['change_password'], $id)) : array(sprintf($lang_profile['Change user password'], forum_htmlencode($user['username'])),forum_link($forum_url['change_password']), $id)
 			);
 
-			// Setup headings
-			$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], sprintf($lang_profile['Users profile'], forum_htmlencode($user['username'])), end($forum_page['crumbs']));
-
 			($hook = get_hook('pf_change_pass_key_pre_header_load')) ? eval($hook) : null;
 
 			define('FORUM_PAGE', 'profile-changepass');
@@ -138,7 +135,7 @@
 
 ?>
 	<div class="main-head">
-		<h2 class="hn"><span><?php printf(($forum_user['id'] == $id) ? $lang_profile['Profile welcome'] : $lang_profile['Profile welcome user'], forum_htmlencode($user['username'])) ?></span></h2>
+		<h2 class="hn"><span><?php echo $forum_page['own_profile'] ? $lang_profile['Change your password'] : sprintf($lang_profile['Change user password'], forum_htmlencode($user['username'])) ?></span></h2>
 	</div>
 	<div class="main-content main-frm">
 <?php
@@ -179,14 +176,14 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['New password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php echo(isset($_POST['req_new_password1']) ? ($_POST['req_new_password1']) : ''); ?>"/></span><br />
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php echo(isset($_POST['req_new_password1']) ? forum_htmlencode($_POST['req_new_password1']) : ''); ?>"/></span><br />
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_pass_key_pre_new_password_confirm')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm new password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Confirm password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php echo(isset($_POST['req_new_password2']) ? ($_POST['req_new_password2']) : ''); ?>"/></span><br />
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php echo(isset($_POST['req_new_password2']) ? forum_htmlencode($_POST['req_new_password2']) : ''); ?>"/></span><br />
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_pass_key_pre_fieldset_end')) ? eval($hook) : null; ?>
@@ -290,9 +287,6 @@
 		($forum_page['own_profile']) ? array($lang_profile['Change your password'], forum_link($forum_url['change_password'], $id)) : array(sprintf($lang_profile['Change user password'], forum_htmlencode($user['username'])),forum_link($forum_url['change_password'], $id))
 	);
 
-	// Setup headings
-	$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], sprintf($lang_profile['Users profile'], forum_htmlencode($user['username'])), end($forum_page['crumbs']));
-
 	($hook = get_hook('pf_change_pass_normal_pre_header_load')) ? eval($hook) : null;
 
 	define('FORUM_PAGE', 'profile-changepass');
@@ -305,7 +299,7 @@
 
 ?>
 	<div class="main-head">
-		<h2 class="hn"><span><?php printf(($forum_user['id'] == $id) ? $lang_profile['Profile welcome'] : $lang_profile['Profile welcome user'], forum_htmlencode($user['username'])) ?></span></h2>
+		<h2 class="hn"><span><?php echo $forum_page['own_profile'] ? $lang_profile['Change your password'] : sprintf($lang_profile['Change user password'], forum_htmlencode($user['username'])) ?></span></h2>
 	</div>
 	<div class="main-content main-frm">
 <?php
@@ -343,24 +337,24 @@
 				<legend class="group-legend"><strong><?php echo $lang_common['Required information'] ?></strong></legend>
 <?php ($hook = get_hook('pf_change_pass_normal_pre_old_password')) ? eval($hook) : null; ?>
 <?php if (!$forum_user['is_admmod']): ?>
-								<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
+				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Old password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Old password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_old_password" size="35" value="<?php echo(isset($_POST['req_old_password']) ? ($_POST['req_old_password']) : ''); ?>"/></span>
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_old_password" size="35" value="<?php echo(isset($_POST['req_old_password']) ? forum_htmlencode($_POST['req_old_password']) : ''); ?>"/></span>
 					</div>
 				</div>
 <?php endif; ($hook = get_hook('pf_change_pass_normal_pre_new_password')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['New password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php echo(isset($_POST['req_new_password1']) ? ($_POST['req_new_password1']) : ''); ?>"/></span><br />
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php echo(isset($_POST['req_new_password1']) ? forum_htmlencode($_POST['req_new_password1']) : ''); ?>"/></span><br />
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_pass_normal_pre_new_password_confirm')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm new password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Confirm password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php echo(isset($_POST['req_new_password2']) ? ($_POST['req_new_password2']) : ''); ?>"/></span><br />
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php echo(isset($_POST['req_new_password2']) ? forum_htmlencode($_POST['req_new_password2']) : ''); ?>"/></span><br />
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_pass_normal_pre_fieldset_end')) ? eval($hook) : null; ?>
@@ -436,7 +430,7 @@
 		if (!is_valid_email($new_email))
 			$errors[] = $lang_common['Invalid e-mail'];
 
-		// Check it it's a banned e-mail address
+		// Check if it's a banned e-mail address
 		if (is_banned_email($new_email))
 		{
 			($hook = get_hook('pf_change_email_normal_banned_email')) ? eval($hook) : null;
@@ -482,6 +476,23 @@
 		// Did everything go according to plan?
 		if (empty($errors))
 		{
+			if ($forum_config['o_regs_verify'] != '1')
+			{
+				// We have no confirmed e-mail so we change e-mail right now
+				$query = array(
+					'UPDATE'	=> 'users',
+					'SET'		=> 'email=\''.$forum_db->escape($new_email).'\'',
+					'WHERE'		=> 'id='.$id
+				);
+
+				($hook = get_hook('pf_change_email_key_qr_update_email')) ? eval($hook) : null;
+				$forum_db->query_build($query) or error(__FILE__, __LINE__);
+
+				redirect(forum_link($forum_url['profile_about'], $id), $lang_profile['E-mail updated redirect']);
+			}
+
+			// We have a confirmed e-mail so we going to send an activation link
+
 			$new_email_key = random_key(8, true);
 
 			// Save new e-mail and activation key
@@ -537,9 +548,6 @@
 		($forum_page['own_profile']) ? array($lang_profile['Change your e-mail'], forum_link($forum_url['change_email'], $id)) : array(sprintf($lang_profile['Change user e-mail'], forum_htmlencode($user['username'])), forum_link($forum_url['change_email'], $id))
 	);
 
-	// Setup headings
-	$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], sprintf($lang_profile['Users profile'], forum_htmlencode($user['username'])), end($forum_page['crumbs']));
-
 	($hook = get_hook('pf_change_email_normal_pre_header_load')) ? eval($hook) : null;
 
 	define('FORUM_PAGE', 'profile-changemail');
@@ -602,7 +610,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Password'] ?> <em><?php echo $lang_common['Required'] ?></em></span></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" size="25" value="<?php echo(isset($_POST['req_password']) ? ($_POST['req_password']) : ''); ?>"/></span>
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" size="25" value="<?php echo(isset($_POST['req_password']) ? forum_htmlencode($_POST['req_password']) : ''); ?>"/></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_email_normal_pre_fieldset_end')) ? eval($hook) : null; ?>
@@ -668,11 +676,6 @@
 		array($lang_profile['Delete user'], forum_link($forum_url['delete_user'], $id))
 	);
 
-	// Setup headings
-	$forum_page['main_head'] = array(
-		'head' => '<h1 class="hn"><span>'.sprintf($lang_profile['Subform heading'], sprintf($lang_profile['Users profile'], forum_htmlencode($user['username'])), end($forum_page['crumbs'])).'</span></h1>'
-	);
-
 	($hook = get_hook('pf_delete_user_pre_header_load')) ? eval($hook) : null;
 
 	define('FORUM_PAGE', 'dialogue');
@@ -903,7 +906,7 @@
 					$form['num_posts'] = intval($_POST['num_posts']);
 			}
 
-			if ($forum_config['o_regs_verify'] == '0' || $forum_user['is_admmod'])
+			if ($forum_user['is_admmod'])
 			{
 				if (!defined('FORUM_EMAIL_FUNCTIONS_LOADED'))
 					require FORUM_ROOT.'include/email.php';
@@ -1298,15 +1301,12 @@
 	$forum_user['g_id'] != FORUM_ADMIN &&
 	($forum_user['g_moderator'] != '1' || $forum_user['g_mod_edit_users'] == '0' || $user['g_id'] == FORUM_ADMIN || $user['g_moderator'] == '1'))
 {
-	($hook = get_hook('pf_view_details_selected')) ? eval($hook) : null;
-
 	// Setup user identification
 	$forum_page['user_ident'] = array();
 
 	($hook = get_hook('pf_view_details_selected')) ? eval($hook) : null;
 
 	$forum_page['user_ident']['username'] = '<li class="username'.(($user['realname'] =='') ? ' fn nickname' :  ' nickname').'"><strong>'.forum_htmlencode($user['username']).'</strong></li>';
-	$forum_page['user_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($user).'</span></li>';
 
 	if ($forum_config['o_avatars'] == '1')
 	{
@@ -1316,6 +1316,8 @@
 			$forum_page['user_ident']['avatar'] = '<li class="useravatar">'.$forum_page['avatar_markup'].'</li>';
 	}
 
+	$forum_page['user_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($user).'</span></li>';
+
 	// Setup user information
 	$forum_page['user_info'] = array();
 
@@ -1421,8 +1423,8 @@
 					</ul>
 				</div>
 			</div>
-<?php ($hook = get_hook('pf_view_details_pre_user_activity_info')) ? eval($hook) : null; ?>
-<?php endif; if (!empty($forum_page['user_activity'])): ?>
+<?php endif; ($hook = get_hook('pf_view_details_pre_user_activity_info')) ? eval($hook) : null; ?>
+<?php if (!empty($forum_page['user_activity'])): ?>
 			<div class="ct-set data-set set<?php echo ++$forum_page['item_count'] ?>">
 				<div class="ct-box data-box">
 					<h3 class="ct-legend hn"><span><?php echo $lang_profile['Posts and topics'] ?></span></h3>
@@ -1431,8 +1433,8 @@
 					</ul>
 				</div>
 			</div>
-<?php ($hook = get_hook('pf_view_details_pre_user_sig_info')) ? eval($hook) : null; ?>
-<?php endif; if (isset($forum_page['sig_demo'])): ?>
+<?php endif; ($hook = get_hook('pf_view_details_pre_user_sig_info')) ? eval($hook) : null; ?>
+<?php if (isset($forum_page['sig_demo'])): ?>
 			<div class="ct-set data-set set<?php echo ++$forum_page['item_count'] ?>">
 				<div class="ct-box data-box">
 					<h3 class="ct-legend hn"><span><?php echo $lang_profile['Current signature'] ?></span></h3>
@@ -1500,7 +1502,6 @@
 		($hook = get_hook('pf_change_details_about_selected')) ? eval($hook) : null;
 
 		$forum_page['user_ident']['username'] = '<li class="username'.(($user['realname'] =='') ? ' fn nickname' :  ' nickname').'"><strong>'.forum_htmlencode($user['username']).'</strong></li>';
-		$forum_page['user_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($user).'</span></li>';
 
 		if ($forum_config['o_avatars'] == '1')
 		{
@@ -1510,6 +1511,8 @@
 				$forum_page['user_ident']['avatar'] = '<li class="useravatar">'.$forum_page['avatar_markup'].'</li>';
 		}
 
+		$forum_page['user_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($user).'</span></li>';
+
 		// Create array for private information
 		$forum_page['user_private'] = array();
 
@@ -1563,15 +1566,15 @@
 
 		// Setup user messaging
 		if ($user['jabber'] !='')
-			$forum_page['user_contact']['jabber'] = '<li><span><strong>'.$lang_profile['Jabber'].':</strong> '.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['jabber']) : $user['jabber']).'</span></li>';
+			$forum_page['user_contact']['jabber'] = '<li><span>'.$lang_profile['Jabber'].': <strong>'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['jabber']) : $user['jabber']).'</strong></span></li>';
 		if ($user['icq'] !='')
-			$forum_page['user_contact']['icq'] = '<li><span><strong>'.$lang_profile['ICQ'].':</strong> '.forum_htmlencode($user['icq']).'</span></li>';
+			$forum_page['user_contact']['icq'] = '<li><span>'.$lang_profile['ICQ'].': <strong>'.forum_htmlencode($user['icq']).'</strong></span></li>';
 		if ($user['msn'] !='')
-			$forum_page['user_contact']['msn'] = '<li><span><strong>'.$lang_profile['MSN'].':</strong> '.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['msn']) : $user['msn']).'</span></li>';
+			$forum_page['user_contact']['msn'] = '<li><span>'.$lang_profile['MSN'].': <strong>'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['msn']) : $user['msn']).'</strong></span></li>';
 		if ($user['aim'] !='')
-			$forum_page['user_contact']['aim'] = '<li><span><strong>'.$lang_profile['AOL IM'].':</strong> '.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['aim']) : $user['aim']).'</span></li>';
+			$forum_page['user_contact']['aim'] = '<li><span>'.$lang_profile['AOL IM'].': <strong>'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['aim']) : $user['aim']).'</strong></span></li>';
 		if ($user['yahoo'] !='')
-			$forum_page['user_contact']['yahoo'] = '<li><span><strong>'.$lang_profile['Yahoo'].':</strong> '.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['yahoo']) : $user['yahoo']).'</span></li>';
+			$forum_page['user_contact']['yahoo'] = '<li><span>'.$lang_profile['Yahoo'].': <strong>'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($user['yahoo']) : $user['yahoo']).'</strong></span></li>';
 
 		// Setup signature demo
 		if ($forum_config['o_signatures'] == '1' && isset($parsed_signature))
@@ -1594,12 +1597,9 @@
 		if ($forum_page['own_profile'] || $forum_user['g_id'] == FORUM_ADMIN || ($forum_user['g_moderator'] == '1' && $forum_user['g_mod_change_passwords'] == '1'))
 			$forum_page['user_options']['change_password'] = '<span'.(empty($forum_page['user_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['change_password'], $id).'">'.(($forum_page['own_profile']) ? $lang_profile['Change your password'] : sprintf($lang_profile['Change user password'], forum_htmlencode($user['username']))).'</a></span>';
 
-		if (!$forum_user['is_admmod'] && $forum_config['o_regs_verify'] == '1')
+		if (!$forum_user['is_admmod'])
 			$forum_page['user_options']['change_email'] = '<span'.(empty($forum_page['user_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['change_email'], $id).'">'.(($forum_page['own_profile']) ? $lang_profile['Change your e-mail'] : sprintf($lang_profile['Change user e-mail'], forum_htmlencode($user['username']))).'</a></span>';
 
-		// Setup headings
-		$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], forum_htmlencode(end($forum_page['crumbs'][0])), $lang_profile['Section about']);
-
 		$forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
 
 		($hook = get_hook('pf_change_details_about_pre_header_load')) ? eval($hook) : null;
@@ -1707,10 +1707,7 @@
 			$forum_page['hidden_fields']['old_username'] = '<input type="hidden" name="old_username" value="'.forum_htmlencode($user['username']).'" />';
 
 		// Does the form have required fields
-		$forum_page['has_required'] = ((($forum_user['is_admmod'] && ($forum_user['g_id'] == FORUM_ADMIN || $forum_user['g_mod_rename_users'] == '1')) || ($forum_user['is_admmod'] || $forum_config['o_regs_verify'] != '1')) ? true : false);
-
-		// Setup headings
-		$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], forum_htmlencode(end($forum_page['crumbs'][0])), $lang_profile['Section identity']);
+		$forum_page['has_required'] = ((($forum_user['is_admmod'] && ($forum_user['g_id'] == FORUM_ADMIN || $forum_user['g_mod_rename_users'] == '1')) || $forum_user['is_admmod']) ? true : false);
 
 		($hook = get_hook('pf_change_details_identity_pre_header_load')) ? eval($hook) : null;
 
@@ -1770,7 +1767,7 @@
 					</div>
 				</div>
 <?php endif; ($hook = get_hook('pf_change_details_identity_pre_email')) ? eval($hook) : null; ?>
-<?php if ($forum_user['is_admmod'] || $forum_config['o_regs_verify'] != '1'): ?>
+<?php if ($forum_user['is_admmod']): ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['E-mail'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['E-mail help'] ?></small></label><br />
@@ -1925,9 +1922,6 @@
 			'csrf_token'	=> '<input type="hidden" name="csrf_token" value="'.generate_form_token($forum_page['form_action']).'" />'
 		);
 
-		// Setup headings
-		$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], forum_htmlencode(end($forum_page['crumbs'][0])), $lang_profile['Section settings']);
-
 		($hook = get_hook('pf_change_details_settings_pre_header_load')) ? eval($hook) : null;
 
 		define('FORUM_PAGE', 'profile-settings');
@@ -2283,9 +2277,6 @@
 		if ($forum_config['o_smilies_sig'] == '1')
 			$forum_page['text_options']['smilies'] = '<span'.(empty($forum_page['text_options']) ? ' class="first-item"' : '').'><a class="exthelp" href="'.forum_link($forum_url['help'], 'smilies').'" title="'.sprintf($lang_common['Help page'], $lang_common['Smilies']).'">'.$lang_common['Smilies'].'</a></span>';
 
-		// Setup headings
-		$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], forum_htmlencode(end($forum_page['crumbs'][0])), $lang_profile['Section signature']);
-
 		($hook = get_hook('pf_change_details_signature_pre_header_load')) ? eval($hook) : null;
 
 		define('FORUM_PAGE', 'profile-signature');
@@ -2407,9 +2398,6 @@
 			$forum_page['frm_info']['avatar_size'] = '<li><span>'.sprintf($lang_profile['Avatar info size'], $forum_config['o_avatars_width'], $forum_config['o_avatars_height'], forum_number_format($forum_config['o_avatars_size']), forum_number_format(ceil($forum_config['o_avatars_size'] / 1024))).'</span></li>';
 		}
 
-		// Setup headings
-		$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], forum_htmlencode(end($forum_page['crumbs'][0])), $lang_profile['Section avatar']);
-
 		($hook = get_hook('pf_change_details_avatar_pre_header_load')) ? eval($hook) : null;
 
 		define('FORUM_PAGE', 'profile-avatar');
@@ -2532,9 +2520,6 @@
 			$forum_page['user_management']['delete'] = '<div class="ct-set set'.++$forum_page['item_count'].'">'."\n\t\t\t\t".'<div class="ct-box">'."\n\t\t\t\t\t".'<h3 class="ct-legend hn">'.$lang_profile['Delete user'].'</h3>'."\n\t\t\t\t".'<p><a href="'.forum_link($forum_url['delete_user'], $id).'">'.$lang_profile['Delete user info'].'</a></p>'."\n\t\t\t\t".'</div>'."\n\t\t\t".'</div>';
 		}
 
-		// Setup headings
-		$forum_page['main_head'] = sprintf($lang_profile['Subform heading'], forum_htmlencode(end($forum_page['crumbs'][0])), $lang_profile['Section admin']);
-
 		($hook = get_hook('pf_change_details_admin_pre_header_load')) ? eval($hook) : null;
 
 		define('FORUM_PAGE', 'profile-admin');
@@ -2564,7 +2549,7 @@
 
 			echo "\t\t\t".implode("\n\t\t\t", $forum_page['user_management'])."\n";
 
-			($hook = get_hook('pf_change_details_admin_pre_group_membership')) ? eval($hook) : null;
+			($hook = get_hook('pf_change_details_admin_pre_membership')) ? eval($hook) : null;
 
 			if ($forum_user['g_moderator'] != '1' && !$forum_page['own_profile'])
 			{
diff -urN punbb-1.3/register.php punbb-1.3.4/register.php
--- punbb-1.3/register.php	2008-11-08 17:53:23.000000000 +0000
+++ punbb-1.3.4/register.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Allows the creation of new user accounts.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -74,7 +74,7 @@
 		<div class="ct-box user-box">
 			<?php echo $forum_config['o_rules_message'] ?>
 		</div>
-		<form class="frm-form" method="get" accept-charset="utf-8" action="<?php echo $base_url ?>/register.php">
+		<form class="frm-form" method="get" accept-charset="utf-8" action="<?php echo forum_link($forum_url['register']) ?>">
 <?php ($hook = get_hook('rg_rules_pre_group')) ? eval($hook) : null; ?>
 			<div class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
 <?php ($hook = get_hook('rg_rules_pre_agree_checkbox')) ? eval($hook) : null; ?>
@@ -264,7 +264,7 @@
 
 // Setup form
 $forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
-$forum_page['form_action'] = $base_url.'/register.php?action=register';
+$forum_page['form_action'] = forum_link($forum_url['register']).'?action=register';
 
 // Setup form information
 $forum_page['frm_info']['intro'] = '<p>'.$lang_profile['Register intro'].'</p>';
diff -urN punbb-1.3/rewrite.php punbb-1.3.4/rewrite.php
--- punbb-1.3/rewrite.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/rewrite.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Rewrites SEF URLs to their actual files.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -78,7 +78,8 @@
 // If we don't know what to rewrite to, we show a bad request messsage
 if (empty($rewritten_url))
 {
-	header('HTTP/1.x 404 Not Found');
+	define('FORUM_HTTP_RESPONSE_CODE_SET', 1);
+	header('HTTP/1.1 404 Not Found');
 
 	// Allow an extension to override the "Bad request" message with a custom 404 page
 	($hook = get_hook('re_page_not_found')) ? eval($hook) : null;
diff -urN punbb-1.3/search.php punbb-1.3.4/search.php
--- punbb-1.3/search.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/search.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Allows users to search the forum based on various criteria.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -42,7 +42,7 @@
 // We aren't just grabbing a cached search
 else if (isset($_GET['action']))
 {
-	$action = (isset($_GET['action'])) ? $_GET['action'] : null;
+	$action = $_GET['action'];
 
 	// Validate action
 	if (!validate_search_action($action))
@@ -191,7 +191,7 @@
 	<div class="main-subhead">
 		<p class="item-summary forum-noview"><span><?php printf($lang_forum['Search subtitle'], implode(' ', $forum_page['item_header']['subject']), implode(', ', $forum_page['item_header']['info'])) ?></span></p>
 	</div>
-	<div class="main-content main-forum forum-noview">
+	<div class="main-content main-forum forum-forums">
 <?php
 
 	}
@@ -237,7 +237,7 @@
 		{
 			// Generate the result heading
 			$forum_page['post_ident'] = array();
-			$forum_page['post_ident']['num']	= '<span class="post-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span>';
+			$forum_page['post_ident']['num'] = '<span class="post-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span>';
 			$forum_page['post_ident']['byline'] = '<span class="post-byline">'.sprintf((($cur_set['pid'] == $cur_set['first_post_id']) ? $lang_topic['Topic byline'] : $lang_topic['Reply byline']), '<strong>'.forum_htmlencode($cur_set['pposter']).'</strong>').'</span>';
 			$forum_page['post_ident']['link'] = '<span class="post-link"><a class="permalink" rel="bookmark" title="'.$lang_topic['Permalink post'].'" href="'.forum_link($forum_url['post'], $cur_set['pid']).'">'.format_time($cur_set['pposted']).'</a></span>';
 
@@ -305,7 +305,6 @@
 		{
 			// Start from scratch
 			$forum_page['item_subject'] = $forum_page['item_body'] = $forum_page['item_status'] = $forum_page['item_nav'] = $forum_page['item_title'] = $forum_page['item_title_status'] = array();
-			$forum_page['item_indicator'] = '';
 
 			// Assemble the Topic heading
 
@@ -316,52 +315,51 @@
 				$forum_page['item_status']['posted'] = 'posted';
 			}
 
-			$forum_page['item_title']['link'] = '<a href="'.forum_link($forum_url['topic'], array($cur_set['tid'], sef_friendly($cur_set['subject']))).'">'.forum_htmlencode($cur_set['subject']).'</a>';
-
-			$forum_page['item_pages'] = ceil(($cur_set['num_replies'] + 1) / $forum_user['disp_posts']);
-
-			if ($forum_page['item_pages'] > 1)
-				$forum_page['item_nav']['pages'] = '<span>'.$lang_forum['Pages'].'&#160;</span>'.paginate($forum_page['item_pages'], -1, $forum_url['topic'], $lang_common['Page separator'], array($cur_set['tid'], sef_friendly($cur_set['subject'])));
+			if ($cur_set['sticky'] == '1')
+			{
+				$forum_page['item_title_status']['sticky'] = '<em class="sticky">'.$lang_forum['Sticky'].'</em>';
+				$forum_page['item_status']['sticky'] = 'sticky';
+			}
 
-			// Does this topic contain posts we haven't read? If so, tag it accordingly.
-			if (!$forum_user['is_guest'] && $cur_set['last_post'] > $forum_user['last_visit'] && (!isset($tracked_topics['topics'][$cur_set['tid']]) || $tracked_topics['topics'][$cur_set['tid']] < $cur_set['last_post']) && (!isset($tracked_topics['forums'][$cur_set['forum_id']]) || $tracked_topics['forums'][$cur_set['forum_id']] < $cur_set['last_post']))
+			if ($cur_set['closed'] != '0')
 			{
-				$forum_page['item_nav']['new'] = '<em class="item-newposts"><a href="'.forum_link($forum_url['topic_new_posts'], array($cur_set['tid'], sef_friendly($cur_set['subject']))).'" title="'.$lang_forum['New posts info'].'">'.$lang_forum['New posts'].'</a></em>';
-				$forum_page['item_status']['new'] = 'new';
+				$forum_page['item_title_status']['closed'] = '<em class="closed">'.$lang_forum['Closed'].'</em>';
+				$forum_page['item_status']['closed'] = 'closed';
 			}
 
-			($hook = get_hook('se_results_topics_row_pre_item_nav_merge')) ? eval($hook) : null;
+			($hook = get_hook('se_results_topics_row_pre_item_subject_status_merge')) ? eval($hook) : null;
 
-			if (!empty($forum_page['item_nav']))
-				$forum_page['item_title']['nav'] = '<span class="item-nav">'.sprintf($lang_forum['Topic navigation'], implode('&#160;&#160;', $forum_page['item_nav'])).'</span>';
+			if (!empty($forum_page['item_title_status']))
+				$forum_page['item_title']['status'] = '<span class="item-status">'.sprintf($lang_forum['Item status'], implode(', ', $forum_page['item_title_status'])).'</span>';
+
+			$forum_page['item_title']['link'] = '<a href="'.forum_link($forum_url['topic'], array($cur_set['tid'], sef_friendly($cur_set['subject']))).'">'.forum_htmlencode($cur_set['subject']).'</a>';
 
 			($hook = get_hook('se_results_topics_row_pre_item_title_merge')) ? eval($hook) : null;
 
 			$forum_page['item_body']['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span> '.implode(' ', $forum_page['item_title']).'</h3>';
 
+			$forum_page['item_pages'] = ceil(($cur_set['num_replies'] + 1) / $forum_user['disp_posts']);
 
-			if ($cur_set['sticky'] == '1')
-			{
-				$forum_page['item_subject_status']['sticky'] = $lang_forum['Sticky'];
-				$forum_page['item_status']['sticky'] = 'sticky';
-			}
+			if ($forum_page['item_pages'] > 1)
+				$forum_page['item_nav']['pages'] = '<span>'.$lang_forum['Pages'].'&#160;</span>'.paginate($forum_page['item_pages'], -1, $forum_url['topic'], $lang_common['Page separator'], array($cur_set['tid'], sef_friendly($cur_set['subject'])));
 
-			if ($cur_set['closed'] != '0')
+			// Does this topic contain posts we haven't read? If so, tag it accordingly.
+			if (!$forum_user['is_guest'] && $cur_set['last_post'] > $forum_user['last_visit'] && (!isset($tracked_topics['topics'][$cur_set['tid']]) || $tracked_topics['topics'][$cur_set['tid']] < $cur_set['last_post']) && (!isset($tracked_topics['forums'][$cur_set['forum_id']]) || $tracked_topics['forums'][$cur_set['forum_id']] < $cur_set['last_post']))
 			{
-				$forum_page['item_subject_status']['closed'] = $lang_forum['Closed'];
-				$forum_page['item_status']['closed'] = 'closed';
+				$forum_page['item_nav']['new'] = '<em class="item-newposts"><a href="'.forum_link($forum_url['topic_new_posts'], array($cur_set['tid'], sef_friendly($cur_set['subject']))).'" title="'.$lang_forum['New posts info'].'">'.$lang_forum['New posts'].'</a></em>';
+				$forum_page['item_status']['new'] = 'new';
 			}
 
-			($hook = get_hook('se_results_topics_row_pre_item_subject_status_merge')) ? eval($hook) : null;
+			($hook = get_hook('se_results_topics_row_pre_item_nav_merge')) ? eval($hook) : null;
 
-			if (!empty($forum_page['item_subject_status']))
-				$forum_page['item_subject']['status'] = '<span class="item-status">'.sprintf($lang_forum['Item status'], implode(' ', $forum_page['item_subject_status'])).'</span>';
+			$forum_page['item_subject']['starter'] = '<span class="item-starter">'.sprintf($lang_forum['Topic starter'], forum_htmlencode($cur_set['poster'])).'</span>';
 
-			$forum_page['item_subject']['starter'] = '<span class="item-starter">'.sprintf($lang_forum['Topic starter'], '<cite>'.forum_htmlencode($cur_set['poster']).'</cite>').'</span>';
+			if (!empty($forum_page['item_nav']))
+				$forum_page['item_subject']['nav'] = '<span class="item-nav">'.sprintf($lang_forum['Topic navigation'], implode('&#160;&#160;', $forum_page['item_nav'])).'</span>';
 
 			($hook = get_hook('se_results_topics_row_pre_item_subject_merge')) ? eval($hook) : null;
 
-			$forum_page['item_body']['subject']['desc'] = implode(' ', $forum_page['item_subject']);
+			$forum_page['item_body']['subject']['desc'] = '<p>'.implode(' ', $forum_page['item_subject']).'</p>';
 
 			if (empty($forum_page['item_status']))
 				$forum_page['item_status']['normal'] = 'normal';
@@ -370,7 +368,7 @@
 
 			$forum_page['item_style'] = (($forum_page['item_count'] % 2 != 0) ? ' odd' : ' even').(($forum_page['item_count'] == 1) ? ' main-first-item' : '').((!empty($forum_page['item_status'])) ? ' '.implode(' ', $forum_page['item_status']) : '');
 
-			$forum_page['item_body']['info']['forum'] = '<li class="info-forum"><strong>'.$cur_set['forum_name'].'</strong> <span class="label">'.(($cur_set['num_replies'] == 1) ? $lang_forum['Reply'] : $lang_forum['Replies']).'</span></li>';
+			$forum_page['item_body']['info']['forum'] = '<li class="info-forum"><span class="label">'.$lang_search['Posted in'].'</span><a href="'.forum_link($forum_url['forum'], array($cur_set['forum_id'], sef_friendly($cur_set['forum_name']))).'">'.$cur_set['forum_name'].'</a></li>';
 			$forum_page['item_body']['info']['replies'] = '<li class="info-replies"><strong>'.forum_number_format($cur_set['num_replies']).'</strong> <span class="label">'.(($cur_set['num_replies'] == 1) ? $lang_forum['Reply'] : $lang_forum['Replies']).'</span></li>';
 			$forum_page['item_body']['info']['lastpost'] = '<li class="info-lastpost"><span class="label">'.$lang_forum['Last post'].'</span> <strong><a href="'.forum_link($forum_url['post'], $cur_set['last_post_id']).'">'.format_time($cur_set['last_post']).'</a></strong> <cite>'.sprintf($lang_forum['by poster'], forum_htmlencode($cur_set['last_poster'])).'</cite></li>';
 
@@ -394,14 +392,14 @@
 ?>
 	</div>
 
-			<div class="main-foot">
+	<div class="main-foot">
 <?php
 
 	if (!empty($forum_page['main_foot_options']))
 		echo "\n\t\t\t".'<p class="options">'.implode(' ', $forum_page['main_foot_options']).'</p>';
 
 ?>
-		<p><?php echo $forum_page['items_info'] ?></p>
+		<h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
 	</div>
 <?php
 
@@ -495,6 +493,17 @@
 						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="text" name="author" size="25" maxlength="25" /></span>
 					</div>
 				</div>
+<?php ($hook = get_hook('se_pre_search_in')) ? eval($hook) : null; ?>
+				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
+					<div class="sf-box select">
+						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_search['Search in'] ?></span></label><br />
+						<span class="fld-input"><select id="fld<?php echo $forum_page['fld_count'] ?>" name="search_in">
+							<option value="all"><?php echo $lang_search['Message and subject'] ?></option>
+							<option value="message"><?php echo $lang_search['Message only'] ?></option>
+							<option value="topic"><?php echo $lang_search['Topic only'] ?></option>
+						</select></span>
+					</div>
+				</div>
 <?php ($hook = get_hook('se_pre_forum_fieldset')) ? eval($hook) : null; ?>
 				<fieldset class="mf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<legend><span><?php echo $lang_search['Forum search'] ?> <em><?php echo ($forum_config['o_search_all_forums'] == '1' || $forum_user['is_admmod']) ? $lang_search['Forum search default'] : $lang_search['Forum search require'] ?></em></span></legend>
diff -urN punbb-1.3/style/Oxygen/Oxygen.css punbb-1.3.4/style/Oxygen/Oxygen.css
--- punbb-1.3/style/Oxygen/Oxygen.css	2008-11-09 13:47:27.000000000 +0000
+++ punbb-1.3.4/style/Oxygen/Oxygen.css	2009-04-17 12:23:47.000000000 +0000
@@ -83,7 +83,7 @@
 	line-height: 0.0;
 	overflow:hidden;
 	visibility: hidden;
- 	clear: both;
+	clear: both;
 	}
 
 /* Hidden items
@@ -112,13 +112,13 @@
 .brd .main-head .hn small,
 .brd .entry-title,
 .brd .menu-page .main-head {
- 	font-size: 0;
- 	left: -999em;
- 	text-indent: -999em;
- 	position:absolute;
- 	line-height: 0em;
- 	visibility: hidden;
- 	}
+	font-size: 0;
+	left: -999em;
+	text-indent: -999em;
+	position:absolute;
+	line-height: 0em;
+	visibility: hidden;
+	}
 
 
 /*************************************************************
@@ -211,13 +211,13 @@
 	border-bottom-width: 1px;
 	}
 
-.brd .main-head {
+.brd .main-head, .brd .main-foot {
 	border-style: solid;
 	border-width: 1px;
 	padding: 0 1.417em;
 	}
 
-.brd .main-head .hn, .brd .main-foot .hn{
+.brd .main-head .hn, .brd .main-foot .hn {
 	font-size: 1.084em;
 	padding-right: 10em;
 	}
@@ -225,7 +225,6 @@
 .brd h2.main-subhead {
 	border-style: solid;
 	border-width: 1px;
-	padding: 0 1.417em;
 	font-size: 1.084em;
 	padding: 0.462em 10em 0.426em 1.417em;
 	}
@@ -249,13 +248,6 @@
 	position: relative;
 	}
 
-.brd .main-head,
-.brd .main-foot {
-	padding: 0 1.5em;
-	border-style: none;
-	border-width: 1px;
-	}
-
 .brd .main-foot {
 	margin-top: -1em;
 	}
@@ -306,9 +298,9 @@
 	}
 
 .brd .extension .options, .brd .hotfix .options {
-	border-top-style:dashed;
-	border-top-width:1px;
-}
+	border-top-style: dashed;
+	border-top-width: 1px;
+	}
 
 /* Content Containers
 -------------------------------------------------------------*/
@@ -652,7 +644,7 @@
 
 .brd .crumbs {
 	margin: 0.5em 0em;
-	padding: 0em 1.5em;
+	padding: 0em 1.417em;
 	font-size: 1.084em;
 	}
 
@@ -669,20 +661,20 @@
 	}
 
 #brd-stats ul li.st-users {
- 	float: left;
- 	clear: both;
- 	white-space: nowrap;
- 	}
+	float: left;
+	clear: both;
+	white-space: nowrap;
+	}
 
  #brd-stats ul li.st-activity {
- 	text-align: right;
- 	display: block;
- 	white-space: nowrap;
- 	}
+	text-align: right;
+	display: block;
+	white-space: nowrap;
+	}
 
  #brd-stats li strong {
- 	font-weight: bold;
- 	}
+	font-weight: bold;
+	}
 
 #brd-online {
 	padding-top: 0.5em;
@@ -695,18 +687,13 @@
 	}
 
  #brd-online .hn {
- 	float: left;
- 	margin-right: 0.5em;
- 	}
+	float: left;
+	margin-right: 0.5em;
+	}
 
 /* Footer
 -------------------------------------------------------------*/
 
-#brd-about p {
-	float: left;
-	margin: 0 1em;
-	}
-
 #brd-about #qjump {
 	float: left;
 	padding: 0.5em 0;
@@ -719,15 +706,18 @@
 
 #brd-about #copyright {
 	text-align: right;
-	float: right;
 	margin: 0;
 	}
 
-#brd-about #querytime {
+#querytime {
 	text-align: center;
 	font-size: 0.9em;
 	}
 
+#extensions-used {
+	border-bottom: 1px dotted;
+}
+
 /* Main and Content Options
 -------------------------------------------------------------*/
 
@@ -786,7 +776,10 @@
 	padding: 0.5em 0;
 	white-space: nowrap;
 	font-weight: normal;
-	text-transform: capitalize;
+	}
+
+.brd .item-summary strong:first-letter {
+	text-transform: uppercase;
 	}
 
 .brd .item-summary .subject-title {
@@ -848,49 +841,49 @@
 
 .brd .main-content .main-item p,
 .brd .main-content .main-item .hn {
- 	padding: 0;
- 	}
+	padding: 0;
+	}
 
 .brd .main-content .main-item .hn .item-status {
- 	font-weight:normal;
- 	}
+	font-weight:normal;
+	}
 
 .brd .main-content .main-item .hn .item-status em {
- 	font-style:normal;
- 	}
+	font-style:normal;
+	}
 
 .brd .main-content .main-item .item-subject,
 .brd .main-content .main-item li {
- 	float: left;
- 	border-left-style: solid;
- 	border-left-width: 1px;
- 	margin: 0 -2px -9.7em 0;
- 	position: relative;
- 	padding-top: 0.6em;
- 	padding-bottom: 10.4em;
- 	}
+	float: left;
+	border-left-style: solid;
+	border-left-width: 1px;
+	margin: 0 -2px -9.7em 0;
+	position: relative;
+	padding-top: 0.6em;
+	padding-bottom: 10.4em;
+	}
 
 .brd .main-content .main-item .item-subject {
- 	overflow: hidden;
- 	width: 100%;
-  	}
+	overflow: hidden;
+	width: 100%;
+	}
 
 .brd .main-content .main-item li.info-topics,
 .brd .main-content .main-item li.info-forum,
 .brd .main-content .main-item li.info-posts,
 .brd .main-content .main-item li.info-views,
 .brd .main-content .main-item li.info-replies {
- 	width: 7em;
- 	text-align:center;
- 	}
+	width: 7em;
+	text-align: center;
+	}
 
 .brd .main-content .main-item li.info-forum {
- 	width: 20em;
- 	}
+	width: 20em;
+	}
 
 .brd .main-content .main-item li.info-lastpost {
-  	width: 20em;
-  	}
+	width: 20em;
+	}
 
 .brd .main-content .main-item li.info-lastpost cite {
 	overflow: hidden;
@@ -921,22 +914,32 @@
 	}
 
 .brd .forum-noview .main-item {
-	padding-right: 48em;
+	padding-right: 28em;
 	}
 
 .brd .forum-noview .main-item ul {
+	width: 27em;
+	right: -28em;
+	margin-left: -27em;
+	}
+
+.brd .forum-forums .main-item {
+	padding-right: 48em;
+	}
+
+.brd .forum-forums .main-item ul {
 	width: 47em;
 	right: -48em;
 	margin-left: -47em;
 	}
 
 .brd .main-content .main-item .item-subject span.modlist {
- 	display: block;
- 	}
+	display: block;
+	}
 
 .brd .main-content .main-item .hn strong {
-  	font-size: 1em;
-  	}
+	font-size: 1em;
+	}
 
 .brd .main-content .main-item .hn strong span {
 	font-weight: normal;
@@ -945,7 +948,7 @@
  #brd-index .main-content .main-item .hn span {
 	font-size: 1.084em;
 	font-weight: bold;
- 	}
+	}
 #brd-index .main-content .main-item .hn small {
 	font-size: 1em;
 	}
@@ -964,55 +967,52 @@
 	font-style: normal;
 	}
 
-.brd .main-content .main-item .item-subject .hn {
-	display:inline;
-	margin: 0 0 0 1.5em;
- 	}
-
+.brd .main-content .main-item .item-subject .hn,
 .brd .main-content .main-item .item-subject p {
 	margin: 0 0 0 1.5em;
- 	}
+	}
 
 .brd .main-content .main-item li.info-lastpost cite,
-.brd .main-content .main-item li.info-lastpost span {
- 	display: block;
- 	padding: 0 1em;
- 	font-style: normal;
- 	font-weight: normal;
- 	}
+.brd .main-content .main-item li.info-lastpost span,
+.brd .main-content .main-item li.info-forum a {
+	display: block;
+	padding: 0 1em;
+	font-style: normal;
+	font-weight: normal;
+	}
 
 .brd .main-content .main-item li.info-lastpost strong {
- 	padding: 0 0 0 1em;
- 	font-style: normal;
- 	font-weight: normal;
- 	}
+	padding: 0 0 0 1em;
+	font-style: normal;
+	font-weight: normal;
+	}
 
 .brd .main-content .main-item li.info-select {
- 	position: absolute;
- 	right: 0;
- 	top: 0;
- 	padding: 0.3em;
- 	border-style: none none solid solid;
- 	border-width: 1px;
- 	}
+	position: absolute;
+	right: 0;
+	top: 0;
+	padding: 0.3em;
+	border-style: none none solid solid;
+	border-width: 1px;
+	}
 
 .brd .main-content .main-item .icon {
- 	border-style: solid;
- 	border-width: 0.5833em;
- 	height: 0;
- 	width: 0;
- 	float: left;
- 	margin-top: 0.667em;
- 	margin-left: -2.417em;
- 	}
+	border-style: solid;
+	border-width: 0.5833em;
+	height: 0;
+	width: 0;
+	float: left;
+	margin-top: 0.667em;
+	margin-left: -2.417em;
+	}
 
 .brd .main-content .main-item .hn .posted-mark {
- 	position: absolute;
- 	font-size: 2em;
- 	width: 1em;
- 	left: -0.5em;
- 	top: 0;
- 	}
+	position: absolute;
+	font-size: 2em;
+	width: 1em;
+	left: -0.5em;
+	top: 0;
+	}
 
 /*************************************************************
 F - MAIN CONTENT - FORMS
@@ -1157,7 +1157,7 @@
 
 .brd .mf-box .mf-item {
 	position: relative;
-	top: -0.15em;
+	top: -0.166em;
 	padding: 0.25em 0;
 	}
 
@@ -1416,7 +1416,6 @@
 	margin-left: 18em;
 	border-style: none none none solid;
 	border-width: 1px;
-	zoom: 1;
 	}
 
 .brd .posthead .hn {
@@ -1554,7 +1553,9 @@
 	border-left-width: 0.7em;
 	text-indent: 0.5em;
 	}
-
+.brd .postbody .author-info li span strong {
+	font-weight: normal;
+}
 .brd .online .author-ident .userstatus span {
 	font-weight: bold;
 	}
@@ -1626,7 +1627,7 @@
 	padding: 1em 0.75em;
 	}
 
-.brd .entry-content .codebox code {
+.brd .entry-content .codebox code, #brd-debug table .tcl, #brd-debug table .tcr {
 	font-family: monospace;
 	}
 
@@ -1709,12 +1710,12 @@
 	text-align: center;
 	}
 
-#brd-debug  table .tc0 {
-	white-space:normal;
-	width: 15%;
+#brd-debug  table .tc1 {
+	white-space: normal;
+	width: 10%;
 	}
 
-#brd-debug table .tc1 {
+#brd-debug table .tcr {
 	white-space: normal;
 	width: 90%;
 	}
diff -urN punbb-1.3/style/Oxygen/Oxygen_cs.css punbb-1.3.4/style/Oxygen/Oxygen_cs.css
--- punbb-1.3/style/Oxygen/Oxygen_cs.css	2008-11-08 17:53:23.000000000 +0000
+++ punbb-1.3.4/style/Oxygen/Oxygen_cs.css	2009-04-17 12:23:47.000000000 +0000
@@ -66,15 +66,15 @@
 	background: #F2F4FA;
 	}
 
-.brd .main-content .main-item .hn .item-status em.sticky {
- 	color: #314B60;
- 	font-weight: bold;
- 	}
-
-.brd .main-content .main-item .hn .item-status em.closed {
- 	color: #314B60;
- 	font-weight: bold;
- 	}
+.brd .main-content .main-item .hn .item-status em.sticky ,
+.brd .main-content .main-item .hn .item-status em.closed{
+	color: #314B60;
+	font-weight: bold;
+	}
+
+.brd .main-content .main-item .hn .item-status em.moved {
+	color: #666;
+	}
 
 .brd .post * {
 	border-color: #DDE4EB
@@ -326,16 +326,6 @@
 	background: #F4F4F4;
 	}
 
-.brd .content-head {
-
-	}
-
-.brd th {
-	background: #EAEEF5;
-	border-bottom-color: #fff;
-	border-top-color: #ddd;
-	}
-
 .brd .group-head {
 	background: #EDF1F5;
 	border-color: #DBE0E4;
@@ -360,36 +350,40 @@
 	background: #F4F4F4;
 	}
 
-.brd .main-frm .ct-group td{
+.brd .main-frm .ct-group td {
 	background: #FBFBFB;
 	}
 
+#extensions-used {
+	border-bottom-color: #999;
+}
+
 
 /* Status indicators
 ----------------------------------------------------------------*/
 
 .brd .main-content .main-item .icon {
-	border-color: #EDF1F5 #DDE0E4 #C6CBD3 #BABFC6
+	border-color: #EDF1F5 #DDE0E4 #C6CBD3 #BABFC6;
 	}
 
 .brd .main-content .redirect .icon {
-	border-color: #f4f4f4 #f4f4f4 #f4f4f4 #f4f4f4
+	border-color: #f4f4f4 #f4f4f4 #f4f4f4 #f4f4f4;
 	}
 
 .brd .main-content .sticky .icon {
-	border-color: #D7E5F3 #C3CFDC #9FB3C7 #90A2B4
+	border-color: #D7E5F3 #C3CFDC #9FB3C7 #90A2B4;
 	}
 
 .brd .main-content .closed .icon {
-	border-color: #ACACAC #979797 #898989 #7A7A7A
+	border-color: #ACACAC #979797 #898989 #7A7A7A;
 	}
 
-.brd .main-content .sticky .closed {
-	border-color: #D7E5F3 #C3CFDC #898989 #7A7A7A
+.brd .main-content .sticky .closed .icon {
+	border-color: #D7E5F3 #C3CFDC #898989 #7A7A7A;
 	}
 
 .brd .main-content .new .icon {
-	border-color: #2B75AD #235E8C #1F537B #266799
+	border-color: #2B75AD #235E8C #1F537B #266799;
 	}
 
 
diff -urN punbb-1.3/style/Oxygen/Oxygen_ie6.css punbb-1.3.4/style/Oxygen/Oxygen_ie6.css
--- punbb-1.3/style/Oxygen/Oxygen_ie6.css	2008-11-09 15:49:51.000000000 +0000
+++ punbb-1.3.4/style/Oxygen/Oxygen_ie6.css	2009-04-17 12:23:47.000000000 +0000
@@ -27,12 +27,21 @@
 .brd span.fld-input,
 .brd .main-subhead .hn,
 .brd .post,
+.brd .posthead,
 .brd .postbody,
 .brd .post-entry,
 .brd .postfoot .post-options {
 	zoom: 1;
 	}
 
+.brd .ct-box ol, .brd .ct-box ol * {
+	zoom: normal;
+	}
+
+.brd .postfoot .post-contacts {
+	position: absolute;
+	}
+
 /* Forms
 -------------------------------------------------------------*/
 
@@ -58,9 +67,6 @@
 
 #brd-admin-censoring #info-censored-intro, #brd-admin-ranks #info-ranks-intro { margin-bottom: 3em; }
 
-/* Adding space between topic subject and its' info */
-#brd-viewforum .item-nav, .main-forum .item-subject .item-starter { margin-left: 1ex; }
-
 .important strong { margin-right: 1ex; }
 
 #brd-stats .st-users { margin-bottom: -1ex; }
@@ -80,5 +86,12 @@
 .brd #brd-index .main-head { position: relative; }
 
 .brd .main-content .main-item .hn .posted-mark {
- 	left: 0.2em;
+	left: 0.2em;
 	}
+
+/* Footer
+-------------------------------------------------------------*/
+
+#brd-about p#extensions-used {
+	clear: left;
+	}
\ No newline at end of file
diff -urN punbb-1.3/style/Oxygen/Oxygen_ie7.css punbb-1.3.4/style/Oxygen/Oxygen_ie7.css
--- punbb-1.3/style/Oxygen/Oxygen_ie7.css	2008-11-08 13:57:35.000000000 +0000
+++ punbb-1.3.4/style/Oxygen/Oxygen_ie7.css	2009-05-13 14:54:24.000000000 +0000
@@ -26,6 +26,7 @@
 .brd span.fld-input,
 .brd .main-subhead .hn,
 .brd .post,
+.brd .posthead,
 .brd .postbody,
 .brd .post-entry,
 .brd .postfoot .post-options,
@@ -58,4 +59,9 @@
 
 #brd-admin-settings-setup #fld19, #brd-post textarea#fld1, #brd-post textarea#fld2, #brd-viewtopic textarea#fld1, #brd-postedit #fld2 {
 	margin-top: -19px;
-}
\ No newline at end of file
+	}
+
+.item-starter{
+	position: relative;
+	left: -0.5em;
+	}
\ No newline at end of file
diff -urN punbb-1.3/userlist.php punbb-1.3.4/userlist.php
--- punbb-1.3/userlist.php	2008-11-08 13:21:28.000000000 +0000
+++ punbb-1.3.4/userlist.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Provides a list of forum users that can be sorted based on various criteria.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -27,7 +27,7 @@
 $forum_page['username'] = (isset($_GET['username']) && $_GET['username'] != '-' && $forum_user['g_search_users'] == '1') ? $_GET['username'] : '';
 $forum_page['show_group'] = (!isset($_GET['show_group']) || intval($_GET['show_group']) < -1 && intval($_GET['show_group']) > 2) ? -1 : intval($_GET['show_group']);
 $forum_page['sort_by'] = (!isset($_GET['sort_by']) || $_GET['sort_by'] != 'username' && $_GET['sort_by'] != 'registered' && ($_GET['sort_by'] != 'num_posts' || !$forum_page['show_post_count'])) ? 'username' : $_GET['sort_by'];
-$forum_page['sort_dir'] = (!isset($_GET['sort_dir']) || $_GET['sort_dir'] != 'ASC' && $_GET['sort_dir'] != 'DESC') ? 'ASC' : strtoupper($_GET['sort_dir']);
+$forum_page['sort_dir'] = (!isset($_GET['sort_dir']) || strtoupper($_GET['sort_dir']) != 'ASC' && strtoupper($_GET['sort_dir']) != 'DESC') ? 'ASC' : strtoupper($_GET['sort_dir']);
 
 
 // Create any SQL for the WHERE clause
@@ -42,9 +42,9 @@
 
 // Fetch user count
 $query = array(
-	'SELECT'	=> 'COUNT(u.id) - 1',
+	'SELECT'	=> 'COUNT(u.id)',
 	'FROM'		=> 'users AS u',
-	'WHERE'		=> 'u.group_id != '.FORUM_UNVERIFIED
+	'WHERE'		=> 'u.id > 1 AND u.group_id != '.FORUM_UNVERIFIED
 );
 
 if (!empty($where_sql))
@@ -56,7 +56,7 @@
 
 // Determine the user offset (based on $_GET['p'])
 $forum_page['num_pages'] = ceil($forum_page['num_users'] / 50);
-$forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : intval($_GET['p']);
+$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : intval($_GET['p']);
 $forum_page['start_from'] = 50 * ($forum_page['page'] - 1);
 $forum_page['finish_at'] = min(($forum_page['start_from'] + 50), ($forum_page['num_users']));
 
@@ -68,18 +68,18 @@
 	$forum_page['items_info'] = $lang_ul['Users'];
 
 // Generate paging links
-$forum_page['page_post']['paging'] = '<p class="paging"><span class="pages">'.$lang_common['Pages'].'</span> '.paginate($forum_page['num_pages'], $forum_page['page'], $forum_url['users_browse'], $lang_common['Paging separator'], array($forum_page['show_group'], $forum_page['sort_by'], strtoupper($forum_page['sort_dir']), ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'</p>';
+$forum_page['page_post']['paging'] = '<p class="paging"><span class="pages">'.$lang_common['Pages'].'</span> '.paginate($forum_page['num_pages'], $forum_page['page'], $forum_url['users_browse'], $lang_common['Paging separator'], array($forum_page['show_group'], $forum_page['sort_by'], $forum_page['sort_dir'], ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'</p>';
 
 // Navigation links for header and page numbering for title/meta description
 if ($forum_page['page'] < $forum_page['num_pages'])
 {
-	$forum_page['nav']['last'] = '<link rel="last" href="'.forum_sublink($forum_url['users_browse'], $forum_url['page'], $forum_page['num_pages'], array($forum_page['show_group'], $forum_page['sort_by'], strtoupper($forum_page['sort_dir']), ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' '.$forum_page['num_pages'].'" />';
-	$forum_page['nav']['next'] = '<link rel="next" href="'.forum_sublink($forum_url['users_browse'], $forum_url['page'], ($forum_page['page'] + 1), array($forum_page['show_group'], $forum_page['sort_by'], strtoupper($forum_page['sort_dir']), ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' '.($forum_page['page'] + 1).'" />';
+	$forum_page['nav']['last'] = '<link rel="last" href="'.forum_sublink($forum_url['users_browse'], $forum_url['page'], $forum_page['num_pages'], array($forum_page['show_group'], $forum_page['sort_by'], $forum_page['sort_dir'], ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' '.$forum_page['num_pages'].'" />';
+	$forum_page['nav']['next'] = '<link rel="next" href="'.forum_sublink($forum_url['users_browse'], $forum_url['page'], ($forum_page['page'] + 1), array($forum_page['show_group'], $forum_page['sort_by'], $forum_page['sort_dir'], ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' '.($forum_page['page'] + 1).'" />';
 }
 if ($forum_page['page'] > 1)
 {
-	$forum_page['nav']['prev'] = '<link rel="prev" href="'.forum_sublink($forum_url['users_browse'], $forum_url['page'], ($forum_page['page'] - 1), array($forum_page['show_group'], $forum_page['sort_by'], strtoupper($forum_page['sort_dir']), ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' '.($forum_page['page'] - 1).'" />';
-	$forum_page['nav']['first'] = '<link rel="first" href="'.forum_link($forum_url['users_browse'], array($forum_page['show_group'], $forum_page['sort_by'], strtoupper($forum_page['sort_dir']), ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' 1" />';
+	$forum_page['nav']['prev'] = '<link rel="prev" href="'.forum_sublink($forum_url['users_browse'], $forum_url['page'], ($forum_page['page'] - 1), array($forum_page['show_group'], $forum_page['sort_by'], $forum_page['sort_dir'], ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' '.($forum_page['page'] - 1).'" />';
+	$forum_page['nav']['first'] = '<link rel="first" href="'.forum_link($forum_url['users_browse'], array($forum_page['show_group'], $forum_page['sort_by'], $forum_page['sort_dir'], ($forum_page['username'] != '') ? urlencode($forum_page['username']) : '-')).'" title="'.$lang_common['Page'].' 1" />';
 }
 
 // Setup main options
@@ -121,7 +121,7 @@
 <?php
 
 	if (!empty($forum_page['main_head_options']))
-		echo "\n\t\t\t".'<p class="options">'.implode(' ', $forum_page['main_head_options']).'</p>';
+		echo "\t\t".'<p class="options">'.implode(' ', $forum_page['main_head_options']).'</p>'."\n";
 
 ?>
 		<h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
@@ -133,7 +133,8 @@
 			<fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
 				<legend class="group-legend"><strong><?php echo $lang_ul['User find legend'] ?></strong></legend>
 <?php ($hook = get_hook('ul_pre_username')) ? eval($hook) : null; ?>
-<?php if ($forum_user['g_search_users'] == '1'): ?>				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
+<?php if ($forum_user['g_search_users'] == '1'): ?>
+				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_ul['Search for username'] ?></span> <small><?php echo $lang_ul['Username help'] ?></small></label><br />
 						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="username" value="<?php echo forum_htmlencode($forum_page['username']) ?>" size="35" maxlength="25" /></span>
@@ -180,8 +181,10 @@
 						<span class="fld-input"><select id="fld<?php echo $forum_page['fld_count'] ?>" name="sort_by">
 						<option value="username"<?php if ($forum_page['sort_by'] == 'username') echo ' selected="selected"' ?>><?php echo $lang_ul['Username'] ?></option>
 						<option value="registered"<?php if ($forum_page['sort_by'] == 'registered') echo ' selected="selected"' ?>><?php echo $lang_ul['Registered'] ?></option>
-<?php if ($forum_page['show_post_count']): ?>						<option value="num_posts"<?php if ($forum_page['sort_by'] == 'num_posts') echo ' selected="selected"' ?>><?php echo $lang_ul['No of posts'] ?></option>
-<?php endif; ($hook = get_hook('ul_new_sort_by_option')) ? eval($hook) : null; ?>						</select></span>
+<?php if ($forum_page['show_post_count']): ?>
+						<option value="num_posts"<?php if ($forum_page['sort_by'] == 'num_posts') echo ' selected="selected"' ?>><?php echo $lang_ul['No of posts'] ?></option>
+<?php endif; ($hook = get_hook('ul_new_sort_by_option')) ? eval($hook) : null; ?>
+						</select></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('ul_pre_sort_order_fieldset')) ? eval($hook) : null; ?>
@@ -310,7 +313,7 @@
 		echo "\n\t\t\t".'<p class="options">'.implode(' ', $forum_page['main_foot_options']).'</p>';
 
 ?>
-		<p><?php echo $forum_page['items_info'] ?></p>
+		<h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
 	</div>
 <?php
 
diff -urN punbb-1.3/viewforum.php punbb-1.3.4/viewforum.php
--- punbb-1.3/viewforum.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/viewforum.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Lists the topics in the specified forum.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -70,7 +70,7 @@
 
 // Determine the topic offset (based on $_GET['p'])
 $forum_page['num_pages'] = ceil($cur_forum['num_topics'] / $forum_user['disp_topics']);
-$forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
+$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
 $forum_page['start_from'] = $forum_user['disp_topics'] * ($forum_page['page'] - 1);
 $forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_topics']), ($cur_forum['num_topics']));
 $forum_page['items_info'] = generate_items_info($lang_forum['Topics'], ($forum_page['start_from'] + 1), $cur_forum['num_topics']);
@@ -204,15 +204,16 @@
 
 		// Start from scratch
 		$forum_page['item_subject'] = $forum_page['item_body'] = $forum_page['item_status'] = $forum_page['item_nav'] = $forum_page['item_title'] = $forum_page['item_title_status'] = array();
-		$forum_page['item_indicator'] = '';
 
 		if ($forum_config['o_censoring'] == '1')
 			$cur_topic['subject'] = censor_words($cur_topic['subject']);
 
+		$forum_page['item_subject']['starter'] = '<span class="item-starter">'.sprintf($lang_forum['Topic starter'], forum_htmlencode($cur_topic['poster'])).'</span>';
+
 		if ($cur_topic['moved_to'] != null)
 		{
 			$forum_page['item_status']['moved'] = 'moved';
-			$forum_page['item_title']['link'] = '<a href="'.forum_link($forum_url['topic'], array($cur_topic['moved_to'], sef_friendly($cur_topic['subject']))).'"><span>'.$lang_forum['Moved'].'</span> '.forum_htmlencode($cur_topic['subject']).'</a>';
+			$forum_page['item_title']['link'] = '<span class="item-status"><em class="moved">'.sprintf($lang_forum['Item status'], $lang_forum['Moved']).'</em></span> <a href="'.forum_link($forum_url['topic'], array($cur_topic['moved_to'], sef_friendly($cur_topic['subject']))).'">'.forum_htmlencode($cur_topic['subject']).'</a>';
 
 			// Combine everything to produce the Topic heading
 			$forum_page['item_body']['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span>'.$forum_page['item_title']['link'].'</h3>';
@@ -259,8 +260,6 @@
 
 			$forum_page['item_body']['subject']['title'] = '<h3 class="hn"><span class="item-num">'.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span> '.implode(' ', $forum_page['item_title']).'</h3>';
 
-			// Assemble the Topic subject
-
 			if (empty($forum_page['item_status']))
 				$forum_page['item_status']['normal'] = 'normal';
 
@@ -281,9 +280,7 @@
 			if (!empty($forum_page['item_nav']))
 				$forum_page['item_subject']['nav'] = '<span class="item-nav">'.sprintf($lang_forum['Topic navigation'], implode('&#160;&#160;', $forum_page['item_nav'])).'</span>';
 
-			($hook = get_hook('vf_topic_loop_normal_topic_pre_item_subject_merge')) ? eval($hook) : null;
-
-			$forum_page['item_body']['subject']['desc'] = implode(' ', $forum_page['item_subject']);
+			// Assemble the Topic subject
 
 			$forum_page['item_body']['info']['replies'] = '<li class="info-replies"><strong>'.forum_number_format($cur_topic['num_replies']).'</strong> <span class="label">'.(($cur_topic['num_replies'] == 1) ? $lang_forum['reply'] : $lang_forum['replies']).'</span></li>';
 
@@ -293,8 +290,9 @@
 			$forum_page['item_body']['info']['lastpost'] = '<li class="info-lastpost"><span class="label">'.$lang_forum['Last post'].'</span> <strong><a href="'.forum_link($forum_url['post'], $cur_topic['last_post_id']).'">'.format_time($cur_topic['last_post']).'</a></strong> <cite>'.sprintf($lang_forum['by poster'], forum_htmlencode($cur_topic['last_poster'])).'</cite></li>';
 		}
 
-		$forum_page['item_subject']['starter'] = '<span class="item-starter">'.sprintf($lang_forum['Topic starter'], '<cite>'.forum_htmlencode($cur_topic['poster']).'</cite>').'</span>';
-		$forum_page['item_body']['subject']['desc'] = implode(' ', $forum_page['item_subject']);
+		($hook = get_hook('vf_row_pre_item_subject_merge')) ? eval($hook) : null;
+
+		$forum_page['item_body']['subject']['desc'] = '<p>'.implode(' ', $forum_page['item_subject']).'</p>';
 
 		($hook = get_hook('vf_row_pre_item_status_merge')) ? eval($hook) : null;
 
@@ -318,14 +316,14 @@
 
 ?>
 	</div>
-		<div class="main-foot">
+	<div class="main-foot">
 <?php
 
 	if (!empty($forum_page['main_foot_options']))
 		echo "\n\t\t\t".'<p class="options">'.implode(' ', $forum_page['main_foot_options']).'</p>';
 
 ?>
-		<p><?php echo $forum_page['items_info'] ?></p>
+		<h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
 	</div>
 <?php
 
@@ -351,7 +349,7 @@
 		</div>
 	</div>
 	<div class="main-foot">
-		<p><?php echo $lang_forum['Empty forum'] ?></p>
+		<h2 class="hn"><span><?php echo $lang_forum['Empty forum'] ?></span></h2>
 	</div>
 <?php
 
diff -urN punbb-1.3/viewtopic.php punbb-1.3.4/viewtopic.php
--- punbb-1.3/viewtopic.php	2008-10-31 09:04:18.000000000 +0000
+++ punbb-1.3.4/viewtopic.php	2009-04-17 12:51:23.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Lists the posts in the specified topic.
  *
- * @copyright Copyright (C) 2008 PunBB, partially based on code copyright (C) 2008 FluxBB.org
+ * @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -113,7 +113,7 @@
 
 // Fetch some info about the topic
 $query = array(
-	'SELECT'	=> 't.subject, t.posted, t.poster, t.first_post_id, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies',
+	'SELECT'	=> 't.subject, t.first_post_id, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies',
 	'FROM'		=> 'topics AS t',
 	'JOINS'		=> array(
 		array(
@@ -128,7 +128,7 @@
 	'WHERE'		=> '(fp.read_forum IS NULL OR fp.read_forum=1) AND t.id='.$id.' AND t.moved_to IS NULL'
 );
 
-if (!$forum_user['is_guest'])
+if (!$forum_user['is_guest'] && $forum_config['o_subscriptions'] == '1')
 {
 	$query['SELECT'] .= ', s.user_id AS is_subscribed';
 	$query['JOINS'][] = array(
@@ -166,7 +166,7 @@
 
 // Determine the post offset (based on $_GET['p'])
 $forum_page['num_pages'] = ceil(($cur_topic['num_replies'] + 1) / $forum_user['disp_posts']);
-$forum_page['page'] = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
+$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
 $forum_page['start_from'] = $forum_user['disp_posts'] * ($forum_page['page'] - 1);
 $forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_posts']), ($cur_topic['num_replies'] + 1));
 $forum_page['items_info'] =  generate_items_info($lang_topic['Posts'], ($forum_page['start_from'] + 1), ($cur_topic['num_replies'] + 1));
@@ -193,15 +193,17 @@
 
 if ($forum_user['may_post'])
 	$forum_page['page_post']['posting'] = '<p class="posting"><a class="newpost" href="'.forum_link($forum_url['new_reply'], $id).'"><span>'.$lang_topic['Post reply'].'</span></a></p>';
-else if (!$forum_user['may_post'] && !$forum_user['is_guest'] && $cur_topic['closed'] != '1')
-	$forum_page['page_post']['posting'] = '<p class="posting">'.$lang_topic['No permission'].'</p>';
-if (!$forum_user['may_post'] && $forum_user['is_guest'])
+else if ($forum_user['is_guest'])
 	$forum_page['page_post']['posting'] = '<p class="posting">'.sprintf($lang_topic['Login to post'], '<a href="'.forum_link($forum_url['login']).'">'.$lang_common['login'].'</a>', '<a href="'.forum_link($forum_url['register']).'">'.$lang_common['register'].'</a>').'</p>';
+else if ($cur_topic['closed'] == '1')
+	$forum_page['page_post']['posting'] = '<p class="posting">'.$lang_topic['Topic closed info'].'</p>';
+else
+	$forum_page['page_post']['posting'] = '<p class="posting">'.$lang_topic['No permission'].'</p>';
 
 // Setup main options
 $forum_page['main_title'] = $lang_topic['Topic options'];
 $forum_page['main_head_options'] = array(
-	'rss' => '<span class="feed first-item"><a class="feed-option" href="'.forum_link($forum_url['topic_rss'], $id).'">'.$lang_topic['RSS topic feed'].'</a></span>'
+	'rss' => '<span class="feed first-item"><a class="feed" href="'.forum_link($forum_url['topic_rss'], $id).'">'.$lang_topic['RSS topic feed'].'</a></span>'
 );
 
 if (!$forum_user['is_guest'] && $forum_config['o_subscriptions'] == '1')
@@ -229,7 +231,7 @@
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 	array($cur_topic['forum_name'], forum_link($forum_url['forum'], array($cur_topic['forum_id'], sef_friendly($cur_topic['forum_name'])))),
-	$cur_topic['subject']
+	array($cur_topic['subject'], forum_link($forum_url['topic'], array($id, sef_friendly($cur_topic['subject']))))
 );
 
 // Setup main heading
@@ -331,10 +333,12 @@
 		if ($cur_post['poster_id'] > 1)
 		{
 			if ($forum_config['o_avatars'] == '1' && $forum_user['show_avatars'] != '0')
+			{
 				$forum_page['avatar_markup'] = generate_avatar_markup($cur_post['poster_id']);
 
-			if (!empty($forum_page['avatar_markup']))
-				$forum_page['author_ident']['avatar'] = '<li class="useravatar">'.$forum_page['avatar_markup'].'</li>';
+				if (!empty($forum_page['avatar_markup']))
+					$forum_page['author_ident']['avatar'] = '<li class="useravatar">'.$forum_page['avatar_markup'].'</li>';
+			}
 
 			$forum_page['author_ident']['username'] = '<li class="username">'.(($forum_user['g_view_users'] == '1') ? '<a title="'.sprintf($lang_topic['Go to profile'], forum_htmlencode($cur_post['username'])).'" href="'.forum_link($forum_url['user'], $cur_post['poster_id']).'">'.forum_htmlencode($cur_post['username']).'</a>' : '<strong>'.forum_htmlencode($cur_post['username']).'</strong>').'</li>';
 			$forum_page['author_ident']['usertitle'] = '<li class="usertitle"><span>'.get_title($cur_post).'</span></li>';
@@ -365,19 +369,19 @@
 					if ($forum_config['o_censoring'] == '1')
 						$cur_post['location'] = censor_words($cur_post['location']);
 
-					$forum_page['author_info']['from'] = '<li><span>'.$lang_topic['From'].' <strong> '.forum_htmlencode($cur_post['location']).'</strong></span></li>';
+					$forum_page['author_info']['from'] = '<li><span>'.$lang_topic['From'].' <strong>'.forum_htmlencode($cur_post['location']).'</strong></span></li>';
 				}
 
-				$forum_page['author_info']['registered'] = '<li><span>'.$lang_topic['Registered'].' <strong> '.format_time($cur_post['registered'], 1).'</strong></span></li>';
+				$forum_page['author_info']['registered'] = '<li><span>'.$lang_topic['Registered'].' <strong>'.format_time($cur_post['registered'], 1).'</strong></span></li>';
 
 				if ($forum_config['o_show_post_count'] == '1' || $forum_user['is_admmod'])
-					$forum_page['author_info']['posts'] = '<li><span>'.$lang_topic['Posts info'].' <strong> '.forum_number_format($cur_post['num_posts']).'</strong></span></li>';
+					$forum_page['author_info']['posts'] = '<li><span>'.$lang_topic['Posts info'].' <strong>'.forum_number_format($cur_post['num_posts']).'</strong></span></li>';
 			}
 
 			if ($forum_user['is_admmod'])
 			{
 				if ($cur_post['admin_note'] != '')
-					$forum_page['author_info']['note'] = '<li><span>'.$lang_topic['Note'].' <strong> '.forum_htmlencode($cur_post['admin_note']).'</strong></span></li>';
+					$forum_page['author_info']['note'] = '<li><span>'.$lang_topic['Note'].' <strong>'.forum_htmlencode($cur_post['admin_note']).'</strong></span></li>';
 			}
 		}
 	}
@@ -396,16 +400,16 @@
 			if ($cur_post['poster_id'] > 1)
 			{
 				if ($cur_post['url'] != '')
-					$forum_page['post_contacts']['url'] = '<span class="user-url'.(!empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a class="external" href="'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($cur_post['url']) : $cur_post['url']).'">'.sprintf($lang_topic['Visit website'], '<span>'.sprintf($lang_topic['User possessive'], forum_htmlencode($cur_post['username'])).'</span>').'</a></span>';
+					$forum_page['post_contacts']['url'] = '<span class="user-url'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a class="external" href="'.forum_htmlencode(($forum_config['o_censoring'] == '1') ? censor_words($cur_post['url']) : $cur_post['url']).'">'.sprintf($lang_topic['Visit website'], '<span>'.sprintf($lang_topic['User possessive'], forum_htmlencode($cur_post['username'])).'</span>').'</a></span>';
 				if ((($cur_post['email_setting'] == '0' && !$forum_user['is_guest']) || $forum_user['is_admmod']) && $forum_user['g_send_email'] == '1')
-					$forum_page['post_contacts']['email'] = '<span class="user-email'.(!empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="mailto:'.forum_htmlencode($cur_post['email']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
+					$forum_page['post_contacts']['email'] = '<span class="user-email'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="mailto:'.forum_htmlencode($cur_post['email']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
 				else if ($cur_post['email_setting'] == '1' && !$forum_user['is_guest'] && $forum_user['g_send_email'] == '1')
-					$forum_page['post_contacts']['email'] = '<span class="user-email'.(!empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['email'], $cur_post['poster_id']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
+					$forum_page['post_contacts']['email'] = '<span class="user-email'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['email'], $cur_post['poster_id']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
 			}
 			else
 			{
 				if ($cur_post['poster_email'] != '' && !$forum_user['is_guest'] && $forum_user['g_send_email'] == '1')
-					$forum_page['post_contacts']['email'] = '<span class="user-email'.(!empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="mailto:'.forum_htmlencode($cur_post['poster_email']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
+					$forum_page['post_contacts']['email'] = '<span class="user-email'.(empty($forum_page['post_contacts']) ? ' first-item' : '').'"><a href="mailto:'.forum_htmlencode($cur_post['poster_email']).'">'.$lang_topic['E-mail'].'<span>&#160;'.forum_htmlencode($cur_post['username']).'</span></a></span>';
 			}
 		}
 
@@ -418,7 +422,7 @@
 	// Generate the post options links
 	if (!$forum_user['is_guest'])
 	{
-		$forum_page['post_actions']['report'] = '<span class="report-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['report'], $cur_post['id']).'">'.$lang_topic['Report'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+		$forum_page['post_actions']['report'] = '<span class="report-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['report'], $cur_post['id']).'">'.$lang_topic['Report'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 
 		if (!$forum_page['is_admmod'])
 		{
@@ -427,26 +431,26 @@
 				if ($cur_post['poster_id'] == $forum_user['id'])
 				{
 					if (($forum_page['start_from'] + $forum_page['item_count']) == 1 && $forum_user['g_delete_topics'] == '1')
-						$forum_page['post_actions']['delete'] = '<span class="delete-topic'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>';
+						$forum_page['post_actions']['delete'] = '<span class="delete-topic'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>';
 					if (($forum_page['start_from'] + $forum_page['item_count']) > 1 && $forum_user['g_delete_posts'] == '1')
-						$forum_page['post_actions']['delete'] = '<span class="delete-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_post['id']).'">'.$lang_topic['Delete'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+						$forum_page['post_actions']['delete'] = '<span class="delete-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_post['id']).'">'.$lang_topic['Delete'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 					if ($forum_user['g_edit_posts'] == '1')
-						$forum_page['post_actions']['edit'] = '<span class="edit-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['edit'], $cur_post['id']).'">'.$lang_topic['Edit'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+						$forum_page['post_actions']['edit'] = '<span class="edit-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['edit'], $cur_post['id']).'">'.$lang_topic['Edit'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 				}
 
 				if (($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
-					$forum_page['post_actions']['quote'] = '<span class="quote-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+					$forum_page['post_actions']['quote'] = '<span class="quote-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 			}
 		}
 		else
 		{
 			if (($forum_page['start_from'] + $forum_page['item_count']) == 1)
-				$forum_page['post_actions']['delete'] = '<span class="delete-topic'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>';
+				$forum_page['post_actions']['delete'] = '<span class="delete-topic'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_topic['first_post_id']).'">'.$lang_topic['Delete topic'].'</a></span>';
 			else
-				$forum_page['post_actions']['delete'] = '<span class="delete-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_post['id']).'">'.$lang_topic['Delete'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+				$forum_page['post_actions']['delete'] = '<span class="delete-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['delete'], $cur_post['id']).'">'.$lang_topic['Delete'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 
-			$forum_page['post_actions']['edit'] = '<span class="edit-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['edit'], $cur_post['id']).'">'.$lang_topic['Edit'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
-			$forum_page['post_actions']['quote'] = '<span class="quote-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+			$forum_page['post_actions']['edit'] = '<span class="edit-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['edit'], $cur_post['id']).'">'.$lang_topic['Edit'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+			$forum_page['post_actions']['quote'] = '<span class="quote-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 		}
 	}
 	else
@@ -454,7 +458,7 @@
 		if ($cur_topic['closed'] == '0')
 		{
 			if (($cur_topic['post_replies'] == '' && $forum_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
-				$forum_page['post_actions']['quote'] = '<span class="report-post'.(!empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
+				$forum_page['post_actions']['quote'] = '<span class="report-post'.(empty($forum_page['post_actions']) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['quote'], array($id, $cur_post['id'])).'">'.$lang_topic['Quote'].'<span> '.$lang_topic['Post'].' '.forum_number_format($forum_page['start_from'] + $forum_page['item_count']).'</span></a></span>';
 		}
 	}
 
@@ -540,12 +544,14 @@
 <?php ($hook = get_hook('vt_row_new_post_entry_data')) ? eval($hook) : null; ?>
 				</div>
 			</div>
-<?php if (!empty($forum_page['post_options'])): ?>			<div class="postfoot">
+<?php if (!empty($forum_page['post_options'])): ?>
+			<div class="postfoot">
 				<div class="post-options">
 					<?php echo implode("\n\t\t\t\t\t", $forum_page['post_options'])."\n" ?>
 				</div>
 			</div>
-<?php endif; ?>		</div>
+<?php endif; ?>
+		</div>
 <?php
 
 }
@@ -553,14 +559,14 @@
 ?>
 	</div>
 
-		<div class="main-foot">
+	<div class="main-foot">
 <?php
 
 	if (!empty($forum_page['main_foot_options']))
 		echo "\n\t\t\t".'<p class="options">'.implode(' ', $forum_page['main_foot_options']).'</p>';
 
 ?>
-		<p><?php echo $forum_page['items_info'] ?></p>
+		<h2 class="hn"><span><?php echo $forum_page['items_info'] ?></span></h2>
 	</div>
 <?php
 
