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

git-svn-id: http://svn.automattic.com/wordpress/trunk@13641 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
nacin 2010-03-10 08:17:07 +00:00
parent 28930c1e2e
commit df48ab984f
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
*/
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;
$msg = '';
@ -732,25 +732,25 @@ Thanks!
}
}
if ( $vhost == 'yes' )
if ( $subdomain_install )
update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%postname%/');
else
update_option( 'permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/');
$wp_rewrite->flush_rules();
if ( $vhost == 'yes' ) {
if ( $subdomain_install ) {
$vhost_ok = false;
$hostname = substr( md5( time() ), 0, 6 ) . '.' . $domain; // Very random hostname!
$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 ) {
$errstr = $err;
}
} elseif( $page[ 'response' ][ 'code' ] == 200 ) {
$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.
$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 />';

View File

@ -98,11 +98,11 @@ function network_step1() {
<?php } ?>
<table class="form-table">
<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>
</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>
</tr>
</table>
@ -168,25 +168,31 @@ function network_step1() {
*/
function network_step2() {
global $base, $wpdb;
if ( ! $_POST ) :
if ( is_multisite() ) : ?>
if ( $_POST ) {
$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>
<?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>
<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>
<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>
<?php
endif;
endif;
}
}
?>
<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( __( '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">
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; ?>';
define( 'DOMAIN_CURRENT_SITE', '<?php echo get_clean_basedomain(); ?>' );
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 ) {
check_admin_referer( 'install-network-1' );
// Install!
$base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
// create network tables
install_network();
$hostname = get_clean_basedomain();
$vhost = 'localhost' == $hostname ? false : (bool) $_POST['vhost'];
$subdomain_install = 'localhost' == $hostname ? false : (bool) $_POST['subdomain_install'];
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
network_step2();
} elseif ( is_multisite() || network_domain_check() ) {