Index: wp-admin/install.php
===================================================================
--- wp-admin/install.php	(revision 15473)
+++ wp-admin/install.php	(working copy)
@@ -43,6 +43,7 @@
 
 $step = isset( $_GET['step'] ) ? $_GET['step'] : 0;
 
+if ( !function_exists('display_header') ) :
 /**
  * Display install header.
  *
@@ -61,12 +62,50 @@
 	<?php wp_admin_css( 'install', true ); ?>
 </head>
 <body>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+	<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
 
 <?php
 } // end display_header()
+endif;
 
+if ( !function_exists('check_requirements') ) :
 /**
+ * Initial check if blog is installed and other requirements
+ *
+ * @since 3.1.0
+ * @package WordPress
+ * @subpackage Installer
+ */
+function check_requirements() {
+	global $wpdb;
+	
+	// Let's check to make sure WP isn't already installed.
+	if ( is_blog_installed() ) {
+		display_header();
+		die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p><p class="step"><a href="../wp-login.php" class="button">' . __('Log In') . '</a></p></body></html>' );
+	}
+
+	$php_version    = phpversion();
+	$mysql_version  = $wpdb->db_version();
+	$php_compat     = version_compare( $php_version, $required_php_version, '>=' );
+	$mysql_compat   = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' );
+
+	if ( !$mysql_compat && !$php_compat )
+		$compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version );
+	elseif ( !$php_compat )
+		$compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version );
+	elseif ( !$mysql_compat )
+		$compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version );
+
+	if ( !$mysql_compat || !$php_compat ) {
+		display_header();
+		die('<h1>' . __('Insufficient Requirements') . '</h1><p>' . $compat . '</p></body></html>');
+	}
+} // end check_requirements()
+endif;
+
+if ( !function_exists('display_setup_form') ) :
+/**
  * Display installer setup form.
  *
  * @since 2.8.0
@@ -137,34 +176,31 @@
 </form>
 <?php
 } // end display_setup_form()
+endif;
 
-// Let's check to make sure WP isn't already installed.
-if ( is_blog_installed() ) {
-	display_header();
-	die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p><p class="step"><a href="../wp-login.php" class="button">' . __('Log In') . '</a></p></body></html>' );
-}
+if ( !function_exists('step_0') ) :
+/**
+ * Process install step 0
+ *
+ * @since 3.1.0
+ * @package WordPress
+ * @subpackage Installer
+*/
+function step_0() {
+	step_1();
+}//end function step_0();
+endif;
 
