Correct subdomain handling in network.php. Pass around boolean values instead of 'yes' and 'no'. see #11816

git-svn-id: https://develop.svn.wordpress.org/trunk@13641 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin 2010-03-10 08:17:07 +00:00
parent 314a35e0f8
commit 62569595aa
2 changed files with 23 additions and 18 deletions

View File

@ -620,7 +620,7 @@ function populate_roles_300() {
* *
* @param int $network_id id of network to populate * @param int $network_id id of network to populate
*/ */
function populate_network( $network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $vhost = 'no' ) { function populate_network( $network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $subdomain_install = false ) {
global $wpdb, $current_site, $wp_db_version, $wp_rewrite; global $wpdb, $current_site, $wp_db_version, $wp_rewrite;
$msg = ''; $msg = '';
@ -732,25 +732,25 @@ Thanks!
} }
} }
if ( $vhost == 'yes' ) if ( $subdomain_install )
update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%postname%/'); update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%postname%/');
else else
update_option( 'permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/'); update_option( 'permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/');
$wp_rewrite->flush_rules(); $wp_rewrite->flush_rules();
if ( $vhost == 'yes' ) { if ( $subdomain_install ) {
$vhost_ok = false; $vhost_ok = false;
$hostname = substr( md5( time() ), 0, 6 ) . '.' . $domain; // Very random hostname! $hostname = substr( md5( time() ), 0, 6 ) . '.' . $domain; // Very random hostname!
$page = wp_remote_get( 'http://' . $hostname, array( 'timeout' => 5, 'httpversion' => '1.1' ) ); $page = wp_remote_get( 'http://' . $hostname, array( 'timeout' => 5, 'httpversion' => '1.1' ) );
if ( is_object( $page ) && is_wp_error( $page ) ) { if ( is_wp_error( $page ) ) {
foreach ( $page->get_error_messages() as $err ) { foreach ( $page->get_error_messages() as $err ) {
$errstr = $err; $errstr = $err;
} }
} elseif( $page[ 'response' ][ 'code' ] == 200 ) { } elseif( $page[ 'response' ][ 'code' ] == 200 ) {
$vhost_ok = true; $vhost_ok = true;
} }
if ( !$vhost_ok ) { if ( ! $vhost_ok ) {
// @todo Update this to reflect the merge. Also: Multisite readme file, or remove the <blockquote> tags. // @todo Update this to reflect the merge. Also: Multisite readme file, or remove the <blockquote> tags.
$msg = '<h2>' . esc_html__( 'Warning! Wildcard DNS may not be configured correctly!' ) . '</h2>'; $msg = '<h2>' . esc_html__( 'Warning! Wildcard DNS may not be configured correctly!' ) . '</h2>';
$msg .= '<p>' . __( 'To use the subdomain feature of WordPress MU you must have a wildcard entry in your dns. The installer attempted to contact a random hostname ($hostname) on your domain but failed. It returned this error message:' ) . '<br />'; $msg .= '<p>' . __( 'To use the subdomain feature of WordPress MU you must have a wildcard entry in your dns. The installer attempted to contact a random hostname ($hostname) on your domain but failed. It returned this error message:' ) . '<br />';

View File

@ -98,11 +98,11 @@ function network_step1() {
<?php } ?> <?php } ?>
<table class="form-table"> <table class="form-table">
<tr> <tr>
<th><label><input type='radio' name='vhost' value='yes'<?php checked( $rewrite_enabled ); ?> /> Sub-domains</label></th> <th><label><input type='radio' name='subdomain_install' value='1'<?php checked( $rewrite_enabled ); ?> /> Sub-domains</label></th>
<td><?php _e('like <code>site1.example.com</code> and <code>site2.example.com</code>'); ?></td> <td><?php _e('like <code>site1.example.com</code> and <code>site2.example.com</code>'); ?></td>
</tr> </tr>
<tr> <tr>
<th><label><input type='radio' name='vhost' value='no'<?php checked( ! $rewrite_enabled ); ?> /> Sub-directories</label></th> <th><label><input type='radio' name='subdomain_install' value='0'<?php checked( ! $rewrite_enabled ); ?> /> Sub-directories</label></th>
<td><?php _e('like <code>example.com/site1</code> and <code>example.com/site2</code>'); ?></td> <td><?php _e('like <code>example.com/site1</code> and <code>example.com/site2</code>'); ?></td>
</tr> </tr>
</table> </table>
@ -168,25 +168,31 @@ function network_step1() {
*/ */
function network_step2() { function network_step2() {
global $base, $wpdb; global $base, $wpdb;
if ( ! $_POST ) : if ( $_POST ) {
if ( is_multisite() ) : ?> $vhost = (bool) $_POST['subdomain_install'];
} else {
if ( is_multisite() ) {
$vhost = is_subdomain_install();
?>
<div class="updated"><p><strong><?php _e( 'Notice: The Network feature is already enabled.' ); ?></strong> <?php _e( 'The original configuration steps are shown here for reference.' ); ?></p></div> <div class="updated"><p><strong><?php _e( 'Notice: The Network feature is already enabled.' ); ?></strong> <?php _e( 'The original configuration steps are shown here for reference.' ); ?></p></div>
<?php else : ?> <?php } else {
$vhost = false; // @todo.
?>
<div class="error"><p><strong><?php _e('Warning:'); ?></strong> <?php _e( 'An existing WordPress network was detected.' ); ?></p></div> <div class="error"><p><strong><?php _e('Warning:'); ?></strong> <?php _e( 'An existing WordPress network was detected.' ); ?></p></div>
<p><?php _e( 'Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.' ); ?></p> <p><?php _e( 'Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.' ); ?></p>
<h3><?php esc_html_e( 'Enabling the Network' ); ?></h3> <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3>
<p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p> <p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p>
<div class="updated inline"><p><?php _e( '<strong>Caution:</strong> We recommend you backup your existing <code>wp-config.php</code> and <code>.htaccess</code> files.' ); ?></p></div> <div class="updated inline"><p><?php _e( '<strong>Caution:</strong> We recommend you backup your existing <code>wp-config.php</code> and <code>.htaccess</code> files.' ); ?></p></div>
<?php <?php
endif; }
endif; }
?> ?>
<ol> <ol>
<li><p><?php printf( __( 'Create a <code>blogs.dir</code> directory in <code>%s</code>. This directory is used to stored uploaded media for your additional sites and must be writeable by the web server.' ), WP_CONTENT_DIR ); ?></p></li> <li><p><?php printf( __( 'Create a <code>blogs.dir</code> directory in <code>%s</code>. This directory is used to stored uploaded media for your additional sites and must be writeable by the web server.' ), WP_CONTENT_DIR ); ?></p></li>
<li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code>:' ), ABSPATH ); ?></p> <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code>:' ), ABSPATH ); ?></p>
<textarea class="code" readonly="readonly" cols="100" rows="7"> <textarea class="code" readonly="readonly" cols="100" rows="7">
define( 'MULTISITE', true ); define( 'MULTISITE', true );
define( 'VHOST', '<?php echo ( ! empty( $_POST['vhost'] ) && 'yes' == stripslashes( $_POST['vhost'] ) ) ? 'yes' : 'no'; ?>' ); define( 'VHOST', '<?php echo $vhost ? 'yes' : 'no'; ?>' );
$base = '<?php echo $base; ?>'; $base = '<?php echo $base; ?>';
define( 'DOMAIN_CURRENT_SITE', '<?php echo get_clean_basedomain(); ?>' ); define( 'DOMAIN_CURRENT_SITE', '<?php echo get_clean_basedomain(); ?>' );
define( 'PATH_CURRENT_SITE', '<?php echo $base; ?>' ); define( 'PATH_CURRENT_SITE', '<?php echo $base; ?>' );
@ -259,19 +265,18 @@ RewriteRule . index.php [L]';
} }
} }
$base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
if ( $_POST ) { if ( $_POST ) {
check_admin_referer( 'install-network-1' ); check_admin_referer( 'install-network-1' );
// Install!
$base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
// create network tables // create network tables
install_network(); install_network();
$hostname = get_clean_basedomain(); $hostname = get_clean_basedomain();
$vhost = 'localhost' == $hostname ? false : (bool) $_POST['vhost']; $subdomain_install = 'localhost' == $hostname ? false : (bool) $_POST['subdomain_install'];
if ( ! network_domain_check() ) if ( ! network_domain_check() )
populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), $_POST['weblog_title'], $base, $vhost ); populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), $_POST['weblog_title'], $base, $subdomain_install );
// create wp-config.php / htaccess // create wp-config.php / htaccess
network_step2(); network_step2();
} elseif ( is_multisite() || network_domain_check() ) { } elseif ( is_multisite() || network_domain_check() ) {