* Cache debug messages until $wgOut is initialised
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Sat, 7 Jun 2008 12:57:59 +0000 (12:57 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Sat, 7 Jun 2008 12:57:59 +0000 (12:57 +0000)
includes/GlobalFunctions.php

index cf6a562..5069212 100644 (file)
@@ -176,12 +176,16 @@ function wfDebug( $text, $logonly = false ) {
        global $wgOut, $wgDebugLogFile, $wgDebugComments, $wgProfileOnly, $wgDebugRawPage;
        static $recursion = 0;
 
+       static $cache = array(); // Cache of unoutputted messages
+
        # Check for raw action using $_GET not $wgRequest, since the latter might not be initialised yet
        if ( isset( $_GET['action'] ) && $_GET['action'] == 'raw' && !$wgDebugRawPage ) {
                return;
        }
 
        if ( $wgDebugComments && !$logonly ) {
+               $cache[] = $text;
+
                if ( !isset( $wgOut ) ) {
                        return;
                }
@@ -193,7 +197,10 @@ function wfDebug( $text, $logonly = false ) {
                        $wgOut->_unstub();
                        $recursion--;
                }
-               $wgOut->debug( $text );
+
+               // add the message and possible cached ones to the output
+               array_map( array( $wgOut, 'debug' ), $cache );
+               $cache = array();
        }
        if ( '' != $wgDebugLogFile && !$wgProfileOnly ) {
                # Strip unprintables; they can switch terminal modes when binary data