Index: install.php
===================================================================
--- install.php
+++ install.php
@@ -78,7 +78,22 @@
 <?php
 // Let's check to make sure WP isn't already installed.
 $wpdb->hide_errors();
-$installed = $wpdb->get_results("SELECT * FROM $wpdb->users");
+
+if (defined('CUSTOM_USER_TABLE')) {
+	$tables = $wpdb->get_col("SHOW TABLES",0);
+	if ($tables) {
+		foreach ($tables as $table ) {
+			if ($table == CUSTOM_USER_TABLE) {
+				$installed = $wpdb->get_results("SELECT * FROM $wpdb->posts");
+			}
+		}
+	}
+
+	if (!$installed) $installed = false;
+} else {
+	$installed = $wpdb->get_results("SELECT * FROM $wpdb->users");
+}
+
 if ($installed) die('<h1>'.__('Already Installed').'</h1><p>'.__('You appear to have already installed WordPress. To reinstall please clear your old database tables first.').'</p></body></html>');
 $wpdb->show_errors();
 
@@ -103,7 +118,15 @@
 <th width="33%"><?php _e('Weblog title:'); ?></th>
 <td><input name="weblog_title" type="text" id="weblog_title" size="25" /></td>
 </tr>
+
+<?php if (defined('CUSTOM_USER_TABLE') && $wpdb->get_col("SHOW TABLES",0)) { ?>
 <tr>
+<th><?php _e('Already registered:'); ?></th>
+	<td><input name="registered" type="checkbox" id="registered" /></td>
+</tr>
+<?php } ?>
+
+<tr>
 <th><?php _e('Your login name:'); ?></th>
 	<td><input name="admin_login" type="text" id="admin_login" size="25" /></td>
 </tr>
@@ -136,6 +159,11 @@
 $admin_pass = stripslashes($_POST['admin_pass']);
 $admin_pass_verify = stripslashes($_POST['admin_pass_verify']);
 $admin_email = stripslashes($_POST['admin_email']);
+
+$registered = stripslashes($_POST['registered']);
+if ($registered == 'on') $already_registered = true;
+else $already_registered = false;
+
 // check login name
 if (empty($admin_login)) {
 	die (__("<strong>ERROR</strong>: please type your login name"));
@@ -161,6 +189,23 @@
 <?php
 flush();
 
+if (defined('CUSTOM_USER_TABLE')) {
+	if ($already_registered) {
+		// Make sure the user matches.
+		$user_match = $wpdb->get_results("SELECT ID FROM $wpdb->users WHERE user_login='$admin_login' AND user_pass=MD5('$admin_pass') AND user_email='$admin_email'");
+
+		if (!$user_match) die (__("<strong>ERROR</strong>: your user information doesn't match that in the database"));
+	} else {
+		if ($wpdb->get_col("SHOW TABLES",0)) {
+			// Make sure the user doesn't already exist.
+			$user_taken = $wpdb->get_results("SELECT ID FROM $wpdb->users WHERE user_login='$admin_login'");
+
+			if ($user_taken) die (__("<strong>ERROR</strong>: that username is already taken"));
+		}
+	}
+}
+	
+
 // Set everything up
 wp_cache_flush();
 make_db_current_silent();
@@ -181,11 +226,27 @@
 // Default link category.
 $wpdb->query("INSERT INTO $wpdb->linkcategories (cat_id, cat_name, sort_order) VALUES('0', '".$wpdb->escape(__('Uncategorized'))."', 'manual')");
 
-// Set up admin user
-$wpdb->query("INSERT INTO $wpdb->users (ID, user_login, user_pass, user_email, user_registered, display_name, user_nicename) VALUES ( '1', '$admin_login', MD5('$admin_pass'), '$admin_email', NOW(), '$admin_login', '$admin_login')");
-$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$wpdb->insert_id}, '{$table_prefix}user_level', '10');");
-$admin_caps = serialize(array('administrator' => true));
-$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$wpdb->insert_id}, '{$table_prefix}capabilities', '{$admin_caps}');");
+if (defined('CUSTOM_USER_TABLE')) {
+	if (!$already_registered) {
+		// Need to create a new user.
+		$wpdb->query("INSERT INTO $wpdb->users (user_login, user_pass, user_email, user_registered, display_name, user_nicename) VALUES ( '$admin_login', MD5('$admin_pass'), '$admin_email', NOW(), '$admin_login', '$admin_login')");
+		$last_id = $wpdb->insert_id;
+		$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$last_id}, '{$table_prefix}user_level', '10');");
+		$admin_caps = serialize(array('administrator' => true));
+		$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$last_id}, '{$table_prefix}capabilities', '{$admin_caps}');");
+	} else {
+		$user_id = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_login='$admin_login'");
+		$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$user_id}, '{$table_prefix}user_level', '10');");
+		$admin_caps = serialize(array('administrator' => true));
+		$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$user_id}, '{$table_prefix}capabilities', '{$admin_caps}');");
+	}
+} else {
+	// Set up admin user
+	$wpdb->query("INSERT INTO $wpdb->users (ID, user_login, user_pass, user_email, user_registered, display_name, user_nicename) VALUES ( '1', '$admin_login', MD5('$admin_pass'), '$admin_email', NOW(), '$admin_login', '$admin_login')");
+	$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$wpdb->insert_id}, '{$table_prefix}user_level', '10');");
+	$admin_caps = serialize(array('administrator' => true));
+	$wpdb->query("INSERT INTO $wpdb->usermeta (user_id, meta_key, meta_value) VALUES ({$wpdb->insert_id}, '{$table_prefix}capabilities', '{$admin_caps}');");
+}
 
 // Let's activate some default plugins
 $check_plugins = array();
@@ -213,8 +274,9 @@
 	do_action('activate_' . trim($plugin));
 }
 
-$message_headers = 'From: ' . $weblog_title . ' <wordpress@' . $_SERVER['SERVER_NAME'] . '>';
-$message = sprintf(__("Your new WordPress blog has been successfully set up at:
+if (!$already_registered) {
+	$message_headers = 'From: ' . $weblog_title . ' <wordpress@' . $_SERVER['SERVER_NAME'] . '>';
+	$message = sprintf(__("Your new WordPress blog has been successfully set up at:
 
 %1\$s
 
@@ -229,7 +291,8 @@
 http://wordpress.org/
 "), $guessurl, $admin_login, $admin_pass);
 
-@wp_mail($admin_email, __('New WordPress Blog'), $message, $message_headers);
+	@wp_mail($admin_email, __('New WordPress Blog'), $message, $message_headers);
+}
 
 wp_cache_flush();
 ?>
@@ -237,12 +300,16 @@
 <p><em><?php _e('Finished!'); ?></em></p>
 
 <p><?php printf(__('Now you can <a href="%1$s">log in</a>.'), '../wp-login.php'); ?></p>
+<?php if ($already_registered) { ?>
+<p><?php _e('As you are already registered, you should already have a username and password! :P'); ?></p>
+<?php } else { ?>
 <dl>
 <dt><?php _e('Username'); ?></dt>
 <dd><code><?php echo $admin_login; ?></code></dd>
 	<dt><?php _e('Login address'); ?></dt>
 <dd><a href="../wp-login.php">wp-login.php</a></dd>
 </dl>
+<?php } ?>
 <p><?php _e('Were you expecting more steps? Sorry to disappoint. All done! :)'); ?></p>
 <?php
 	break;

