diff -r c7c34916027a -r 177826044cd9 wp/wp-includes/error-protection.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/error-protection.php Mon Oct 14 18:28:13 2019 +0200 @@ -0,0 +1,137 @@ + $value ) { + if ( 0 === strpos( $constant, 'E_' ) ) { + $core_errors[ $value ] = $constant; + } + } + + if ( isset( $core_errors[ $error['type'] ] ) ) { + $error['type'] = $core_errors[ $error['type'] ]; + } + + /* translators: 1: error type, 2: error line number, 3: error file name, 4: error message */ + $error_message = __( 'An error of type %1$s was caused in line %2$s of the file %3$s. Error message: %4$s' ); + + return sprintf( + $error_message, + "{$error['type']}", + "{$error['line']}", + "{$error['file']}", + "{$error['message']}" + ); +} + +/** + * Registers the shutdown handler for fatal errors. + * + * The handler will only be registered if {@see wp_is_fatal_error_handler_enabled()} returns true. + * + * @since 5.2.0 + */ +function wp_register_fatal_error_handler() { + if ( ! wp_is_fatal_error_handler_enabled() ) { + return; + } + + $handler = null; + if ( defined( 'WP_CONTENT_DIR' ) && is_readable( WP_CONTENT_DIR . '/fatal-error-handler.php' ) ) { + $handler = include WP_CONTENT_DIR . '/fatal-error-handler.php'; + } + + if ( ! is_object( $handler ) || ! is_callable( array( $handler, 'handle' ) ) ) { + $handler = new WP_Fatal_Error_Handler(); + } + + register_shutdown_function( array( $handler, 'handle' ) ); +} + +/** + * Checks whether the fatal error handler is enabled. + * + * A constant `WP_DISABLE_FATAL_ERROR_HANDLER` can be set in `wp-config.php` to disable it, or alternatively the + * {@see 'wp_fatal_error_handler_enabled'} filter can be used to modify the return value. + * + * @since 5.2.0 + * + * @return bool True if the fatal error handler is enabled, false otherwise. + */ +function wp_is_fatal_error_handler_enabled() { + $enabled = ! defined( 'WP_DISABLE_FATAL_ERROR_HANDLER' ) || ! WP_DISABLE_FATAL_ERROR_HANDLER; + + /** + * Filters whether the fatal error handler is enabled. + * + * @since 5.2.0 + * + * @param bool $enabled True if the fatal error handler is enabled, false otherwise. + */ + return apply_filters( 'wp_fatal_error_handler_enabled', $enabled ); +} + +/** + * Access the WordPress Recovery Mode instance. + * + * @since 5.2.0 + * + * @return WP_Recovery_Mode + */ +function wp_recovery_mode() { + static $wp_recovery_mode; + + if ( ! $wp_recovery_mode ) { + $wp_recovery_mode = new WP_Recovery_Mode(); + } + + return $wp_recovery_mode; +}