X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FWiki.php;h=0c65b4aaa2bf292ccbfc650978a3cfcbb5356b54;hb=95aea4129be17ff18fdb5727dd091462484ba35f;hp=8fb75ceb6bb70fd2f3c1e581f56065273b27c0ef;hpb=bc1023ac89f9214c6510d97869fb4f280084995f;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Wiki.php b/includes/Wiki.php index 8fb75ceb6b..0c65b4aaa2 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -5,14 +5,10 @@ * @internal documentation reviewed 15 Mar 2010 */ class MediaWiki { - - var $GET; /* Stores the $_GET variables at time of creation, can be changed */ var $params = array(); - /** Constructor. It just save the $_GET variable */ - function __construct() { - $this->GET = $_GET; - } + /** Constructor */ + function __construct() {} /** * Stores key/value pairs to circumvent global variables @@ -114,7 +110,7 @@ class MediaWiki { } $ret = null; if( $curid = $wgRequest->getInt( 'curid' ) ) { - # URLs like this are generated by RC, because rc_title isn't always accurate + // URLs like this are generated by RC, because rc_title isn't always accurate $ret = Title::newFromID( $curid ); } elseif( $title == '' && $action != 'delete' ) { $ret = Title::newMainPage(); @@ -125,7 +121,7 @@ class MediaWiki { if( count( $wgContLang->getVariants() ) > 1 && !is_null( $ret ) && $ret->getArticleID() == 0 ) $wgContLang->findVariantLink( $title, $ret ); } - # For non-special titles, check for implicit titles + // For non-special titles, check for implicit titles if( is_null( $ret ) || $ret->getNamespace() != NS_SPECIAL ) { // We can have urls with just ?diff=,?oldid= or even just ?diff= $oldid = $wgRequest->getInt( 'oldid' ); @@ -156,9 +152,9 @@ class MediaWiki { // Do this above the read whitelist check for security... $title = SpecialPage::getTitleFor( 'Search' ); } - # If the user is not logged in, the Namespace:title of the article must be in - # the Read array in order for the user to see it. (We have to check here to - # catch special pages etc. We check again in Article::view()) + // If the user is not logged in, the Namespace:title of the article must be in + // the Read array in order for the user to see it. (We have to check here to + // catch special pages etc. We check again in Article::view()) if( !is_null( $title ) && !$title->userCanRead() ) { global $wgDeferredUpdateList; $output->loginToUse(); @@ -188,9 +184,10 @@ class MediaWiki { $perferred = $wgContLang->getPreferredVariant( false ); // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty. - if( is_null($title) || ( ($title->getDBkey() == '') && ($title->getInterwiki() == '') ) ) { + if( is_null($title) || ( ( $title->getDBkey() == '' ) && ( $title->getInterwiki() == '' ) ) ) { $title = SpecialPage::getTitleFor( 'Badtitle' ); - # Die now before we mess up $wgArticle and the skin stops working + $output->setTitle( $title ); // bug 21456 + // Die now before we mess up $wgArticle and the skin stops working throw new ErrorPageError( 'badtitle', 'badtitletext' ); // Interwiki redirects @@ -207,16 +204,17 @@ class MediaWiki { $output->redirect( $url ); } else { $title = SpecialPage::getTitleFor( 'Badtitle' ); + $output->setTitle( $title ); // bug 21456 wfProfileOut( __METHOD__ ); throw new ErrorPageError( 'badtitle', 'badtitletext' ); } // Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant } else if( $action == 'view' && !$request->wasPosted() && - ( ( !isset($this->GET['title']) || $title->getPrefixedDBKey() != $this->GET['title'] ) || + ( ( !$request->getVal( 'title' ) || $title->getPrefixedDBKey() != $request->getText( 'title' ) ) || // No valid variant in URL (if the main-language has multi-variants), to ensure // anonymous access would always be redirect to a URL with 'variant' parameter - ( !isset($this->GET['variant']) && $wgContLang->hasVariants() && !$wgUser->isLoggedIn() ) ) && - !count( array_diff( array_keys( $this->GET ), array( 'action', 'title' ) ) ) ) + ( !$request->getVal( 'variant' ) && $wgContLang->hasVariants() && !$wgUser->isLoggedIn() ) ) && + !count( array_diff( array_keys( $request->getValues() ), array( 'action', 'title' ) ) ) ) { if( !$wgUser->isLoggedIn() ) { $pref = $wgContLang->getPreferredVariant( false, $fromHeader = true ); @@ -308,8 +306,8 @@ class MediaWiki { $action = $this->getVal( 'action', 'view' ); $article = self::articleFromTitle( $title ); - # NS_MEDIAWIKI has no redirects. - # It is also used for CSS/JS, so performance matters here... + // NS_MEDIAWIKI has no redirects. + // It is also used for CSS/JS, so performance matters here... if( $title->getNamespace() == NS_MEDIAWIKI ) { wfProfileOut( __METHOD__ ); return $article; @@ -319,11 +317,12 @@ class MediaWiki { $file = ($title->getNamespace() == NS_FILE) ? $article->getFile() : null; if( ( $action == 'view' || $action == 'render' ) // ... for actions that show content && !$request->getVal( 'oldid' ) && // ... and are not old revisions + !$request->getVal( 'diff' ) && // ... and not when showing diff $request->getVal( 'redirect' ) != 'no' && // ... unless explicitly told not to // ... and the article is not a non-redirect image page with associated file !( is_object( $file ) && $file->exists() && !$file->getRedirected() ) ) { - # Give extensions a change to ignore/handle redirects as needed + // Give extensions a change to ignore/handle redirects as needed $ignoreRedirect = $target = false; $dbr = wfGetDB( DB_SLAVE ); @@ -335,7 +334,7 @@ class MediaWiki { // Follow redirects only for... redirects. // If $target is set, then a hook wanted to redirect. if( !$ignoreRedirect && ($target || $article->isRedirect()) ) { - # Is the target already set by an extension? + // Is the target already set by an extension? $target = $target ? $target : $article->followRedirect(); if( is_string( $target ) ) { if( !$this->getVal( 'DisableHardRedirects' ) ) { @@ -372,14 +371,16 @@ class MediaWiki { */ function finalCleanup( &$deferredUpdates, &$output ) { wfProfileIn( __METHOD__ ); - # Now commit any transactions, so that unreported errors after - # output() don't roll back the whole DB transaction + // Now commit any transactions, so that unreported errors after + // output() don't roll back the whole DB transaction $factory = wfGetLBFactory(); $factory->commitMasterChanges(); - # Output everything! + // Output everything! $output->output(); - # Do any deferred jobs + // Do any deferred jobs $this->doUpdates( $deferredUpdates ); + // Close the session so that jobs don't access the current session + session_write_close(); $this->doJobs(); wfProfileOut( __METHOD__ ); } @@ -404,7 +405,7 @@ class MediaWiki { foreach( $updates as $up ) { $up->doUpdate(); - # Commit after every update to prevent lock contention + // Commit after every update to prevent lock contention if( $dbw->trxLevel() ) { $dbw->commit(); } @@ -450,8 +451,9 @@ class MediaWiki { * Ends this task peacefully */ function restInPeace() { + MessageCache::logMessages(); wfLogProfilingData(); - # Commit and close up! + // Commit and close up! $factory = wfGetLBFactory(); $factory->commitMasterChanges(); $factory->shutdown(); @@ -481,11 +483,13 @@ class MediaWiki { $action = 'nosuchaction'; } - # Workaround for bug #20966: inability of IE to provide an action dependent - # on which submit button is clicked. + // Workaround for bug #20966: inability of IE to provide an action dependent + // on which submit button is clicked. if ( $action === 'historysubmit' ) { if ( $request->getBool( 'revisiondelete' ) ) { $action = 'revisiondelete'; + } elseif ( $request->getBool( 'revisionmove' ) ) { + $action = 'revisionmove'; } else { $action = 'view'; } @@ -570,10 +574,15 @@ class MediaWiki { $history->history(); break; case 'revisiondelete': - # For show/hide submission from history page + // For show/hide submission from history page $special = SpecialPage::getPage( 'Revisiondelete' ); $special->execute( '' ); break; + case 'revisionmove': + // For revision move submission from history page + $special = SpecialPage::getPage( 'RevisionMove' ); + $special->execute( '' ); + break; default: if( wfRunHooks( 'UnknownAction', array( $action, $article ) ) ) { $output->showErrorPage( 'nosuchaction', 'nosuchactiontext' ); @@ -583,4 +592,4 @@ class MediaWiki { } -}; /* End of class MediaWiki */ +}