-$php_version    = phpversion();
-$mysql_version  = $wpdb->db_version();
-$php_compat     = version_compare( $php_version, $required_php_version, '>=' );
-$mysql_compat   = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' );
-
-if ( !$mysql_compat && !$php_compat )
-	$compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version );
-elseif ( !$php_compat )
-	$compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version );
-elseif ( !$mysql_compat )
-	$compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version );
-
-if ( !$mysql_compat || !$php_compat ) {
+if ( !function_exists('step_1') ) :
+/**
+ * Process install step 1
+ *
+ * @since 3.1.0
+ * @package WordPress
+ * @subpackage Installer
+*/
+function step_1() {
 	display_header();
-	die('<h1>' . __('Insufficient Requirements') . '</h1><p>' . $compat . '</p></body></html>');
-}
-
-switch($step) {
-	case 0: // Step 1
-	case 1: // Step 1, direct link.
-	  display_header();
 ?>
 <h1><?php _e( 'Welcome' ); ?></h1>
 <p><?php printf( __( 'Welcome to the famous five minute WordPress installation process! You may want to browse the <a href="%s">ReadMe documentation</a> at your leisure. Otherwise, just fill in the information below and you&#8217;ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ), '../readme.html' ); ?></p>
@@ -173,47 +209,59 @@
 <p><?php _e( 'Please provide the following information. Don&#8217;t worry, you can always change these settings later.' ); ?></p>
 
 <?php
-		display_setup_form();
-		break;
-	case 2:
-		if ( ! empty( $wpdb->error ) )
-			wp_die( $wpdb->error->get_error_message() );
+	display_setup_form();
+} // end step_1()
+endif;
 
-		display_header();
-		// Fill in the data we gathered
-		$weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : '';
-		$user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin';
-		$admin_password = isset($_POST['admin_password']) ? $_POST['admin_password'] : '';
-		$admin_password_check = isset($_POST['admin_password2']) ? $_POST['admin_password2'] : '';
-		$admin_email  = isset( $_POST['admin_email']  ) ?trim( stripslashes( $_POST['admin_email'] ) ) : '';
-		$public       = isset( $_POST['blog_public']  ) ? (int) $_POST['blog_public'] : 0;
-		// check e-mail address
-		$error = false;
-		if ( empty( $user_name ) ) {
-			// TODO: poka-yoke
-			display_setup_form( __('you must provide a valid username.') );
-			$error = true;
-		} elseif ( $user_name != sanitize_user( $user_name, true ) ) {
-			display_setup_form( __('the username you provided has invalid characters.') );
-			$error = true;
-		} elseif ( $admin_password != $admin_password_check ) {
-			// TODO: poka-yoke
-			display_setup_form( __( 'your passwords do not match. Please try again' ) );
-			$error = true;
-		} else if ( empty( $admin_email ) ) {
-			// TODO: poka-yoke
-			display_setup_form( __( 'you must provide an e-mail address.' ) );
-			$error = true;
-		} elseif ( ! is_email( $admin_email ) ) {
-			// TODO: poka-yoke
-			display_setup_form( __( 'that isn&#8217;t a valid e-mail address.  E-mail addresses look like: <code>username@example.com</code>' ) );
-			$error = true;
-		}
+if ( !function_exists('step_2') ) :
+/**
+ * Process install step 2
+ *
+ * @since 3.1.0
+ * @package WordPress
+ * @subpackage Installer
+*/
+function step_2() {
+	global $wpdb;
+	
+	if ( ! empty( $wpdb->error ) )
+		wp_die( $wpdb->error->get_error_message() );
 
-		if ( $error === false ) {
-			$wpdb->show_errors();
-			$result = wp_install($weblog_title, $user_name, $admin_email, $public, '', $admin_password);
-			extract( $result, EXTR_SKIP );
+	display_header();
+	// Fill in the data we gathered
+	$weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : '';
+	$user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin';
+	$admin_password = isset($_POST['admin_password']) ? $_POST['admin_password'] : '';
+	$admin_password_check = isset($_POST['admin_password2']) ? $_POST['admin_password2'] : '';
+	$admin_email  = isset( $_POST['admin_email']  ) ?trim( stripslashes( $_POST['admin_email'] ) ) : '';
+	$public       = isset( $_POST['blog_public']  ) ? (int) $_POST['blog_public'] : 0;
+	// check e-mail address
+	$error = false;
+	if ( empty( $user_name ) ) {
+		// TODO: poka-yoke
+		display_setup_form( __('you must provide a valid username.') );
+		$error = true;
+	} elseif ( $user_name != sanitize_user( $user_name, true ) ) {
+		display_setup_form( __('the username you provided has invalid characters.') );
+		$error = true;
+	} elseif ( $admin_password != $admin_password_check ) {
+		// TODO: poka-yoke
+		display_setup_form( __( 'your passwords do not match. Please try again' ) );
+		$error = true;
+	} else if ( empty( $admin_email ) ) {
+		// TODO: poka-yoke
+		display_setup_form( __( 'you must provide an e-mail address.' ) );
+		$error = true;
+	} elseif ( ! is_email( $admin_email ) ) {
+		// TODO: poka-yoke
+		display_setup_form( __( 'that isn&#8217;t a valid e-mail address.  E-mail addresses look like: <code>username@example.com</code>' ) );
+		$error = true;
+	}
+
+	if ( $error === false ) {
+		$wpdb->show_errors();
+		$result = wp_install($weblog_title, $user_name, $admin_email, $public, '', $admin_password);
+		extract( $result, EXTR_SKIP );
 ?>
 
 <h1><?php _e( 'Success!' ); ?></h1>
@@ -238,9 +286,19 @@
 <p class="step"><a href="../wp-login.php" class="button"><?php _e( 'Log In' ); ?></a></p>
 
 <?php
-		}
-		break;
-}
+	}
+} // end step_2()
+endif;
+
+if ( !function_exists('display_footer') ) :
+/**
+ * Display install footer.
+ *
+ * @since 3.1.0
+ * @package WordPress
+ * @subpackage Installer
+ */
+function display_footer() {
 ?>
 <script type="text/javascript">var t = document.getElementById('weblog_title'); if (t){ t.focus(); }</script>
 <script type="text/javascript" src="../wp-includes/js/jquery/jquery.js"></script>
@@ -262,3 +320,23 @@
 </script>
 </body>
 </html>
+<?php
+}//end function display_footer();
+endif;
+
+check_requirements();
+
+switch($step) {
+	case 0: // Step 1
+		step_0();
+		break;
+	case 1: // Step 1, direct link.
+		step_1();
+		break;
+	case 2:
+		step_2();
+		break;
+}
+
+display_footer();
+?>
\ No newline at end of file
