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;
+}