WordPress.org

Make WordPress Core

Ticket #19196: 19196.2.patch

File 19196.2.patch, 2.9 KB (added by SergeyBiryukov, 3 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