WordPress.org

Make WordPress Core

Ticket #19196: 19196.2.patch

File 19196.2.patch, 2.9 KB (added by SergeyBiryukov, 6 years ago)
  • wp-includes/load.php

     
    738738
    739739        $wp_locale = new WP_Locale();
    740740}
     741
     742/**
     743 * Set up the PHP error handler
     744 *
     745 * @since 3.4.0
     746 * @access private
     747 */
     748function wp_set_error_handler() {
     749        global $wp_php_errors;
     750
     751        $wp_php_errors = array();
     752        set_error_handler( 'wp_error_handler' );
     753
     754        if ( is_admin() )
     755                add_action( 'admin_footer', 'wp_show_errors', 20 );
     756        else
     757                add_action( 'wp_footer', 'wp_show_errors', 20 );
     758}
     759
     760/**
     761 * Resolve an error constant to its human readable name
     762 *
     763 * @since 3.4.0
     764 * @access private
     765 *
     766 * @param int
     767 * @return string
     768 */
     769function wp_error_constant($errno) {
     770        $codes = array(
     771                E_ERROR             => 'E_ERROR',
     772                E_WARNING           => 'E_WARNING',
     773                E_PARSE             => 'E_PARSE',
     774                E_NOTICE            => 'E_NOTICE',
     775                E_CORE_ERROR        => 'E_CORE_ERROR',
     776                E_CORE_WARNING      => 'E_CORE_WARNING',
     777                E_COMPILE_ERROR     => 'E_COMPILE_ERROR',
     778                E_COMPILE_WARNING   => 'E_COMPILE_WARNING',
     779                E_USER_ERROR        => 'E_USER_ERROR',
     780                E_USER_WARNING      => 'E_USER_WARNING',
     781                E_USER_NOTICE       => 'E_USER_NOTICE',
     782                E_STRICT            => 'E_STRICT',
     783                E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
     784                E_DEPRECATED        => 'E_DEPRECATED',
     785                E_USER_DEPRECATED   => 'E_USER_DEPRECATED',
     786        );
     787
     788        return isset( $codes[$errno] ) ? $codes[$errno] : $errno;
     789}
     790
     791/**
     792 * Show PHP errors
     793 *
     794 * @since 3.4.0
     795 * @access private
     796 *
     797 */
     798function wp_show_errors() {
     799        global $wp_php_errors;
     800
     801        if ( !is_array( $wp_php_errors ) )
     802                $wp_php_errors = array();
     803
     804        foreach ( (array) $wp_php_errors as $err ) : ?>
     805                <div class="error">     
     806                        <p><?php echo sprintf( __( '<b>%1$s</b>: %2$s in <b>%3$s</b> on line <b>%4$d</b>' ), wp_error_constant( $err['errno'] ), $err['errstr'], $err['errfile'], $err['errline'] ); ?></p>
     807                </div>
     808                <?php
     809        endforeach;
     810}
     811
     812/**
     813 * PHP error handler callback
     814 *
     815 * @since 3.4.0
     816 * @access private
     817 *
     818 * @param int Error code
     819 * @param string Error message
     820 * @param string File where error occurred
     821 * @param int $errline Line number where error occurred
     822 * @return void
     823 */
     824function wp_error_handler($errno, $errstr, $errfile, $errline) {
     825        global $wp_php_errors;
     826
     827        if ( !is_array( $wp_php_errors ) )
     828                $wp_php_errors = array();
     829
     830        if ( error_reporting() & $errno )
     831                $wp_php_errors[] = compact( 'errno', 'errstr', 'errfile', 'errline' );
     832}
  • wp-settings.php

     
    7272require( ABSPATH . WPINC . '/plugin.php' );
    7373require( ABSPATH . WPINC . '/pomo/mo.php' );
    7474
     75// Trap PHP errors
     76wp_set_error_handler();
     77
    7578// Include the wpdb class and, if present, a db.php database drop-in.
    7679require_wp_db();
    7780