$wgSquidMaxage = $wgCdnMaxAge;
}
-// Easy to forget to falsify $wgDebugToolbar for static caches.
-// If file cache or CDN cache is on, just disable this (DWIMD).
-if ( $wgUseFileCache || $wgUseCdn ) {
- $wgDebugToolbar = false;
-}
-
// Blacklisted file extensions shouldn't appear on the "allowed" list
$wgFileExtensions = array_values( array_diff( $wgFileExtensions, $wgFileBlacklist ) );
$wgPHPSessionHandling = MW_NO_SESSION === 'warn' ? 'warn' : 'disable';
}
-// Disable MWDebug for command line mode, this prevents MWDebug from eating up
-// all the memory from logging SQL queries on maintenance scripts
-global $wgCommandLineMode;
-if ( $wgDebugToolbar && !$wgCommandLineMode ) {
- MWDebug::init();
-}
+MWDebug::setup();
// Reset the global service locator, so any services that have already been created will be
// re-created while taking into account any custom settings and extensions.
$config = MediaWikiServices::getInstance()->getMainConfig();
if ( !$config->get( 'UseFileCache' ) && $mode !== self::MODE_REBUILD ) {
- return false;
- } elseif ( $config->get( 'DebugToolbar' ) ) {
- wfDebug( "HTML file cache skipped. \$wgDebugToolbar on\n" );
-
return false;
}
*/
protected static $deprecationWarnings = [];
+ /**
+ * @internal For use by Setup.php only.
+ */
+ public static function setup() {
+ global $wgDebugToolbar,
+ $wgUseCdn, $wgUseFileCache, $wgCommandLineMode;
+
+ if (
+ // Easy to forget to falsify $wgDebugToolbar for static caches.
+ // If file cache or CDN cache is on, just disable this (DWIMD).
+ $wgUseCdn ||
+ $wgUseFileCache ||
+ // Keep MWDebug off on CLI. This prevents MWDebug from eating up
+ // all the memory for logging SQL queries in maintenance scripts.
+ $wgCommandLineMode
+ ) {
+ return;
+ }
+
+ if ( $wgDebugToolbar ) {
+ self::init();
+ }
+ }
+
/**
* Enabled the debugger and load resource module.
* This is called by Setup.php when $wgDebugToolbar is true.
);
} elseif ( $req['method'] === 'POST' ) {
curl_setopt( $ch, CURLOPT_POST, 1 );
- // Don't interpret POST parameters starting with '@' as file uploads, because this
- // makes it impossible to POST plain values starting with '@' (and causes security
- // issues potentially exposing the contents of local files).
- curl_setopt( $ch, CURLOPT_SAFE_UPLOAD, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $req['body'] );
} else {
if ( is_resource( $req['body'] ) || $req['body'] !== '' ) {
* page of the given title.
*/
public function view() {
- global $wgUseFileCache, $wgDebugToolbar;
+ global $wgUseFileCache;
# Get variables from query string
# As side effect this will load the revision and update the title
}
# Try client and file cache
- if ( !$wgDebugToolbar && $oldid === 0 && $this->mPage->checkTouched() ) {
+ if ( $oldid === 0 && $this->mPage->checkTouched() ) {
# Try to stream the output from file cache
if ( $wgUseFileCache && $this->tryFileCache() ) {
wfDebug( __METHOD__ . ": done file cache\n" );
}
public function finalSetup() {
- global $wgDebugToolbar, $wgUseFileCache;
+ global $wgUseFileCache;
$this->enabled = $wgUseFileCache;
// Script will handle capturing output and saving it itself
$wgUseFileCache = false;
- // Debug toolbar makes content uncacheable so we disable it.
- // Has to be done before Setup.php initialize MWDebug
- $wgDebugToolbar = false;
// Avoid DB writes (like enotif/counters)
MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode()
->setReason( 'Building cache' );
+ // Ensure no debug-specific logic ends up in the cache (must be after Setup.php)
+ MWDebug::deinit();
+
parent::finalSetup();
}
$pageTables = [
'page', 'revision', 'ip_changes', 'revision_comment_temp', 'comment', 'archive',
'revision_actor_temp', 'slots', 'content', 'content_models', 'slot_roles',
+ 'change_tag',
];
$coreDBDataTables = array_merge( $userTables, $pageTables );