WordPress.org

Make WordPress Core

Ticket #15083: 15083.refactoring-first.3.patch

File 15083.refactoring-first.3.patch, 15.9 KB (added by hakre, 5 years ago)

Moved some more code into functions.

  • wp-admin/network.php

     
    2626        $wpdb->$table = $prefixed_table; 
    2727 
    2828/** 
     29 * @param string $base configuration 
     30 * @param bool $subdomain_install configuration 
     31 * @return string htaccess file content (mod_rewrite directives); 
     32 */ 
     33function network_admin_generate_htaccess_file_content($base, $subdomain_install ) { 
     34 
     35        $uploaded_files = sprintf( 
     36                '^%sfiles/(.+) wp-includes/ms-files.php?file=$1', 
     37                $subdomain_install ? '' : '[_0-9a-zA-Z-]+/'  
     38        ); 
     39         
     40        // $htaccess_comment_if_a_subdomain_install 
     41        $comment_if = $subdomain_install ? '# ' : ''; 
     42         
     43        $content =  
     44'RewriteEngine On 
     45RewriteBase ' . $base . ' 
     46RewriteRule ^index\.php$ - [L] 
     47 
     48# uploaded files 
     49RewriteRule ' . $uploaded_files . ' [L] 
     50 
     51# add a trailing slash to /wp-admin (commented if a subdomain install) 
     52' . $comment_if . 'RewriteRule ^([_0-9a-zA-Z-]+/)wp-admin$ $1wp-admin/ [R=301,L] 
     53 
     54RewriteCond %{REQUEST_FILENAME} -f [OR] 
     55RewriteCond %{REQUEST_FILENAME} -d 
     56RewriteRule ^ - [L] 
     57 
     58# serach for non-existent files (commented if a subdomain install) 
     59' . $comment_if . 'RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] 
     60' . $comment_if . 'RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] 
     61 
     62RewriteRule . index.php [L] 
     63'; 
     64         
     65        return $content; 
     66} 
     67 
     68/** 
     69 * @return array array-keys as the key constant names and array-values as the according value. 
     70 */ 
     71function network_admin_generate_key_salts() { 
     72        $key_names = array('AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT'); 
     73        $key_existing_names = array_filter( $key_names, 'defined' ); 
     74        $key_inexist = array_diff( $key_names, $key_existing_names ); 
     75        $keys_count = count($key_inexist); 
     76        if ( 0 === $keys_count ) 
     77                return array(); 
     78          
     79        $keys_salts = array_combine( $key_inexist, array_fill( 0, $keys_count, '' ) ); 
     80         
     81        $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); 
     82        if ( is_wp_error( $from_api ) ) { 
     83                foreach ( $keys_salts as $c => $v ) { 
     84                        $keys_salts[ $c ] = wp_generate_password( 64, true, true ); 
     85                } 
     86        } else { 
     87                $from_api = explode( "\n", wp_remote_retrieve_body( $from_api ) ); 
     88                foreach ( $keys_salts as $c => $v ) { 
     89                        $keys_salts[ $c ] = substr( array_shift( $from_api ), 28, 64 ); 
     90                } 
     91        } 
     92 
     93        return $key_salts; 
     94} 
     95 
     96/** 
     97 * @return string web config content 
     98 */ 
     99function network_admin_web_config_content_subdirecotry_install() { 
     100        return                           
     101'<?xml version="1.0" encoding="UTF-8"?> 
     102<configuration> 
     103    <system.webServer> 
     104        <rewrite> 
     105            <rules> 
     106                <rule name="WordPress Rule 1" stopProcessing="true"> 
     107                    <match url="^index\.php$" ignoreCase="false" /> 
     108                    <action type="None" /> 
     109                </rule> 
     110                <rule name="WordPress Rule 2" stopProcessing="true"> 
     111                    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" /> 
     112                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" /> 
     113                </rule> 
     114                <rule name="WordPress Rule 3" stopProcessing="true"> 
     115                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" /> 
     116                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" /> 
     117                </rule> 
     118                <rule name="WordPress Rule 4" stopProcessing="true"> 
     119                    <match url="^" ignoreCase="false" /> 
     120                    <conditions logicalGrouping="MatchAny"> 
     121                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
     122                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
     123                    </conditions> 
     124                    <action type="None" /> 
     125                </rule> 
     126                <rule name="WordPress Rule 5" stopProcessing="true"> 
     127                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" /> 
     128                    <action type="Rewrite" url="{R:2}" /> 
     129                </rule> 
     130                <rule name="WordPress Rule 6" stopProcessing="true"> 
     131                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> 
     132                    <action type="Rewrite" url="{R:2}" /> 
     133                </rule> 
     134                <rule name="WordPress Rule 7" stopProcessing="true"> 
     135                    <match url="." ignoreCase="false" /> 
     136                    <action type="Rewrite" url="index.php" /> 
     137                </rule> 
     138            </rules> 
     139        </rewrite> 
     140    </system.webServer> 
     141</configuration>'; 
     142} 
     143 
     144/** 
     145 * @return string web config content 
     146 */ 
     147function network_admin_web_config_content_subdomain_install() { 
     148        return  
     149'<?xml version="1.0" encoding="UTF-8"?> 
     150<configuration> 
     151    <system.webServer> 
     152        <rewrite> 
     153            <rules> 
     154                <rule name="WordPress Rule 1" stopProcessing="true"> 
     155                    <match url="^index\.php$" ignoreCase="false" /> 
     156                    <action type="None" /> 
     157                </rule> 
     158                <rule name="WordPress Rule 2" stopProcessing="true"> 
     159                    <match url="^files/(.+)" ignoreCase="false" /> 
     160                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" /> 
     161                </rule> 
     162                <rule name="WordPress Rule 3" stopProcessing="true"> 
     163                    <match url="^" ignoreCase="false" /> 
     164                    <conditions logicalGrouping="MatchAny"> 
     165                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
     166                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
     167                    </conditions> 
     168                    <action type="None" /> 
     169                </rule> 
     170                <rule name="WordPress Rule 4" stopProcessing="true"> 
     171                    <match url="." ignoreCase="false" /> 
     172                    <action type="Rewrite" url="index.php" /> 
     173                </rule> 
     174            </rules> 
     175        </rewrite> 
     176    </system.webServer> 
     177</configuration>'; 
     178} 
     179 
     180/** 
     181 * @param string $base path of current site configuration 
     182 * @param string $hostname domain current site configuration 
     183 * @param bool $subdomain_install configuration 
     184 * @return string file content 
     185 */ 
     186function network_admin_generate_wpconfig_file_content( $base, $hostname, $subdomain_install ) { 
     187        $subdomain = $subdomain_install ? 'true' : 'false'; 
     188        return 
     189"define( 'MULTISITE', true ); 
     190define( 'SUBDOMAIN_INSTALL', {$subdomain} ); 
     191\$base = '{$base}'; 
     192define( 'DOMAIN_CURRENT_SITE', '{$hostname}' ); 
     193define( 'PATH_CURRENT_SITE', '{$base}' ); 
     194define( 'SITE_ID_CURRENT_SITE', 1 ); 
     195define( 'BLOG_ID_CURRENT_SITE', 1 ); 
     196"; 
     197} 
     198 
     199/** 
    29200 * Check for an existing network. 
    30201 * 
    31202 * @since 3.0.0 
     
    328499                                if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' ) 
    329500                                        echo ' <strong>' . __('Warning:') . ' ' . __( 'Networks may not be fully compatible with custom wp-content directories.' ) . '</strong'; 
    330501                        ?></p></li> 
    331                         <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), ABSPATH ); ?></p> 
     502                        <?php 
     503                                $file_content = network_admin_generate_wpconfig_file_content( $base, $hostname, $subdomain_install ); 
     504                        ?> 
     505                        <li> 
     506                                <p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), ABSPATH ); ?></p> 
    332507                                <textarea class="code" readonly="readonly" cols="100" rows="7"> 
    333 define( 'MULTISITE', true ); 
    334 define( 'SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?> ); 
    335 $base = '<?php echo $base; ?>'; 
    336 define( 'DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>' ); 
    337 define( 'PATH_CURRENT_SITE', '<?php echo $base; ?>' ); 
    338 define( 'SITE_ID_CURRENT_SITE', 1 ); 
    339 define( 'BLOG_ID_CURRENT_SITE', 1 );</textarea> 
     508                                <?php echo wp_htmledit_pre( $file_content ); ?> 
     509                                </textarea> 
     510                                <?php 
     511                                $keys_salts = network_admin_generate_key_salts(); 
     512                                $num_keys_salts = count( $keys_salts ); 
     513                                ?> 
     514                                <p> 
     515                                <?php echo _n( 'This unique authentication key is also missing from your <code>wp-config.php</code> file.', 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.', $num_keys_salts ); ?> 
     516                                <?php _e( 'To make your installation more secure, you should also add:' ) ?></p> 
     517                                <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $num_keys_salts; ?>"><?php 
     518                                        foreach ( $keys_salts as $c => $v ) { 
     519                                                echo "\ndefine( '$c', '" . htmlspecialchars( $v ) . "' );"; 
     520                                        } 
     521                                ?></textarea> 
    340522<?php 
    341         $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' ); 
    342         foreach ( $keys_salts as $c => $v ) { 
    343                 if ( defined( $c ) ) 
    344                         unset( $keys_salts[ $c ] ); 
    345523        } 
    346         if ( ! empty( $keys_salts ) ) { 
    347                 $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); 
    348                 if ( is_wp_error( $from_api ) ) { 
    349                         foreach ( $keys_salts as $c => $v ) { 
    350                                 $keys_salts[ $c ] = wp_generate_password( 64, true, true ); 
    351                         } 
    352                 } else { 
    353                         $from_api = explode( "\n", wp_remote_retrieve_body( $from_api ) ); 
    354                         foreach ( $keys_salts as $c => $v ) { 
    355                                 $keys_salts[ $c ] = substr( array_shift( $from_api ), 28, 64 ); 
    356                         } 
    357                 } 
    358                 $num_keys_salts = count( $keys_salts ); 
    359524?> 
    360         <p><?php 
    361                 echo _n( 'This unique authentication key is also missing from your <code>wp-config.php</code> file.', 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.', $num_keys_salts ); ?> <?php _e( 'To make your installation more secure, you should also add:' ) ?></p> 
    362         <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $num_keys_salts; ?>"><?php 
    363         foreach ( $keys_salts as $c => $v ) { 
    364                 echo "\ndefine( '$c', '$v' );"; 
    365         } 
    366 ?></textarea> 
    367 <?php 
    368         } 
    369 ?> 
    370525</li> 
    371526<?php 
    372527        if ( iis7_supports_permalinks() ) : 
    373  
    374                         if ( $subdomain_install ) { 
    375                                 $web_config_file = 
    376 '<?xml version="1.0" encoding="UTF-8"?> 
    377 <configuration> 
    378     <system.webServer> 
    379         <rewrite> 
    380             <rules> 
    381                 <rule name="WordPress Rule 1" stopProcessing="true"> 
    382                     <match url="^index\.php$" ignoreCase="false" /> 
    383                     <action type="None" /> 
    384                 </rule> 
    385                 <rule name="WordPress Rule 2" stopProcessing="true"> 
    386                     <match url="^files/(.+)" ignoreCase="false" /> 
    387                     <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" /> 
    388                 </rule> 
    389                 <rule name="WordPress Rule 3" stopProcessing="true"> 
    390                     <match url="^" ignoreCase="false" /> 
    391                     <conditions logicalGrouping="MatchAny"> 
    392                         <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
    393                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
    394                     </conditions> 
    395                     <action type="None" /> 
    396                 </rule> 
    397                 <rule name="WordPress Rule 4" stopProcessing="true"> 
    398                     <match url="." ignoreCase="false" /> 
    399                     <action type="Rewrite" url="index.php" /> 
    400                 </rule> 
    401             </rules> 
    402         </rewrite> 
    403     </system.webServer> 
    404 </configuration>'; 
    405                         } else { 
    406                                 $web_config_file = 
    407 '<?xml version="1.0" encoding="UTF-8"?> 
    408 <configuration> 
    409     <system.webServer> 
    410         <rewrite> 
    411             <rules> 
    412                 <rule name="WordPress Rule 1" stopProcessing="true"> 
    413                     <match url="^index\.php$" ignoreCase="false" /> 
    414                     <action type="None" /> 
    415                 </rule> 
    416                 <rule name="WordPress Rule 2" stopProcessing="true"> 
    417                     <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" /> 
    418                     <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" /> 
    419                 </rule> 
    420                 <rule name="WordPress Rule 3" stopProcessing="true"> 
    421                     <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" /> 
    422                     <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" /> 
    423                 </rule> 
    424                 <rule name="WordPress Rule 4" stopProcessing="true"> 
    425                     <match url="^" ignoreCase="false" /> 
    426                     <conditions logicalGrouping="MatchAny"> 
    427                         <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
    428                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
    429                     </conditions> 
    430                     <action type="None" /> 
    431                 </rule> 
    432                 <rule name="WordPress Rule 5" stopProcessing="true"> 
    433                     <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" /> 
    434                     <action type="Rewrite" url="{R:2}" /> 
    435                 </rule> 
    436                 <rule name="WordPress Rule 6" stopProcessing="true"> 
    437                     <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> 
    438                     <action type="Rewrite" url="{R:2}" /> 
    439                 </rule> 
    440                 <rule name="WordPress Rule 7" stopProcessing="true"> 
    441                     <match url="." ignoreCase="false" /> 
    442                     <action type="Rewrite" url="index.php" /> 
    443                 </rule> 
    444             </rules> 
    445         </rewrite> 
    446     </system.webServer> 
    447 </configuration>'; 
    448                         } 
     528                if ( $subdomain_install ) { 
     529                        $file_content = network_admin_web_config_content_subdomain_install(); 
     530                } else { 
     531                        $file_content = network_admin_web_config_content_subdirecotry_install(); 
     532                } 
    449533        ?> 
    450534                <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
    451535                <textarea class="code" readonly="readonly" cols="100" rows="20"> 
    452                 <?php echo wp_htmledit_pre( $web_config_file ); ?> 
     536                <?php echo wp_htmledit_pre( $file_content ); ?> 
    453537                </textarea></li> 
    454538                </ol> 
    455539 
    456540        <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead: 
    457541 
    458                 $htaccess_file = 'RewriteEngine On 
    459 RewriteBase ' . $base . ' 
    460 RewriteRule ^index\.php$ - [L] 
    461  
    462 # uploaded files 
    463 RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n"; 
    464  
    465                 if ( ! $subdomain_install ) 
    466                         $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n"; 
    467  
    468                 $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR] 
    469 RewriteCond %{REQUEST_FILENAME} -d 
    470 RewriteRule ^ - [L]'; 
    471  
    472                 // @todo custom content dir. 
    473                 if ( ! $subdomain_install ) 
    474                         $htaccess_file .= "\nRewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]\nRewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]"; 
    475  
    476                 $htaccess_file .= "\nRewriteRule . index.php [L]"; 
    477  
     542                $file_content = network_admin_generate_htaccess_file_content( $base, $subdomain_install ); 
    478543                ?> 
    479544                <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
    480545                <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>"> 
    481 <?php echo wp_htmledit_pre( $htaccess_file ); ?></textarea></li> 
     546<?php echo wp_htmledit_pre( $file_content ); ?></textarea></li> 
    482547                </ol> 
    483548 
    484549        <?php endif; // end IIS/Apache code branches.