From c6bb90b4c7e20a37c9692a750dc436df85826caf Mon Sep 17 00:00:00 2001 From: "Mark A. Hershberger" Date: Fri, 26 Feb 2010 04:48:47 +0000 Subject: [PATCH] fixes bug 20388; follow up r60216. Make sure ProfilerSimpleText output only appears on templated/html output, not action=raw or atom output --- includes/ProfilerSimple.php | 9 +++++++++ includes/ProfilerSimpleText.php | 24 +++++++++++++----------- includes/SkinTemplate.php | 3 ++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/includes/ProfilerSimple.php b/includes/ProfilerSimple.php index 5989061dcd..5d2a775ccc 100644 --- a/includes/ProfilerSimple.php +++ b/includes/ProfilerSimple.php @@ -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) { diff --git a/includes/ProfilerSimpleText.php b/includes/ProfilerSimpleText.php index d3df390832..938f5ad0bb 100644 --- a/includes/ProfilerSimpleText.php +++ b/includes/ProfilerSimpleText.php @@ -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
 or \n";
+		if($this->mTemplated) {
+			uasort($this->mCollated,array('self','sort'));
+			array_walk($this->mCollated,array('self','format'));
+			if ($this->visible) {
+				print '
'.self::$out.'
'; + } else { + print '\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); } } diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index d13268ce41..365fa6896a 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -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' ); -- 2.20.1