diff --git a/wp-includes/load.php b/wp-includes/load.php index e750d14210..ae4ec69a84 100644 --- a/wp-includes/load.php +++ b/wp-includes/load.php @@ -14,9 +14,11 @@ */ function wp_get_server_protocol() { $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : ''; + if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3' ), true ) ) { $protocol = 'HTTP/1.0'; } + return $protocol; } @@ -58,7 +60,7 @@ function wp_fix_server_vars() { // Some IIS + PHP configurations put the script-name in the path-info (no need to append it twice). if ( isset( $_SERVER['PATH_INFO'] ) ) { - if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) { + if ( $_SERVER['PATH_INFO'] === $_SERVER['SCRIPT_NAME'] ) { $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; } else { $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; @@ -147,6 +149,7 @@ function wp_populate_basic_auth_from_authorization_header() { */ function wp_check_php_mysql_versions() { global $required_php_version, $wp_version; + $php_version = PHP_VERSION; if ( version_compare( $required_php_version, $php_version, '>' ) ) { @@ -165,8 +168,7 @@ function wp_check_php_mysql_versions() { // This runs before default constants are defined, so we can't assume WP_CONTENT_DIR is set yet. $wp_content_dir = defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR : ABSPATH . 'wp-content'; - if ( ! function_exists( 'mysqli_connect' ) - && ! function_exists( 'mysql_connect' ) + if ( ! function_exists( 'mysqli_connect' ) && ! function_exists( 'mysql_connect' ) && ! file_exists( $wp_content_dir . '/db.php' ) ) { require_once ABSPATH . WPINC . '/functions.php'; @@ -307,6 +309,7 @@ function wp_get_development_mode() { 'all', '', ); + if ( ! in_array( $development_mode, $valid_modes, true ) ) { $development_mode = ''; } @@ -408,6 +411,7 @@ function wp_is_maintenance_mode() { } require ABSPATH . '.maintenance'; + // If the $upgrading timestamp is older than 10 minutes, consider maintenance over. if ( ( time() - $upgrading ) >= 10 * MINUTE_IN_SECONDS ) { return false; @@ -459,7 +463,9 @@ function timer_float() { */ function timer_start() { global $timestart; + $timestart = microtime( true ); + return true; } @@ -480,12 +486,20 @@ function timer_start() { */ function timer_stop( $display = 0, $precision = 3 ) { global $timestart, $timeend; + $timeend = microtime( true ); $timetotal = $timeend - $timestart; - $r = ( function_exists( 'number_format_i18n' ) ) ? number_format_i18n( $timetotal, $precision ) : number_format( $timetotal, $precision ); + + if ( function_exists( 'number_format_i18n' ) ) { + $r = number_format_i18n( $timetotal, $precision ); + } else { + $r = number_format( $timetotal, $precision ); + } + if ( $display ) { echo $r; } + return $r; } @@ -581,10 +595,10 @@ function wp_debug_mode() { error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); } - if ( - defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || defined( 'MS_FILES_REQUEST' ) || - ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || - wp_doing_ajax() || wp_is_json_request() ) { + if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || defined( 'MS_FILES_REQUEST' ) + || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) + || wp_doing_ajax() || wp_is_json_request() + ) { ini_set( 'display_errors', 0 ); } } @@ -604,7 +618,9 @@ function wp_debug_mode() { */ function wp_set_lang_dir() { if ( ! defined( 'WP_LANG_DIR' ) ) { - if ( file_exists( WP_CONTENT_DIR . '/languages' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) || ! @is_dir( ABSPATH . WPINC . '/languages' ) ) { + if ( file_exists( WP_CONTENT_DIR . '/languages' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) + || ! @is_dir( ABSPATH . WPINC . '/languages' ) + ) { /** * Server path of the language directory. * @@ -613,6 +629,7 @@ function wp_set_lang_dir() { * @since 2.1.0 */ define( 'WP_LANG_DIR', WP_CONTENT_DIR . '/languages' ); + if ( ! defined( 'LANGDIR' ) ) { // Old static relative path maintained for limited backward compatibility - won't work in some cases. define( 'LANGDIR', 'wp-content/languages' ); @@ -626,6 +643,7 @@ function wp_set_lang_dir() { * @since 2.1.0 */ define( 'WP_LANG_DIR', ABSPATH . WPINC . '/languages' ); + if ( ! defined( 'LANGDIR' ) ) { // Old relative path maintained for backward compatibility. define( 'LANGDIR', WPINC . '/languages' ); @@ -676,6 +694,7 @@ function require_wp_db() { */ function wp_set_wpdb_vars() { global $wpdb, $table_prefix; + if ( ! empty( $wpdb->error ) ) { dead_db(); } @@ -746,10 +765,13 @@ function wp_set_wpdb_vars() { */ function wp_using_ext_object_cache( $using = null ) { global $_wp_using_ext_object_cache; + $current_using = $_wp_using_ext_object_cache; + if ( null !== $using ) { $_wp_using_ext_object_cache = $using; } + return $current_using; } @@ -793,6 +815,7 @@ function wp_start_object_cache() { */ if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) { require_once WP_CONTENT_DIR . '/object-cache.php'; + if ( function_exists( 'wp_cache_init' ) ) { wp_using_ext_object_cache( true ); } @@ -903,19 +926,24 @@ function wp_not_installed() { */ function wp_get_mu_plugins() { $mu_plugins = array(); + if ( ! is_dir( WPMU_PLUGIN_DIR ) ) { return $mu_plugins; } + $dh = opendir( WPMU_PLUGIN_DIR ); if ( ! $dh ) { return $mu_plugins; } + while ( ( $plugin = readdir( $dh ) ) !== false ) { if ( '.php' === substr( $plugin, -4 ) ) { $mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin; } } + closedir( $dh ); + sort( $mu_plugins ); return $mu_plugins; @@ -957,7 +985,7 @@ function wp_get_active_and_valid_plugins() { && file_exists( WP_PLUGIN_DIR . '/' . $plugin ) // $plugin must exist. // Not already included as a network plugin. && ( ! $network_plugins || ! in_array( WP_PLUGIN_DIR . '/' . $plugin, $network_plugins, true ) ) - ) { + ) { $plugins[] = WP_PLUGIN_DIR . '/' . $plugin; } } @@ -1386,6 +1414,7 @@ function is_multisite() { */ function get_current_blog_id() { global $blog_id; + return absint( $blog_id ); } @@ -1428,11 +1457,12 @@ function get_current_network_id() { */ function wp_load_translations_early() { global $wp_textdomain_registry, $wp_locale; - static $loaded = false; + if ( $loaded ) { return; } + $loaded = true; if ( function_exists( 'did_action' ) && did_action( 'init' ) ) { @@ -1501,9 +1531,11 @@ function wp_load_translations_early() { foreach ( $locations as $location ) { if ( file_exists( $location . '/' . $locale . '.mo' ) ) { load_textdomain( 'default', $location . '/' . $locale . '.mo', $locale ); + if ( defined( 'WP_SETUP_CONFIG' ) && file_exists( $location . '/admin-' . $locale . '.mo' ) ) { load_textdomain( 'default', $location . '/admin-' . $locale . '.mo', $locale ); } + break 2; } } @@ -1538,6 +1570,7 @@ function wp_installing( $is_installing = null ) { if ( ! is_null( $is_installing ) ) { $old_installing = $installing; $installing = $is_installing; + return (bool) $old_installing; } @@ -1558,12 +1591,13 @@ function is_ssl() { return true; } - if ( '1' == $_SERVER['HTTPS'] ) { + if ( '1' === (string) $_SERVER['HTTPS'] ) { return true; } - } elseif ( isset( $_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) { + } elseif ( isset( $_SERVER['SERVER_PORT'] ) && ( '443' === (string) $_SERVER['SERVER_PORT'] ) ) { return true; } + return false; } @@ -1617,7 +1651,9 @@ function wp_is_ini_value_changeable( $setting ) { } // Bit operator to workaround https://bugs.php.net/bug.php?id=44936 which changes access level to 63 in PHP 5.2.6 - 5.2.17. - if ( isset( $ini_all[ $setting ]['access'] ) && ( INI_ALL === ( $ini_all[ $setting ]['access'] & 7 ) || INI_USER === ( $ini_all[ $setting ]['access'] & 7 ) ) ) { + if ( isset( $ini_all[ $setting ]['access'] ) + && ( INI_ALL === ( $ini_all[ $setting ]['access'] & 7 ) || INI_USER === ( $ini_all[ $setting ]['access'] & 7 ) ) + ) { return true; } @@ -1739,6 +1775,7 @@ function wp_start_scraping_edited_file_errors() { if ( ! isset( $_REQUEST['wp_scrape_key'] ) || ! isset( $_REQUEST['wp_scrape_nonce'] ) ) { return; } + $key = substr( sanitize_key( wp_unslash( $_REQUEST['wp_scrape_key'] ) ), 0, 32 ); $nonce = wp_unslash( $_REQUEST['wp_scrape_nonce'] ); @@ -1753,9 +1790,11 @@ function wp_start_scraping_edited_file_errors() { echo "###### wp_scraping_result_end:$key ######"; die(); } + if ( ! defined( 'WP_SANDBOX_SCRAPING' ) ) { define( 'WP_SANDBOX_SCRAPING', true ); } + register_shutdown_function( 'wp_finalize_scraping_edited_file_errors', $key ); } @@ -1768,13 +1807,18 @@ function wp_start_scraping_edited_file_errors() { */ function wp_finalize_scraping_edited_file_errors( $scrape_key ) { $error = error_get_last(); + echo "\n###### wp_scraping_result_start:$scrape_key ######\n"; - if ( ! empty( $error ) && in_array( $error['type'], array( E_CORE_ERROR, E_COMPILE_ERROR, E_ERROR, E_PARSE, E_USER_ERROR, E_RECOVERABLE_ERROR ), true ) ) { + + if ( ! empty( $error ) + && in_array( $error['type'], array( E_CORE_ERROR, E_COMPILE_ERROR, E_ERROR, E_PARSE, E_USER_ERROR, E_RECOVERABLE_ERROR ), true ) + ) { $error = str_replace( ABSPATH, '', $error ); echo wp_json_encode( $error ); } else { echo wp_json_encode( true ); } + echo "\n###### wp_scraping_result_end:$scrape_key ######\n"; } @@ -1787,7 +1831,6 @@ function wp_finalize_scraping_edited_file_errors( $scrape_key ) { * False otherwise. */ function wp_is_json_request() { - if ( isset( $_SERVER['HTTP_ACCEPT'] ) && wp_is_json_media_type( $_SERVER['HTTP_ACCEPT'] ) ) { return true; } @@ -1797,7 +1840,6 @@ function wp_is_json_request() { } return false; - } /** diff --git a/wp-includes/version.php b/wp-includes/version.php index a4cb838f73..38a2ae6baf 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.3-beta4-56237'; +$wp_version = '6.3-beta4-56238'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.