From 3e11266ae5e5a33498abb7f028bbc79b5ca93515 Mon Sep 17 00:00:00 2001 From: Chad Horohoe Date: Sun, 22 May 2011 17:59:47 +0000 Subject: [PATCH] $wgArticle is deprecated! Possible removal in 1.20 or 1.21! * Encapsulate index.php in wfIndexMain() (similar to r77873) * Kill $wgArticle check in Exception, not necessary anymore * Kill $wgArticle in Setup, also not necessary * Add angry note about $wgArticle to rebuildFileCache. * Remove note about $wgArticle in Parser since it's dying anyway --- docs/globals.txt | 3 - includes/Exception.php | 3 +- includes/Setup.php | 3 +- includes/Wiki.php | 3 +- includes/parser/Parser.php | 2 +- index.php | 137 +++++++++++++++++-------------- maintenance/rebuildFileCache.php | 3 + 7 files changed, 84 insertions(+), 70 deletions(-) diff --git a/docs/globals.txt b/docs/globals.txt index bb3b294656..ac4bd792ce 100644 --- a/docs/globals.txt +++ b/docs/globals.txt @@ -45,9 +45,6 @@ For a description of the classes, see design.txt. $wgTitle Title object created from the request URL. -$wgArticle - Article object corresponding to $wgTitle. - $wgOut OutputPage object for HTTP response. diff --git a/includes/Exception.php b/includes/Exception.php index 4c7fb6e441..015298d430 100644 --- a/includes/Exception.php +++ b/includes/Exception.php @@ -22,7 +22,8 @@ class MWException extends Exception { function useOutputPage() { return $this->useMessageCache() && !empty( $GLOBALS['wgFullyInitialised'] ) && - ( !empty( $GLOBALS['wgArticle'] ) || ( !empty( $GLOBALS['wgOut'] ) && !$GLOBALS['wgOut']->isArticleRelated() ) ) && + !empty( $GLOBALS['wgOut'] ) && + !$GLOBALS['wgOut']->isArticleRelated() && !empty( $GLOBALS['wgTitle'] ); } diff --git a/includes/Setup.php b/includes/Setup.php index 069c03f8ee..2ae28adbf0 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -443,11 +443,10 @@ if ( !is_object( $wgAuth ) ) { # Placeholders in case of DB error $wgTitle = null; -$wgArticle = null; $wgDeferredUpdateList = array(); -// We need to check for safe_mode, because mail() willl throws an E_NOTICE +// We need to check for safe_mode, because mail() will throw an E_NOTICE // on additional parameters if( !is_null($wgAdditionalMailParams) && wfIniGetBool('safe_mode') ) { $wgAdditionalMailParams = null; diff --git a/includes/Wiki.php b/includes/Wiki.php index 25d220fc00..fe9b0e3097 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -150,7 +150,6 @@ class MediaWiki { // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty. if ( $this->context->title instanceof BadTitle ) { - // Die now before we mess up $wgArticle and the skin stops working throw new ErrorPageError( 'badtitle', 'badtitletext' ); // Interwiki redirects @@ -292,7 +291,7 @@ class MediaWiki { } /** - * Initialize the object to be known as $wgArticle for "standard" actions + * Initialize the main Article object for "standard" actions (view, etc) * Create an Article object for the page, following redirects if needed. * * @return mixed an Article, or a string to redirect to another URL diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 085f3922d2..b0f8235006 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -34,7 +34,7 @@ * Globals used: * objects: $wgLang, $wgContLang * - * NOT $wgArticle, $wgUser or $wgTitle. Keep them away! + * NOT $wgUser or $wgTitle. Keep them away! * * settings: * $wgUseDynamicDates*, $wgInterwikiMagic*, diff --git a/index.php b/index.php index 685b14e0cb..ba325e0dae 100644 --- a/index.php +++ b/index.php @@ -63,82 +63,97 @@ ENDL; # Initialise common code. This gives us access to GlobalFunctions, the AutoLoader, and # the globals $wgRequest, $wgOut, $wgUser, $wgLang and $wgContLang, amongst others; it -# does *not* load $wgTitle or $wgArticle +# does *not* load $wgTitle require ( dirname( __FILE__ ) . '/includes/WebStart.php' ); -wfProfileIn( 'index.php' ); -wfProfileIn( 'index.php-setup' ); - -$maxLag = $wgRequest->getVal( 'maxlag' ); -if ( !is_null( $maxLag ) ) { - $lb = wfGetLB(); // foo()->bar() is not supported in PHP4 - list( $host, $lag ) = $lb->getMaxLag(); - if ( $lag > $maxLag ) { - header( 'HTTP/1.1 503 Service Unavailable' ); - header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) ); - header( 'X-Database-Lag: ' . intval( $lag ) ); - header( 'Content-Type: text/plain' ); - if( $wgShowHostnames ) { - echo "Waiting for $host: $lag seconds lagged\n"; - } else { - echo "Waiting for a database server: $lag seconds lagged\n"; +wfIndexMain(); + +function wfIndexMain() { + global $wgRequest, $wgShowHostnames, $mediaWiki, $wgTitle, $wgUseAjax, $wgUseFileCache; + + wfProfileIn( 'index.php' ); + wfProfileIn( 'index.php-setup' ); + + $maxLag = $wgRequest->getVal( 'maxlag' ); + if ( !is_null( $maxLag ) ) { + $lb = wfGetLB(); // foo()->bar() is not supported in PHP4 + list( $host, $lag ) = $lb->getMaxLag(); + if ( $lag > $maxLag ) { + header( 'HTTP/1.1 503 Service Unavailable' ); + header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) ); + header( 'X-Database-Lag: ' . intval( $lag ) ); + header( 'Content-Type: text/plain' ); + if( $wgShowHostnames ) { + echo "Waiting for $host: $lag seconds lagged\n"; + } else { + echo "Waiting for a database server: $lag seconds lagged\n"; + } + exit; } - exit; } -} -# Initialize MediaWiki base class -$context = RequestContext::getMain(); -$mediaWiki = new MediaWiki( $context ); + # Initialize MediaWiki base class + $context = RequestContext::getMain(); + $mediaWiki = new MediaWiki( $context ); -# Set title from request parameters -$wgTitle = $mediaWiki->getTitle(); -$action = $wgRequest->getVal( 'action', 'view' ); + # Set title from request parameters + $wgTitle = $mediaWiki->getTitle(); + $action = $wgRequest->getVal( 'action', 'view' ); -wfProfileOut( 'index.php-setup' ); + wfProfileOut( 'index.php-setup' ); -# Send Ajax requests to the Ajax dispatcher. -if ( $wgUseAjax && $action == 'ajax' ) { - $dispatcher = new AjaxDispatcher(); - $dispatcher->performAction(); - wfProfileOut( 'index.php' ); - $mediaWiki->restInPeace(); - exit; -} + # Send Ajax requests to the Ajax dispatcher. + if ( $wgUseAjax && $action == 'ajax' ) { + $dispatcher = new AjaxDispatcher(); + $dispatcher->performAction(); + wfProfileOut( 'index.php' ); + $mediaWiki->restInPeace(); + exit; + } -if ( $wgUseFileCache && $wgTitle !== null ) { - wfProfileIn( 'index.php-filecache' ); - // Raw pages should handle cache control on their own, - // even when using file cache. This reduces hits from clients. - if ( $action != 'raw' && HTMLFileCache::useFileCache() ) { - /* Try low-level file cache hit */ - $cache = new HTMLFileCache( $wgTitle, $action ); - if ( $cache->isFileCacheGood( /* Assume up to date */ ) ) { - /* Check incoming headers to see if client has this cached */ - if ( !$context->output->checkLastModified( $cache->fileCacheTime() ) ) { - $cache->loadFromFileCache(); + if ( $wgUseFileCache && $wgTitle !== null ) { + wfProfileIn( 'index.php-filecache' ); + // Raw pages should handle cache control on their own, + // even when using file cache. This reduces hits from clients. + if ( $action != 'raw' && HTMLFileCache::useFileCache() ) { + /* Try low-level file cache hit */ + $cache = new HTMLFileCache( $wgTitle, $action ); + if ( $cache->isFileCacheGood( /* Assume up to date */ ) ) { + /* Check incoming headers to see if client has this cached */ + if ( !$context->output->checkLastModified( $cache->fileCacheTime() ) ) { + $cache->loadFromFileCache(); + } + # Do any stats increment/watchlist stuff + $article = MediaWiki::articleFromTitle( $wgTitle, $context ); + $article->viewUpdates(); + # Tell OutputPage that output is taken care of + $context->output->disable(); + wfProfileOut( 'index.php-filecache' ); + $mediaWiki->finalCleanup(); + wfProfileOut( 'index.php' ); + $mediaWiki->restInPeace(); + exit; } - # Do any stats increment/watchlist stuff - $wgArticle = MediaWiki::articleFromTitle( $wgTitle, $context ); - $wgArticle->viewUpdates(); - # Tell OutputPage that output is taken care of - $context->output->disable(); - wfProfileOut( 'index.php-filecache' ); - $mediaWiki->finalCleanup(); - wfProfileOut( 'index.php' ); - $mediaWiki->restInPeace(); - exit; } + wfProfileOut( 'index.php-filecache' ); } - wfProfileOut( 'index.php-filecache' ); -} -$mediaWiki->performRequestForTitle( $wgArticle ); -$mediaWiki->finalCleanup(); + $mediaWiki->performRequestForTitle( $article ); + + /** + * $wgArticle is deprecated, do not use it. This will possibly be removed + * entirely in 1.20 or 1.21 + * @deprecated since 1.19 + */ + global $wgArticle; + $wgArticle = $article; -wfProfileOut( 'index.php' ); + $mediaWiki->finalCleanup(); -$mediaWiki->restInPeace(); + wfProfileOut( 'index.php' ); + + $mediaWiki->restInPeace(); +} /** * Display something vaguely comprehensible in the event of a totally unrecoverable error. diff --git a/maintenance/rebuildFileCache.php b/maintenance/rebuildFileCache.php index 4bf64621c2..aa1bbbb044 100644 --- a/maintenance/rebuildFileCache.php +++ b/maintenance/rebuildFileCache.php @@ -31,6 +31,9 @@ class RebuildFileCache extends Maintenance { $this->setBatchSize( 100 ); } + /** + * @todo MAKE $wgArticle GO AWAY! This is the absolute LAST use in core + */ public function execute() { global $wgUseFileCache, $wgDisableCounters, $wgContentNamespaces, $wgRequestTime; global $wgTitle, $wgArticle, $wgOut; -- 2.20.1