2003-05-23 13:07:05 +02:00
< ? php
2008-08-14 08:30:38 +02:00
/**
* WordPress Installer
*
* @ package WordPress
* @ subpackage Administration
*/
2010-02-26 07:31:40 +01:00
// Sanity check.
if ( false ) {
2018-08-17 03:51:36 +02:00
?>
2011-07-22 02:25:41 +02:00
<! DOCTYPE html >
2012-02-08 07:05:35 +01:00
< html xmlns = " http://www.w3.org/1999/xhtml " >
2010-03-11 21:45:24 +01:00
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
< title > Error : PHP is not running </ title >
</ head >
2012-11-30 14:40:59 +01:00
< body class = " wp-core-ui " >
2015-11-04 19:00:24 +01:00
< p id = " logo " >< a href = " https://wordpress.org/ " > WordPress </ a ></ p >
< h1 > Error : PHP is not running </ h1 >
2010-03-11 21:45:24 +01:00
< p > WordPress requires that your web server is running PHP . Your server does not have PHP installed , or PHP is turned off .</ p >
</ body >
</ html >
2018-08-17 03:51:36 +02:00
< ? php
2010-02-26 07:31:40 +01:00
}
2008-08-14 08:30:38 +02:00
/**
* We are installing WordPress .
*
2010-02-13 21:40:42 +01:00
* @ since 1.5 . 1
2008-08-14 08:30:38 +02:00
* @ var bool
*/
2010-02-13 21:40:42 +01:00
define ( 'WP_INSTALLING' , true );
2004-07-23 10:45:55 +02:00
2008-08-14 08:30:38 +02:00
/** Load WordPress Bootstrap */
2020-02-06 07:33:11 +01:00
require_once dirname ( __DIR__ ) . '/wp-load.php' ;
2008-08-14 08:30:38 +02:00
/** Load WordPress Administration Upgrade API */
2020-02-06 07:33:11 +01:00
require_once ABSPATH . 'wp-admin/includes/upgrade.php' ;
2003-05-23 13:07:05 +02:00
2014-08-26 21:59:16 +02:00
/** Load WordPress Translation Install API */
2020-02-06 07:33:11 +01:00
require_once ABSPATH . 'wp-admin/includes/translation-install.php' ;
2014-08-26 21:59:16 +02:00
2016-08-31 18:31:29 +02:00
/** Load wpdb */
2020-02-06 07:33:11 +01:00
require_once ABSPATH . WPINC . '/wp-db.php' ;
2016-08-31 18:31:29 +02:00
2014-08-25 19:40:16 +02:00
nocache_headers ();
2012-04-27 20:57:08 +02:00
$step = isset ( $_GET [ 'step' ] ) ? ( int ) $_GET [ 'step' ] : 0 ;
2008-08-14 08:30:38 +02:00
/**
2017-08-22 13:52:48 +02:00
* Display installation header .
2008-08-14 08:30:38 +02:00
*
2010-02-13 21:40:42 +01:00
* @ since 2.5 . 0
2015-05-29 22:17:26 +02:00
*
* @ param string $body_classes
2008-08-14 08:30:38 +02:00
*/
2014-06-19 06:47:14 +02:00
function display_header ( $body_classes = '' ) {
2010-02-13 21:40:42 +01:00
header ( 'Content-Type: text/html; charset=utf-8' );
2014-06-19 06:47:14 +02:00
if ( is_rtl () ) {
$body_classes .= 'rtl' ;
}
if ( $body_classes ) {
$body_classes = ' ' . $body_classes ;
}
2018-08-17 03:51:36 +02:00
?>
2011-07-22 02:25:41 +02:00
<! DOCTYPE html >
2006-09-28 19:35:59 +02:00
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php language_attributes (); ?> >
2004-06-11 18:09:18 +02:00
< head >
2013-11-21 01:21:11 +01:00
< meta name = " viewport " content = " width=device-width " />
2004-07-23 10:45:55 +02:00
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " />
2015-12-08 22:56:27 +01:00
< meta name = " robots " content = " noindex,nofollow " />
2010-02-13 21:40:42 +01:00
< title >< ? php _e ( 'WordPress › Installation' ); ?> </title>
Upgrade/Install: Bring some consistency to installation screen styles.
* Include `forms.css` and `l10n.css`, for consistency with login screen and other admin screens.
* Remove redundant `@import` directives from `login.css` for files already declared as dependencies.
* Adjust margin on password strength meter for consistency with other fields.
* Increase font size for "You will need this password to log in" notice.
* Fix misaligned icon on "Hide" button for the password.
Props iseulde, dan@micamedia.com, bassgang, cdog, johnbillion, nmenescardi, mukesh27, SergeyBiryukov.
Fixes #35776, #47757, #47758.
Built from https://develop.svn.wordpress.org/trunk@45673
git-svn-id: http://core.svn.wordpress.org/trunk@45484 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-07-25 21:11:55 +02:00
< ? php wp_admin_css ( 'install' , true ); ?>
2003-05-23 13:07:05 +02:00
</ head >
2017-12-01 00:11:00 +01:00
< body class = " wp-core-ui<?php echo $body_classes ; ?> " >
2020-05-02 23:46:08 +02:00
< p id = " logo " >< ? php _e ( 'WordPress' ); ?> </p>
2007-12-20 03:10:09 +01:00
2018-08-17 03:51:36 +02:00
< ? php
2020-01-29 01:45:18 +01:00
} // End display_header().
2007-12-20 03:10:09 +01:00
2010-02-13 21:40:42 +01:00
/**
* Display installer setup form .
*
* @ since 2.8 . 0
2015-05-29 22:17:26 +02:00
*
2017-07-12 23:03:42 +02:00
* @ global wpdb $wpdb WordPress database abstraction object .
*
2015-05-29 22:17:26 +02:00
* @ param string | null $error
2010-02-13 21:40:42 +01:00
*/
2009-02-15 13:58:10 +01:00
function display_setup_form ( $error = null ) {
2010-02-14 04:07:47 +01:00
global $wpdb ;
2014-06-10 02:44:15 +02:00
2020-05-12 20:32:08 +02:00
$user_table = ( $wpdb -> get_var ( $wpdb -> prepare ( 'SHOW TABLES LIKE %s' , $wpdb -> esc_like ( $wpdb -> users ) ) ) !== null );
2010-02-14 04:07:47 +01:00
2020-01-29 01:45:18 +01:00
// Ensure that sites appear in search engines by default.
2009-08-16 11:01:39 +02:00
$blog_public = 1 ;
2014-06-19 06:37:15 +02:00
if ( isset ( $_POST [ 'weblog_title' ] ) ) {
2010-02-13 21:40:42 +01:00
$blog_public = isset ( $_POST [ 'blog_public' ] );
2014-06-19 06:37:15 +02:00
}
2009-09-14 16:03:32 +02:00
2013-03-01 18:14:09 +01:00
$weblog_title = isset ( $_POST [ 'weblog_title' ] ) ? trim ( wp_unslash ( $_POST [ 'weblog_title' ] ) ) : '' ;
2017-12-01 00:11:00 +01:00
$user_name = isset ( $_POST [ 'user_name' ] ) ? trim ( wp_unslash ( $_POST [ 'user_name' ] ) ) : '' ;
$admin_email = isset ( $_POST [ 'admin_email' ] ) ? trim ( wp_unslash ( $_POST [ 'admin_email' ] ) ) : '' ;
2010-02-14 04:07:47 +01:00
2009-02-15 13:58:10 +01:00
if ( ! is_null ( $error ) ) {
2018-08-17 03:51:36 +02:00
?>
2015-11-04 19:00:24 +01:00
< h1 >< ? php _ex ( 'Welcome' , 'Howdy' ); ?> </h1>
2013-09-25 18:14:09 +02:00
< p class = " message " >< ? php echo $error ; ?> </p>
2009-02-15 13:58:10 +01:00
< ? php } ?>
2014-07-08 19:52:14 +02:00
< form id = " setup " method = " post " action = " install.php?step=2 " novalidate = " novalidate " >
2019-05-24 23:56:54 +02:00
< table class = " form-table " role = " presentation " >
2011-10-06 01:42:11 +02:00
< tr >
< th scope = " row " >< label for = " weblog_title " >< ? php _e ( 'Site Title' ); ?> </label></th>
< td >< input name = " weblog_title " type = " text " id = " weblog_title " size = " 25 " value = " <?php echo esc_attr( $weblog_title ); ?> " /></ td >
</ tr >
< tr >
2017-12-01 00:11:00 +01:00
< th scope = " row " >< label for = " user_login " >< ? php _e ( 'Username' ); ?> </label></th>
2011-10-06 01:42:11 +02:00
< td >
2010-02-14 04:07:47 +01:00
< ? php
if ( $user_table ) {
2017-12-01 00:11:00 +01:00
_e ( 'User(s) already exists.' );
2014-03-28 20:00:15 +01:00
echo '<input name="user_name" type="hidden" value="admin" />' ;
2010-02-14 04:07:47 +01:00
} else {
2017-12-01 00:11:00 +01:00
?>
< input name = " user_name " type = " text " id = " user_login " size = " 25 " value = " <?php echo esc_attr( sanitize_user( $user_name , true ) ); ?> " />
2014-10-28 19:32:18 +01:00
< p >< ? php _e ( 'Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol.' ); ?> </p>
2018-08-17 03:51:36 +02:00
< ? php
2017-12-01 00:11:00 +01:00
}
?>
2011-10-06 01:42:11 +02:00
</ td >
</ tr >
2010-02-14 04:07:47 +01:00
< ? php if ( ! $user_table ) : ?>
2015-07-14 00:22:24 +02:00
< tr class = " form-field form-required user-pass1-wrap " >
2011-10-06 01:42:11 +02:00
< th scope = " row " >
2015-07-14 00:22:24 +02:00
< label for = " pass1 " >
< ? php _e ( 'Password' ); ?>
</ label >
2011-10-06 01:42:11 +02:00
</ th >
< td >
Upgrade/Install: Bring some consistency to installation screen styles.
* Include `forms.css` and `l10n.css`, for consistency with login screen and other admin screens.
* Remove redundant `@import` directives from `login.css` for files already declared as dependencies.
* Adjust margin on password strength meter for consistency with other fields.
* Increase font size for "You will need this password to log in" notice.
* Fix misaligned icon on "Hide" button for the password.
Props iseulde, dan@micamedia.com, bassgang, cdog, johnbillion, nmenescardi, mukesh27, SergeyBiryukov.
Fixes #35776, #47757, #47758.
Built from https://develop.svn.wordpress.org/trunk@45673
git-svn-id: http://core.svn.wordpress.org/trunk@45484 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-07-25 21:11:55 +02:00
< div class = " wp-pwd " >
2015-07-29 21:22:26 +02:00
< ? php $initial_password = isset ( $_POST [ 'admin_password' ] ) ? stripslashes ( $_POST [ 'admin_password' ] ) : wp_generate_password ( 18 ); ?>
2015-07-22 02:15:25 +02:00
< input type = " password " name = " admin_password " id = " pass1 " class = " regular-text " autocomplete = " off " data - reveal = " 1 " data - pw = " <?php echo esc_attr( $initial_password ); ?> " aria - describedby = " pass-strength-result " />
2016-09-28 21:54:28 +02:00
< button type = " button " class = " button wp-hide-pw hide-if-no-js " data - start - masked = " <?php echo (int) isset( $_POST['admin_password'] ); ?> " data - toggle = " 0 " aria - label = " <?php esc_attr_e( 'Hide password' ); ?> " >
2015-07-27 05:13:24 +02:00
< span class = " dashicons dashicons-hidden " ></ span >
2015-07-14 00:35:24 +02:00
< span class = " text " >< ? php _e ( 'Hide' ); ?> </span>
2015-07-14 00:22:24 +02:00
</ button >
2015-07-22 02:15:25 +02:00
< div id = " pass-strength-result " aria - live = " polite " ></ div >
2015-07-14 00:22:24 +02:00
</ div >
2015-07-22 18:56:27 +02:00
< p >< span class = " description important hide-if-no-js " >
2015-07-27 14:43:24 +02:00
< strong >< ? php _e ( 'Important:' ); ?> </strong>
2015-07-27 03:54:24 +02:00
< ? php /* translators: The non-breaking space prevents 1Password from thinking the text "log in" should trigger a password save prompt. */ ?>
2015-07-27 14:43:24 +02:00
< ? php _e ( 'You will need this password to log in. Please store it in a secure location.' ); ?> </span></p>
2015-07-14 00:22:24 +02:00
</ td >
</ tr >
< tr class = " form-field form-required user-pass2-wrap hide-if-js " >
< th scope = " row " >
< label for = " pass2 " >< ? php _e ( 'Repeat Password' ); ?>
< span class = " description " >< ? php _e ( '(required)' ); ?> </span>
</ label >
</ th >
< td >
< input name = " admin_password2 " type = " password " id = " pass2 " autocomplete = " off " />
</ td >
</ tr >
< tr class = " pw-weak " >
< th scope = " row " >< ? php _e ( 'Confirm Password' ); ?> </th>
< td >
< label >
2015-07-26 02:58:24 +02:00
< input type = " checkbox " name = " pw_weak " class = " pw-checkbox " />
2015-07-14 00:22:24 +02:00
< ? php _e ( 'Confirm use of weak password' ); ?>
</ label >
2011-10-06 01:42:11 +02:00
</ td >
</ tr >
2010-02-14 04:07:47 +01:00
< ? php endif ; ?>
2011-10-06 01:42:11 +02:00
< tr >
2015-08-28 05:17:21 +02:00
< th scope = " row " >< label for = " admin_email " >< ? php _e ( 'Your Email' ); ?> </label></th>
2014-07-08 19:52:14 +02:00
< td >< input name = " admin_email " type = " email " id = " admin_email " size = " 25 " value = " <?php echo esc_attr( $admin_email ); ?> " />
2011-10-06 01:42:11 +02:00
< p >< ? php _e ( 'Double-check your email address before continuing.' ); ?> </p></td>
</ tr >
< tr >
2020-05-27 16:33:11 +02:00
< th scope = " row " >< ? php has_action ( 'blog_privacy_selector' ) ? _e ( 'Site visibility' ) : _e ( 'Search engine visibility' ); ?> </th>
2015-10-01 23:35:25 +02:00
< td >
< fieldset >
2020-05-27 16:33:11 +02:00
< legend class = " screen-reader-text " >< span >< ? php has_action ( 'blog_privacy_selector' ) ? _e ( 'Site visibility' ) : _e ( 'Search engine visibility' ); ?> </span></legend>
2015-10-01 23:35:25 +02:00
< ? php
2017-12-01 00:11:00 +01:00
if ( has_action ( 'blog_privacy_selector' ) ) {
2018-08-17 03:51:36 +02:00
?>
2015-10-01 23:35:25 +02:00
< input id = " blog-public " type = " radio " name = " blog_public " value = " 1 " < ? php checked ( 1 , $blog_public ); ?> />
2017-12-01 00:11:00 +01:00
< label for = " blog-public " >< ? php _e ( 'Allow search engines to index this site' ); ?> </label><br/>
2015-10-01 23:35:25 +02:00
< input id = " blog-norobots " type = " radio " name = " blog_public " value = " 0 " < ? php checked ( 0 , $blog_public ); ?> />
< label for = " blog-norobots " >< ? php _e ( 'Discourage search engines from indexing this site' ); ?> </label>
< p class = " description " >< ? php _e ( 'Note: Neither of these options blocks access to your site — it is up to search engines to honor your request.' ); ?> </p>
< ? php
/** This action is documented in wp-admin/options-reading.php */
do_action ( 'blog_privacy_selector' );
2017-12-01 00:11:00 +01:00
} else {
2018-08-17 03:51:36 +02:00
?>
2015-10-01 23:35:25 +02:00
< label for = " blog_public " >< input name = " blog_public " type = " checkbox " id = " blog_public " value = " 0 " < ? php checked ( 0 , $blog_public ); ?> />
< ? php _e ( 'Discourage search engines from indexing this site' ); ?> </label>
< p class = " description " >< ? php _e ( 'It is up to search engines to honor this request.' ); ?> </p>
< ? php } ?>
</ fieldset >
</ td >
2011-10-06 01:42:11 +02:00
</ tr >
</ table >
2015-07-14 00:22:24 +02:00
< p class = " step " >< ? php submit_button ( __ ( 'Install WordPress' ), 'large' , 'Submit' , false , array ( 'id' => 'submit' ) ); ?> </p>
2014-07-05 07:14:15 +02:00
< input type = " hidden " name = " language " value = " <?php echo isset( $_REQUEST['language'] ) ? esc_attr( $_REQUEST['language'] ) : ''; ?> " />
2004-07-23 10:45:55 +02:00
</ form >
2018-08-17 03:51:36 +02:00
< ? php
2020-01-29 01:45:18 +01:00
} // End display_setup_form().
2009-02-15 13:58:10 +01:00
// Let's check to make sure WP isn't already installed.
2010-02-13 21:40:42 +01:00
if ( is_blog_installed () ) {
display_header ();
2016-02-24 02:22:26 +01:00
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="' . esc_url ( wp_login_url () ) . '" class="button button-large">' . __ ( 'Log In' ) . '</a></p>' .
'</body></html>'
);
2010-02-13 21:40:42 +01:00
}
2009-02-15 13:58:10 +01:00
2015-05-28 23:41:30 +02:00
/**
2020-02-10 04:30:06 +01:00
* @ global string $wp_version The WordPress version string .
* @ global string $required_php_version The required PHP version string .
* @ global string $required_mysql_version The required MySQL version string .
2015-05-28 23:41:30 +02:00
*/
2015-01-10 06:57:22 +01:00
global $wp_version , $required_php_version , $required_mysql_version ;
2017-12-01 00:11:00 +01:00
$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' );
2009-12-29 23:07:35 +01:00
2019-01-08 04:29:48 +01:00
$version_url = sprintf (
2019-09-03 02:41:05 +02:00
/* translators: %s: WordPress version. */
2019-01-08 04:29:48 +01:00
esc_url ( __ ( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title ( $wp_version )
);
2019-09-03 02:41:05 +02:00
/* translators: %s: URL to Update PHP page. */
2019-05-17 20:11:51 +02:00
$php_update_message = '</p><p>' . sprintf ( __ ( '<a href="%s">Learn more about updating PHP</a>.' ), esc_url ( wp_get_update_php_url () ) );
$annotation = wp_get_update_php_annotation ();
if ( $annotation ) {
$php_update_message .= '</p><p><em>' . $annotation . '</em>' ;
}
2017-12-01 00:11:00 +01:00
if ( ! $mysql_compat && ! $php_compat ) {
2019-09-03 02:41:05 +02:00
/* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required PHP version number, 4: Minimum required MySQL version number, 5: Current PHP version number, 6: Current MySQL version number. */
2019-05-17 20:11:51 +02:00
$compat = sprintf ( __ ( 'You cannot install because <a href="%1$s">WordPress %2$s</a> requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s.' ), $version_url , $wp_version , $required_php_version , $required_mysql_version , $php_version , $mysql_version ) . $php_update_message ;
2017-12-01 00:11:00 +01:00
} elseif ( ! $php_compat ) {
2019-09-03 02:41:05 +02:00
/* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required PHP version number, 4: Current PHP version number. */
2019-05-17 20:11:51 +02:00
$compat = sprintf ( __ ( 'You cannot install because <a href="%1$s">WordPress %2$s</a> requires PHP version %3$s or higher. You are running version %4$s.' ), $version_url , $wp_version , $required_php_version , $php_version ) . $php_update_message ;
2017-12-01 00:11:00 +01:00
} elseif ( ! $mysql_compat ) {
2019-09-03 02:41:05 +02:00
/* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required MySQL version number, 4: Current MySQL version number. */
2019-01-08 04:29:48 +01:00
$compat = sprintf ( __ ( 'You cannot install because <a href="%1$s">WordPress %2$s</a> requires MySQL version %3$s or higher. You are running version %4$s.' ), $version_url , $wp_version , $required_mysql_version , $mysql_version );
2016-11-21 02:22:32 +01:00
}
2009-12-29 23:07:35 +01:00
2017-12-01 00:11:00 +01:00
if ( ! $mysql_compat || ! $php_compat ) {
2009-12-29 23:07:35 +01:00
display_header ();
2019-08-08 14:54:56 +02:00
die ( '<h1>' . __ ( 'Requirements Not Met' ) . '</h1><p>' . $compat . '</p></body></html>' );
2012-05-02 22:37:18 +02:00
}
2012-05-02 22:38:58 +02:00
if ( ! is_string ( $wpdb -> base_prefix ) || '' === $wpdb -> base_prefix ) {
2012-05-03 18:41:59 +02:00
display_header ();
2016-02-24 02:22:26 +01:00
die (
'<h1>' . __ ( 'Configuration Error' ) . '</h1>' .
'<p>' . sprintf (
/* translators: %s: wp-config.php */
__ ( 'Your %s file has an empty database table prefix, which is not supported.' ),
'<code>wp-config.php</code>'
) . '</p></body></html>'
);
2009-12-29 23:07:35 +01:00
}
2015-06-09 19:59:24 +02:00
// Set error message if DO_NOT_UPGRADE_GLOBAL_TABLES isn't set as it will break install.
2015-06-10 00:00:28 +02:00
if ( defined ( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
2015-06-09 19:59:24 +02:00
display_header ();
2016-02-24 02:22:26 +01:00
die (
'<h1>' . __ ( 'Configuration Error' ) . '</h1>' .
'<p>' . sprintf (
/* translators: %s: DO_NOT_UPGRADE_GLOBAL_TABLES */
__ ( 'The constant %s cannot be defined when installing WordPress.' ),
'<code>DO_NOT_UPGRADE_GLOBAL_TABLES</code>'
) . '</p></body></html>'
);
2015-06-09 19:59:24 +02:00
}
2015-05-28 23:41:30 +02:00
/**
2020-02-10 04:30:06 +01:00
* @ global string $wp_local_package Locale code of the package .
2019-08-04 03:46:55 +02:00
* @ global WP_Locale $wp_locale WordPress date and time locale object .
2015-05-28 23:41:30 +02:00
*/
2014-09-04 16:39:15 +02:00
$language = '' ;
2014-08-26 21:59:16 +02:00
if ( ! empty ( $_REQUEST [ 'language' ] ) ) {
2017-09-04 21:30:43 +02:00
$language = preg_replace ( '/[^a-zA-Z0-9_]/' , '' , $_REQUEST [ 'language' ] );
2014-09-04 16:39:15 +02:00
} elseif ( isset ( $GLOBALS [ 'wp_local_package' ] ) ) {
$language = $GLOBALS [ 'wp_local_package' ];
2014-08-26 21:59:16 +02:00
}
2016-01-05 17:42:29 +01:00
$scripts_to_print = array ( 'jquery' );
2017-12-01 00:11:00 +01:00
switch ( $step ) {
2020-01-29 01:45:18 +01:00
case 0 : // Step 0.
2019-07-01 14:52:01 +02:00
if ( wp_can_install_language_pack () && empty ( $language ) ) {
$languages = wp_get_available_translations ();
if ( $languages ) {
$scripts_to_print [] = 'language-chooser' ;
display_header ( 'language-chooser' );
echo '<form id="setup" method="post" action="?step=1">' ;
wp_install_language_form ( $languages );
echo '</form>' ;
break ;
}
2014-06-18 21:58:15 +02:00
}
2014-07-05 07:14:15 +02:00
2014-06-18 21:58:15 +02:00
// Deliberately fall through if we can't reach the translations API.
case 1 : // Step 1, direct link or from language chooser.
2014-09-04 16:39:15 +02:00
if ( ! empty ( $language ) ) {
$loaded_language = wp_download_language_pack ( $language );
2014-07-05 07:14:15 +02:00
if ( $loaded_language ) {
2014-08-26 21:59:16 +02:00
load_default_textdomain ( $loaded_language );
2014-09-02 10:10:16 +02:00
$GLOBALS [ 'wp_locale' ] = new WP_Locale ();
2014-06-18 21:58:15 +02:00
}
}
2016-01-05 17:42:29 +01:00
$scripts_to_print [] = 'user-profile' ;
2014-06-18 21:58:15 +02:00
display_header ();
2018-08-17 03:51:36 +02:00
?>
2012-02-01 15:49:41 +01:00
< h1 >< ? php _ex ( 'Welcome' , 'Howdy' ); ?> </h1>
2014-09-04 16:39:15 +02:00
< p >< ? php _e ( 'Welcome to the famous five-minute WordPress installation process! Just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ); ?> </p>
2009-02-15 13:58:10 +01:00
2015-11-04 19:00:24 +01:00
< h2 >< ? php _e ( 'Information needed' ); ?> </h2>
2010-02-13 21:40:42 +01:00
< p >< ? php _e ( 'Please provide the following information. Don’t worry, you can always change these settings later.' ); ?> </p>
2004-07-23 10:45:55 +02:00
2018-08-17 03:51:36 +02:00
< ? php
2009-02-15 13:58:10 +01:00
display_setup_form ();
2006-09-28 19:35:59 +02:00
break ;
2004-07-23 10:45:55 +02:00
case 2 :
2014-09-04 16:39:15 +02:00
if ( ! empty ( $language ) && load_default_textdomain ( $language ) ) {
2017-12-01 00:11:00 +01:00
$loaded_language = $language ;
2014-09-02 10:10:16 +02:00
$GLOBALS [ 'wp_locale' ] = new WP_Locale ();
2014-08-17 16:00:16 +02:00
} else {
$loaded_language = 'en_US' ;
}
2014-06-18 21:58:15 +02:00
2017-12-01 00:11:00 +01:00
if ( ! empty ( $wpdb -> error ) ) {
2010-02-13 21:40:42 +01:00
wp_die ( $wpdb -> error -> get_error_message () );
2017-12-01 00:11:00 +01:00
}
2007-12-22 18:45:30 +01:00
2016-01-05 17:42:29 +01:00
$scripts_to_print [] = 'user-profile' ;
2017-03-23 20:01:42 +01:00
display_header ();
2020-01-29 01:45:18 +01:00
// Fill in the data we gathered.
2017-12-01 00:11:00 +01:00
$weblog_title = isset ( $_POST [ 'weblog_title' ] ) ? trim ( wp_unslash ( $_POST [ 'weblog_title' ] ) ) : '' ;
$user_name = isset ( $_POST [ 'user_name' ] ) ? trim ( wp_unslash ( $_POST [ 'user_name' ] ) ) : '' ;
$admin_password = isset ( $_POST [ 'admin_password' ] ) ? wp_unslash ( $_POST [ 'admin_password' ] ) : '' ;
$admin_password_check = isset ( $_POST [ 'admin_password2' ] ) ? wp_unslash ( $_POST [ 'admin_password2' ] ) : '' ;
$admin_email = isset ( $_POST [ 'admin_email' ] ) ? trim ( wp_unslash ( $_POST [ 'admin_email' ] ) ) : '' ;
$public = isset ( $_POST [ 'blog_public' ] ) ? ( int ) $_POST [ 'blog_public' ] : 1 ;
2014-07-17 11:14:16 +02:00
2015-08-28 05:17:21 +02:00
// Check email address.
2009-02-15 13:58:10 +01:00
$error = false ;
2010-02-14 04:07:47 +01:00
if ( empty ( $user_name ) ) {
2020-01-29 01:45:18 +01:00
// TODO: Poka-yoke.
2013-09-25 18:14:09 +02:00
display_setup_form ( __ ( 'Please provide a valid username.' ) );
2010-02-14 04:07:47 +01:00
$error = true ;
2020-05-12 20:32:08 +02:00
} elseif ( sanitize_user ( $user_name , true ) !== $user_name ) {
2013-09-25 18:14:09 +02:00
display_setup_form ( __ ( 'The username you provided has invalid characters.' ) );
2010-04-28 04:20:32 +02:00
$error = true ;
2020-05-12 20:32:08 +02:00
} elseif ( $admin_password !== $admin_password_check ) {
2020-01-29 01:45:18 +01:00
// TODO: Poka-yoke.
2013-10-02 19:49:09 +02:00
display_setup_form ( __ ( 'Your passwords do not match. Please try again.' ) );
2010-03-05 13:25:30 +01:00
$error = true ;
2015-01-08 08:05:25 +01:00
} elseif ( empty ( $admin_email ) ) {
2020-01-29 01:45:18 +01:00
// TODO: Poka-yoke.
2013-09-25 18:14:09 +02:00
display_setup_form ( __ ( 'You must provide an email address.' ) );
2009-02-15 13:58:10 +01:00
$error = true ;
2010-02-13 21:40:42 +01:00
} elseif ( ! is_email ( $admin_email ) ) {
2020-01-29 01:45:18 +01:00
// TODO: Poka-yoke.
2013-10-02 19:49:09 +02:00
display_setup_form ( __ ( 'Sorry, that isn’t a valid email address. Email addresses look like <code>username@example.com</code>.' ) );
2009-02-15 13:58:10 +01:00
$error = true ;
2006-09-28 19:35:59 +02:00
}
2006-02-12 08:53:23 +01:00
2020-02-09 17:53:06 +01:00
if ( false === $error ) {
2009-02-15 13:58:10 +01:00
$wpdb -> show_errors ();
2014-07-05 07:14:15 +02:00
$result = wp_install ( $weblog_title , $user_name , $admin_email , $public , '' , wp_slash ( $admin_password ), $loaded_language );
2018-08-17 03:51:36 +02:00
?>
2003-05-23 13:07:05 +02:00
2010-02-13 21:40:42 +01:00
< h1 >< ? php _e ( 'Success!' ); ?> </h1>
2003-05-23 13:07:05 +02:00
2016-02-17 19:58:26 +01:00
< p >< ? php _e ( 'WordPress has been installed. Thank you, and enjoy!' ); ?> </p>
2006-09-28 19:35:59 +02:00
2011-11-15 16:47:07 +01:00
< table class = " form-table install-success " >
2011-10-06 01:42:11 +02:00
< tr >
< th >< ? php _e ( 'Username' ); ?> </th>
2011-11-15 16:47:07 +01:00
< td >< ? php echo esc_html ( sanitize_user ( $user_name , true ) ); ?> </td>
2011-10-06 01:42:11 +02:00
</ tr >
< tr >
< th >< ? php _e ( 'Password' ); ?> </th>
2017-12-01 00:11:00 +01:00
< td >
2018-08-17 03:51:36 +02:00
< ? php
if ( ! empty ( $result [ 'password' ] ) && empty ( $admin_password_check ) ) :
?>
2017-12-01 00:11:00 +01:00
< code >< ? php echo esc_html ( $result [ 'password' ] ); ?> </code><br />
2014-05-14 18:43:15 +02:00
< ? php endif ?>
2017-12-01 00:11:00 +01:00
< p >< ? php echo $result [ 'password_message' ]; ?> </p>
2011-10-06 01:42:11 +02:00
</ td >
</ tr >
</ table >
2008-02-22 00:55:11 +01:00
2015-09-20 18:54:24 +02:00
< p class = " step " >< a href = " <?php echo esc_url( wp_login_url() ); ?> " class = " button button-large " >< ? php _e ( 'Log In' ); ?> </a></p>
2006-09-28 19:35:59 +02:00
2018-08-17 03:51:36 +02:00
< ? php
2009-02-15 13:58:10 +01:00
}
2006-09-28 19:35:59 +02:00
break ;
2003-05-23 13:07:05 +02:00
}
2016-01-05 17:42:29 +01:00
if ( ! wp_is_mobile () ) {
?>
2014-07-04 00:53:16 +02:00
< script type = " text/javascript " > var t = document . getElementById ( 'weblog_title' ); if ( t ){ t . focus (); } </ script >
2016-01-05 17:42:29 +01:00
< ? php
}
wp_print_scripts ( $scripts_to_print );
?>
2015-07-14 00:22:24 +02:00
< script type = " text/javascript " >
jQuery ( function ( $ ) {
$ ( '.hide-if-no-js' ) . removeClass ( 'hide-if-no-js' );
} );
</ script >
2003-05-23 13:07:05 +02:00
</ body >
2008-03-14 19:22:19 +01:00
</ html >