WordPress.org

Make WordPress Core

Ticket #22383: 22383.4.diff

File 22383.4.diff, 5.2 KB (added by jeremyfelt, 5 years ago)
  • src/wp-admin/network/site-info.php

     
    4242if ( !can_edit_network( $details->site_id ) )
    4343        wp_die( __( 'You do not have permission to access this page.' ), 403 );
    4444
    45 $parsed = parse_url( $details->siteurl );
     45$parsed_scheme = parse_url( $details->siteurl, PHP_URL_SCHEME );
    4646$is_main_site = is_main_site( $id );
    4747
    4848if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] ) {
     
    5353        // Rewrite rules can't be flushed during switch to blog.
    5454        delete_option( 'rewrite_rules' );
    5555
    56         // Update blogs table.
    5756        $blog_data = wp_unslash( $_POST['blog'] );
     57
     58        if ( $is_main_site ) {
     59                $blog_data['scheme'] = $parsed_scheme;
     60                $blog_data['domain'] = $details->domain;
     61                $blog_data['path'] = $details->path;
     62        } elseif ( is_subdomain_install() ) {
     63                $update_parsed_url = parse_url( $blog_data['url'] );
     64                $blog_data['scheme'] = $update_parsed_url['scheme'];
     65                $blog_data['domain'] = $update_parsed_url['host'];
     66                $blog_data['path'] = $update_parsed_url['path'];
     67        } else {
     68                $blog_data['scheme'] = $parsed_scheme;
     69                $blog_data['domain'] = $details->domain;
     70        }
     71
    5872        $existing_details = get_blog_details( $id, false );
    5973        $blog_data_checkboxes = array( 'public', 'archived', 'spam', 'mature', 'deleted' );
    6074        foreach ( $blog_data_checkboxes as $c ) {
     
    6377                else
    6478                        $blog_data[ $c ] = isset( $_POST['blog'][ $c ] ) ? 1 : 0;
    6579        }
     80
    6681        update_blog_details( $id, $blog_data );
    6782
    6883        if ( isset( $_POST['update_home_url'] ) && $_POST['update_home_url'] == 'update' ) {
    6984                $new_details = get_blog_details( $id, false );
    70                 $blog_address = esc_url_raw( $new_details->domain . $new_details->path );
     85                $blog_address = esc_url_raw( $blog_data['scheme'] . '://' . $new_details->domain . $new_details->path );
    7186                if ( get_option( 'siteurl' ) != $blog_address ) {
    7287                        update_option( 'siteurl', $blog_address );
    7388                }
     
    118133if ( ! empty( $messages ) ) {
    119134        foreach ( $messages as $msg )
    120135                echo '<div id="message" class="updated notice is-dismissible"><p>' . $msg . '</p></div>';
    121 } ?>
     136}
     137
     138switch_to_blog( $id );
     139?>
    122140<form method="post" action="site-info.php?action=update-site">
    123141        <?php wp_nonce_field( 'edit-site' ); ?>
    124142        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
    125143        <table class="form-table">
     144                <?php
     145                // The main site of the network should not be updated on this page.
     146                if ( $is_main_site ) : ?>
     147                <tr class="form-field">
     148                        <th scope="row"><?php _e( 'Site URL' ); ?></th>
     149                        <td><?php echo esc_url( $details->siteurl ); ?></td>
     150                </tr>
     151                <?php
     152                // In a subdomain configuration, the scheme, domain, and path can all be changed.
     153                elseif ( is_subdomain_install() ) : ?>
    126154                <tr class="form-field form-required">
    127                         <?php if ( $is_main_site ) { ?>
    128                                 <th scope="row"><?php _e( 'Domain' ) ?></th>
    129                                 <td><code><?php echo $parsed['scheme'] . '://' . esc_attr( $details->domain ) ?></code></td>
    130                         <?php } else { ?>
    131                                 <th scope="row"><label for="domain"><?php _e( 'Domain' ) ?></label></th>
    132                                 <td><?php echo $parsed['scheme'] . '://'; ?><input name="blog[domain]" type="text" id="domain" value="<?php echo esc_attr( $details->domain ) ?>" /></td>
    133                         <?php } ?>
     155                        <th scope="row"><?php _e( 'Site URL' ) ?></th>
     156                        <td><input name="blog[url]" type="text" id="url" value="<?php echo $parsed_scheme . '://' . esc_attr( $details->domain ) . esc_attr( $details->path ); ?>" /></td>
    134157                </tr>
     158                <?php
     159                // In a subdirectory configuration, only the path can be changed.
     160                // Scheme and domain are inherited from the network.
     161                else : ?>
     162                <tr class="form-field">
     163                        <th scope="row"><?php _e( 'Domain' ); ?></th>
     164                        <td><?php echo $parsed_scheme . '://' . esc_attr( $details->domain ); ?></td>
     165                </tr>
    135166                <tr class="form-field form-required">
    136                         <?php if ( $is_main_site ) { ?>
    137                         <th scope="row"><?php _e( 'Path' ) ?></th>
    138                         <td><code><?php echo esc_attr( $details->path ) ?></code></td>
    139                         <?php
    140                         } else {
    141                                 switch_to_blog( $id );
    142                         ?>
    143167                        <th scope="row"><label for="path"><?php _e( 'Path' ) ?></label></th>
    144168                        <td>
    145169                                <input name="blog[path]" type="text" id="path" value="<?php echo esc_attr( $details->path ) ?>" /><br />
     170                        </td>
     171                </tr>
     172                <?php endif; ?>
     173
     174                <?php if ( ! $is_main_site ) : ?>
     175                <tr class="form-field">
     176                        <th scope="row"></th>
     177                        <td>
    146178                                <input type="checkbox" name="update_home_url" id="update_home_url" value="update" <?php if ( get_option( 'siteurl' ) == untrailingslashit( get_blogaddress_by_id ($id ) ) || get_option( 'home' ) == untrailingslashit( get_blogaddress_by_id( $id ) ) ) echo 'checked="checked"'; ?> /> <label for="update_home_url"><?php _e( 'Update <code>siteurl</code> and <code>home</code> as well.' ); ?></label>
    147179                        </td>
    148                         <?php
    149                                 restore_current_blog();
    150                         } ?>
    151180                </tr>
     181                <?php endif; ?>
     182
    152183                <tr class="form-field">
    153184                        <th scope="row"><label for="blog_registered"><?php _ex( 'Registered', 'site' ) ?></label></th>
    154185                        <td><input name="blog[registered]" type="text" id="blog_registered" value="<?php echo esc_attr( $details->registered ) ?>" /></td>
     
    184215
    185216</div>
    186217<?php
     218restore_current_blog();
    187219require( ABSPATH . 'wp-admin/admin-footer.php' );