WordPress.org

Make WordPress Core

Ticket #19796: 19796-hack-day.6.diff

File 19796-hack-day.6.diff, 10.4 KB (added by johnjamesjacoby, 21 months ago)

Includes $base global removal

  • wp-admin/network.php

     
    5151 * @return bool Whether subdomain install is allowed 
    5252 */ 
    5353function allow_subdomain_install() { 
    54         $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'siteurl' ) ); 
    55         if( false !== strpos( $domain, '/' ) || 'localhost' == $domain || preg_match( '|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|', $domain ) ) 
     54        $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'home' ) ); 
     55        if( parse_url( get_option( 'home' ), PHP_URL_PATH ) || 'localhost' == $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) ) 
    5656                return false; 
    5757 
    5858        return true; 
     
    144144function network_step1( $errors = false ) { 
    145145        global $is_apache; 
    146146 
    147         if ( get_option( 'siteurl' ) != get_option( 'home' ) ) { 
    148                 echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . sprintf( __( 'Your <strong>WordPress address</strong> must match your <strong>Site address</strong> before creating a Network. See <a href="%s">General Settings</a>.' ), esc_url( admin_url( 'options-general.php' ) ) ) . '</p></div>'; 
    149                 echo '</div>'; 
    150                 include ( ABSPATH . 'wp-admin/admin-footer.php' ); 
    151                 die(); 
    152         } 
    153  
    154147        if ( defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) { 
    155148                echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . __( 'The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network.' ) . '</p></div>'; 
    156149                echo '</div>'; 
     
    314307 * @since 3.0.0 
    315308 */ 
    316309function network_step2( $errors = false ) { 
    317         global $base, $wpdb; 
    318         $hostname = get_clean_basedomain(); 
     310        global $wpdb; 
    319311 
    320         if ( ! isset( $base ) ) 
    321                 $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) ); 
     312        $hostname          = get_clean_basedomain(); 
     313        $slashed_home      = trailingslashit( get_option( 'home'    ) ); 
     314        $slashed_siteurl   = trailingslashit( get_option( 'siteurl' ) ); 
     315        $wp_siteurl_subdir = str_replace( $slashed_home, '', $slashed_siteurl ); 
     316        $rewrite_base      = ! empty( $wp_siteurl_subdir ) ? trailingslashit( $wp_siteurl_subdir ) : ''; 
     317        $base              = parse_url( $slashed_home, PHP_URL_PATH ); 
    322318 
    323319        // Wildcard DNS message. 
    324320        if ( is_wp_error( $errors ) ) 
    325321                echo '<div class="error">' . $errors->get_error_message() . '</div>'; 
    326322 
    327         if ( $_POST ) { 
    328                 if ( allow_subdomain_install() ) 
     323        if ( ! empty( $_POST ) ) { 
     324                if ( allow_subdomain_install() ) { 
    329325                        $subdomain_install = allow_subdirectory_install() ? ! empty( $_POST['subdomain_install'] ) : true; 
    330                 else 
     326                } else { 
    331327                        $subdomain_install = false; 
     328                } 
    332329        } else { 
    333330                if ( is_multisite() ) { 
    334331                        $subdomain_install = is_subdomain_install(); 
     
    344341                } 
    345342        } 
    346343 
    347         if ( $_POST || ! is_multisite() ) { 
     344        if ( ! empty( $_POST ) || ! is_multisite() ) { 
    348345?> 
    349346                <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3> 
    350347                <p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p> 
     
    369366                                <textarea class="code" readonly="readonly" cols="100" rows="7"> 
    370367define('MULTISITE', true); 
    371368define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>); 
    372 $base = '<?php echo $base; ?>'; 
    373369define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>'); 
    374370define('PATH_CURRENT_SITE', '<?php echo $base; ?>'); 
    375371define('SITE_ID_CURRENT_SITE', 1); 
    376 define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
     372define('BLOG_ID_CURRENT_SITE', 1); 
     373define('WP_SITEURL_SUBDIR', '<?php echo $wp_siteurl_subdir; ?>');</textarea> 
    377374<?php 
    378375        $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' ); 
    379376        foreach ( $keys_salts as $c => $v ) { 
    380                 if ( defined( $c ) ) 
     377                if ( defined( $c ) ) { 
    381378                        unset( $keys_salts[ $c ] ); 
     379                } 
    382380        } 
     381 
    383382        if ( ! empty( $keys_salts ) ) { 
    384383                $keys_salts_str = ''; 
    385                 $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); 
     384                $from_api       = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); 
    386385                if ( is_wp_error( $from_api ) ) { 
    387386                        foreach ( $keys_salts as $c => $v ) { 
    388387                                $keys_salts_str .= "\ndefine( '$c', '" . wp_generate_password( 64, true, true ) . "' );"; 
     
    465464                </rule> 
    466465                <rule name="WordPress Rule 5" stopProcessing="true"> 
    467466                    <match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" /> 
    468                     <action type="Rewrite" url="{R:1}" /> 
     467                    <action type="Rewrite" url="' . $rewrite_base . '{R:1}" /> 
    469468                </rule> 
    470469                <rule name="WordPress Rule 6" stopProcessing="true"> 
    471470                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> 
    472                     <action type="Rewrite" url="{R:2}" /> 
     471                    <action type="Rewrite" url="' . $rewrite_base . '{R:2}" /> 
    473472                </rule> 
    474473                <rule name="WordPress Rule 7" stopProcessing="true"> 
    475474                    <match url="." ignoreCase="false" /> 
     
    504503RewriteRule ^ - [L]'; 
    505504 
    506505                // @todo custom content dir. 
    507                 if ( ! $subdomain_install ) 
    508                         $htaccess_file .= "\nRewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]\nRewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]"; 
     506                if ( ! $subdomain_install ) { 
     507                        $htaccess_file .= "\nRewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $rewrite_base$1 [L]\nRewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $rewrite_base$1 [L]"; 
     508                } 
    509509 
    510510                $htaccess_file .= "\nRewriteRule . index.php [L]"; 
    511511 
    512512                ?> 
    513                 <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
     513                <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), trailingslashit( str_replace( trailingslashit( $wp_siteurl_subdir ), '', ABSPATH ) ) ); ?></p> 
    514514                <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>"> 
    515515<?php echo esc_textarea( $htaccess_file ); ?></textarea></li> 
    516516                </ol> 
     
    523523        } 
    524524} 
    525525 
    526 if ( $_POST ) { 
     526if ( ! empty( $_POST ) ) { 
    527527 
    528         $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) ); 
    529  
    530528        check_admin_referer( 'install-network-1' ); 
    531529 
    532530        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 
     531 
    533532        // create network tables 
    534533        install_network(); 
    535         $hostname = get_clean_basedomain(); 
     534 
     535        $base              = parse_url( trailingslashit( get_option( 'home' ) ), PHP_URL_PATH ); 
    536536        $subdomain_install = allow_subdomain_install() ? !empty( $_POST['subdomain_install'] ) : false; 
     537 
    537538        if ( ! network_domain_check() ) { 
    538539                $result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), stripslashes( $_POST['sitename'] ), $base, $subdomain_install ); 
    539540                if ( is_wp_error( $result ) ) { 
    540                         if ( 1 == count( $result->get_error_codes() ) && 'no_wildcard_dns' == $result->get_error_code() ) 
     541                        if ( 1 == count( $result->get_error_codes() ) && 'no_wildcard_dns' == $result->get_error_code() ) { 
    541542                                network_step2( $result ); 
    542                         else 
     543                        } else { 
    543544                                network_step1( $result ); 
     545                        } 
    544546                } else { 
    545547                        network_step2(); 
    546548                } 
  • wp-admin/network/site-new.php

     
    6262 
    6363        if ( is_subdomain_install() ) { 
    6464                $newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); 
    65                 $path = $base; 
     65                $path      = $current_site->path; 
    6666        } else { 
    6767                $newdomain = $current_site->domain; 
    68                 $path = $base . $domain . '/'; 
     68                $path      = $current_site->path . $domain . '/'; 
    6969        } 
    7070 
    7171        $password = 'N/A'; 
  • wp-includes/link-template.php

     
    21292129        if ( 'relative' == $scheme ) 
    21302130                $url = $current_site->path; 
    21312131        else 
    2132                 $url = $scheme . '://' . $current_site->domain . $current_site->path; 
     2132                $url = $scheme . '://' . $current_site->domain . $current_site->wp_siteurl_subdir; 
    21332133 
    21342134        if ( !empty($path) && is_string($path) && strpos($path, '..') === false ) 
    21352135                $url .= ltrim($path, '/'); 
  • wp-includes/ms-default-constants.php

     
    4747         * @since 1.5.0 
    4848         */ 
    4949        if ( !defined( 'SITECOOKIEPATH' ) ) 
    50                 define( 'SITECOOKIEPATH', $current_site->path ); 
     50                define( 'SITECOOKIEPATH', $current_site->wp_siteurl_subdir ); 
    5151 
    5252        /** 
    5353         * @since 2.6.0 
  • wp-includes/ms-functions.php

     
    11421142 
    11431143        $wpdb->suppress_errors(false); 
    11441144 
    1145         $url = get_blogaddress_by_id($blog_id); 
     1145        $homeurl = $siteurl = untrailingslashit( get_blogaddress_by_id( $blog_id ) ); 
    11461146 
    11471147        // Set everything up 
    11481148        make_db_current_silent( 'blog' ); 
     
    11501150        populate_roles(); 
    11511151        $wp_roles->_init(); 
    11521152 
    1153         $url = untrailingslashit( $url ); 
    1154         // fix url. 
    1155         update_option('siteurl', $url); 
    1156         update_option('home', $url); 
     1153        // Maybe fix url 
     1154        if ( defined( 'WP_SITEURL_SUBDIR' ) && WP_SITEURL_SUBDIR ) 
     1155                $siteurl = trailingslashit( $siteurl ) . WP_SITEURL_SUBDIR; 
     1156                 
     1157        update_option('siteurl', $siteurl); 
     1158        update_option('home', $homeurl); 
    11571159        update_option('fileupload_url', $url . "/files" ); 
    11581160        update_option('upload_path', UPLOADBLOGSDIR . "/$blog_id/files"); 
    11591161        update_option('blogname', stripslashes( $blog_title ) ); 
     
    11611163        $wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') ); 
    11621164 
    11631165        // remove all perms 
    1164         $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'user_level' ) ); 
     1166        $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix . 'user_level'   ) ); 
     1167        $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix . 'capabilities' ) ); 
    11651168 
    1166         $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'capabilities' ) ); 
    1167  
    11681169        $wpdb->suppress_errors( false ); 
    11691170} 
    11701171 
  • wp-includes/ms-load.php

     
    142142                $current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1; 
    143143                $current_site->domain = DOMAIN_CURRENT_SITE; 
    144144                $current_site->path   = $path = PATH_CURRENT_SITE; 
     145 
     146                if( defined( 'WP_SITEURL_SUBDIR' ) ) 
     147                        $current_site->wp_siteurl_subdir = WP_SITEURL_SUBDIR; 
     148                else 
     149                        $current_site->wp_siteurl_subdir = $current_site->path; 
     150 
    145151                if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) 
    146152                        $current_site->blog_id = BLOG_ID_CURRENT_SITE; 
    147153                elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) // deprecated.