WordPress.org

Make WordPress Core

Ticket #32503: 32503.2.diff

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

     
    6565        }
    6666        update_blog_details( $id, $blog_data );
    6767
    68         if ( isset( $_POST['update_home_url'] ) && $_POST['update_home_url'] == 'update' ) {
    69                 $new_details = get_blog_details( $id, false );
    70                 $blog_address = esc_url_raw( $new_details->domain . $new_details->path );
    71                 if ( get_option( 'siteurl' ) != $blog_address ) {
    72                         update_option( 'siteurl', $blog_address );
    73                 }
    74                 if ( get_option( 'home' ) != $blog_address ) {
    75                         update_option( 'home', $blog_address );
    76                 }
     68        // Maybe update home and siteurl options
     69        $updated_details = get_blog_details( $id, false );
     70
     71
     72        $old_home_url = esc_url_raw( trailingslashit( get_option( 'home' ) ) );
     73        $old_home_scheme = parse_url( $old_home_url, PHP_URL_SCHEME );
     74        $old_home_domain = parse_url( $old_home_url, PHP_URL_HOST );
     75        $old_home_path   = parse_url( $old_home_url, PHP_URL_PATH );
     76
     77        if ( $old_home_domain === $existing_details->domain && $old_home_path === $existing_details->path ) {
     78                $new_home_address = esc_url_raw( $updated_details->domain . $updated_details->path, $old_home_scheme );
     79                update_option( 'home', $new_home_address );
    7780        }
    7881
     82        $old_site_url = esc_url_raw( trailingslashit( get_option( 'siteurl' ) ) );
     83        $old_site_scheme = parse_url( $old_site_url, PHP_URL_SCHEME );
     84        $old_site_domain = parse_url( $old_site_url, PHP_URL_HOST );
     85        $old_site_path   = parse_url( $old_site_url, PHP_URL_PATH );
     86
     87        if ( $old_site_domain === $existing_details->domain && $old_site_path === $existing_details->path ) {
     88                $new_site_address = esc_url_raw( $updated_details->domain . $updated_details->path, $old_site_scheme );
     89                update_option( 'siteurl', $new_site_address );
     90        }
     91
    7992        restore_current_blog();
    8093        wp_redirect( add_query_arg( array( 'update' => 'updated', 'id' => $id ), 'site-info.php') );
    8194        exit;
     
    134147                </tr>
    135148                <tr class="form-field form-required">
    136149                        <?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                         ?>
    143                         <th scope="row"><label for="path"><?php _e( 'Path' ) ?></label></th>
    144                         <td>
    145                                 <input name="blog[path]" type="text" id="path" value="<?php echo esc_attr( $details->path ) ?>" /><br />
    146                                 <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>
    147                         </td>
    148                         <?php
    149                                 restore_current_blog();
    150                         } ?>
     150                                <th scope="row"><?php _e( 'Path' ) ?></th>
     151                                <td><code><?php echo esc_attr( $details->path ) ?></code></td>
     152                        <?php } else { ?>
     153                                <th scope="row"><label for="path"><?php _e( 'Path' ) ?></label></th>
     154                                <td><input name="blog[path]" type="text" id="path" value="<?php echo esc_attr( $details->path ) ?>" /></td>
     155                        <?php } ?>
    151156                </tr>
    152157                <tr class="form-field">
    153158                        <th scope="row"><label for="blog_registered"><?php _ex( 'Registered', 'site' ) ?></label></th>