fixes bug 20388; follow up r60216. Make sure ProfilerSimpleText output only appears on templated/html output, not action=raw or atom output

This commit is contained in:
Mark A. Hershberger 2010-02-26 04:48:47 +00:00
parent 267bcb1ba9
commit c6bb90b4c7
3 changed files with 24 additions and 12 deletions

View 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) {

View 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); }
}

View 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' );