fixes bug 20388; follow up r60216. Make sure ProfilerSimpleText output only appears...
authorMark A. Hershberger <mah@users.mediawiki.org>
Fri, 26 Feb 2010 04:48:47 +0000 (04:48 +0000)
committerMark A. Hershberger <mah@users.mediawiki.org>
Fri, 26 Feb 2010 04:48:47 +0000 (04:48 +0000)
includes/ProfilerSimple.php
includes/ProfilerSimpleText.php
includes/SkinTemplate.php

index 5989061..5d2a775 100644 (file)
@@ -16,6 +16,7 @@ if ( !class_exists( 'Profiler' ) ) {
 class ProfilerSimple extends Profiler {
        var $mMinimumTime = 0;
        var $mProfileID = false;
+       var $mTemplated = false;
 
        function __construct() {
                global $wgRequestTime, $wgRUstart;
@@ -54,6 +55,14 @@ class ProfilerSimple extends Profiler {
                }
        }
 
+       /**
+        * Mark this call as templated or not
+        * @param boolean $t
+        */
+       function setTemplated( $t ) {
+               $this->mTemplated = $t;
+       }
+
        function profileIn($functionname) {
                global $wgDebugFunctionEntry;
                if ($wgDebugFunctionEntry) {
index d3df390..938f5ad 100644 (file)
@@ -9,7 +9,7 @@ require_once( dirname( __FILE__ ) . '/ProfilerSimple.php' );
 /**
  * The least sophisticated profiler output class possible, view your source! :)
  *
- * Put it to StartProfiler.php like this:
+ * Put the following 3 lines in StartProfiler.php:
  *
  * require_once( dirname( __FILE__ ) . '/includes/ProfilerSimpleText.php' );
  * $wgProfiler = new ProfilerSimpleText;
@@ -19,21 +19,23 @@ require_once( dirname( __FILE__ ) . '/ProfilerSimple.php' );
  */
 class ProfilerSimpleText extends ProfilerSimple {
        public $visible=false; /* Show as <PRE> or <!-- ? */
+       static private $out;
 
        function getFunctionReport() {
-               global $wgRequest;
-               if ( $wgRequest->getVal( 'action' ) == 'raw' ) # bug 20388
-                       return;
+               global $wgRequest, $wgOut;
 
-               if ($this->visible) print "<pre>";
-                       else print "<!--\n";
-               uasort($this->mCollated,array('self','sort'));
-               array_walk($this->mCollated,array('self','format'));
-               if ($this->visible) print "</pre>\n";
-                       else print "-->\n";
+               if($this->mTemplated) {
+                       uasort($this->mCollated,array('self','sort'));
+                       array_walk($this->mCollated,array('self','format'));
+                       if ($this->visible) {
+                               print '<pre>'.self::$out.'</pre>';
+                       } else {
+                               print '<!--\n'.self::$out.'\n-->\n';
+                       }
+               }
        }
 
        /* dense is good */
        static function sort($a,$b) { return $a['real']<$b['real']; /* sort descending by time elapsed */ }
-       static function format($item,$key) { printf("%3.6f %6d - %s\n",$item['real'],$item['count'], $key); }
+       static function format($item,$key) { self::$out .= sprintf("%3.6f %6d - %s\n",$item['real'],$item['count'], $key); }
 }
index d13268c..365fa68 100644 (file)
@@ -134,9 +134,10 @@ class SkinTemplate extends Skin {
                global $wgMaxCredits, $wgShowCreditsIfMax;
                global $wgPageShowWatchingUsers;
                global $wgUseTrackbacks, $wgUseSiteJs, $wgDebugComments;
-               global $wgArticlePath, $wgScriptPath, $wgServer;
+               global $wgArticlePath, $wgScriptPath, $wgServer, $wgProfiler;
 
                wfProfileIn( __METHOD__ );
+               $wgProfiler->setTemplated(true);
 
                $oldid = $wgRequest->getVal( 'oldid' );
                $diff = $wgRequest->getVal( 'diff' );