From cecb985bee3bdd252e1b8dc0bd500b37cd52be01 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 16 May 2007 20:58:53 +0000 Subject: Aktualisierung auf MediaWiki 1.10.0 Plugins angepasst und verbessert kleine Korrekturen am Design --- includes/Wiki.php | 107 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 61 insertions(+), 46 deletions(-) (limited to 'includes/Wiki.php') diff --git a/includes/Wiki.php b/includes/Wiki.php index 06248b35..612e58ee 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -7,14 +7,12 @@ class MediaWiki { var $GET; /* Stores the $_GET variables at time of creation, can be changed */ var $params = array(); - - /** - * Constructor - */ - function MediaWiki () { + + /** Constructor. It just save the $_GET variable */ + function __construct() { $this->GET = $_GET; } - + /** * Stores key/value pairs to circumvent global variables * Note that keys are case-insensitive! @@ -23,7 +21,7 @@ class MediaWiki { $key = strtolower( $key ); $this->params[$key] =& $value; } - + /** * Retrieves key/value pairs to circumvent global variables * Note that keys are case-insensitive! @@ -35,7 +33,7 @@ class MediaWiki { } return $default; } - + /** * Initialization of ... everything @return Article either the object to become $wgArticle, or NULL @@ -57,7 +55,23 @@ class MediaWiki { wfProfileOut( 'MediaWiki::initialize' ); return $article; } - + + function checkMaxLag( $maxLag ) { + global $wgLoadBalancer; + list( $host, $lag ) = $wgLoadBalancer->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' ); + echo "Waiting for $host: $lag seconds lagged\n"; + return false; + } else { + return true; + } + } + + /** * Checks some initial queries * Note that $title here is *not* a Title object, but a string! @@ -66,10 +80,10 @@ class MediaWiki { if ($request->getVal( 'printable' ) == 'yes') { $output->setPrintable(); } - + $ret = NULL ; - - + + if ( '' == $title && 'delete' != $action ) { $ret = Title::newMainPage(); } elseif ( $curid = $request->getInt( 'curid' ) ) { @@ -82,19 +96,19 @@ class MediaWiki { */ if( count($lang->getVariants()) > 1 && !is_null($ret) && $ret->getArticleID() == 0 ) $lang->findVariantLink( $title, $ret ); - + } return $ret ; } - + /** * Checks for search query and anon-cannot-read case */ function preliminaryChecks ( &$title, &$output, $request ) { - + # Debug statement for user levels // print_r($wgUser); - + $search = $request->getText( 'search' ); if( !is_null( $search ) && $search !== '' ) { // Compatibility with old search URLs which didn't use Special:Search @@ -111,16 +125,16 @@ class MediaWiki { $output->output(); exit; } - + } - + /** * Initialize the object to be known as $wgArticle for special cases */ function initializeSpecialCases ( &$title, &$output, $request ) { global $wgRequest; wfProfileIn( 'MediaWiki::initializeSpecialCases' ); - + $search = $this->getVal('Search'); $action = $this->getVal('Action'); if( !$this->getVal('DisableInternalSearch') && !is_null( $search ) && $search !== '' ) { @@ -150,13 +164,13 @@ class MediaWiki { { $targetUrl = $title->getFullURL(); // Redirect to canonical url, make it a 301 to allow caching - global $wgServer, $wgUsePathInfo; + global $wgUsePathInfo; if( $targetUrl == $wgRequest->getFullRequestURL() ) { $message = "Redirect loop detected!\n\n" . "This means the wiki got confused about what page was " . "requested; this sometimes happens when moving a wiki " . "to a new server or changing the server configuration.\n\n"; - + if( $wgUsePathInfo ) { $message .= "The wiki is trying to interpret the page " . "title from the URL path portion (PATH_INFO), which " . @@ -206,7 +220,7 @@ class MediaWiki { // FIXME: where should this go? $title = Title::makeTitle( NS_IMAGE, $title->getDBkey() ); } - + switch( $title->getNamespace() ) { case NS_IMAGE: return new ImagePage( $title ); @@ -216,7 +230,7 @@ class MediaWiki { return new Article( $title ); } } - + /** * Initialize the object to be known as $wgArticle for "standard" actions * Create an Article object for the page, following redirects if needed. @@ -228,17 +242,17 @@ class MediaWiki { function initializeArticle( $title, $request ) { global $wgTitle; wfProfileIn( 'MediaWiki::initializeArticle' ); - + $action = $this->getVal('Action'); $article = $this->articleFromTitle( $title ); - + // Namespace might change when using redirects if( $action == 'view' && !$request->getVal( 'oldid' ) && $request->getVal( 'redirect' ) != 'no' ) { - - $dbr =& wfGetDB(DB_SLAVE); + + $dbr = wfGetDB(DB_SLAVE); $article->loadPageData($article->pageDataFromTitle($dbr, $title)); - + /* Follow redirects only for... redirects */ if ($article->mIsRedirect) { $target = $article->followRedirect(); @@ -290,7 +304,7 @@ class MediaWiki { */ function doUpdates ( &$updates ) { wfProfileIn( 'MediaWiki::doUpdates' ); - $dbw =& wfGetDB( DB_MASTER ); + $dbw = wfGetDB( DB_MASTER ); foreach( $updates as $up ) { $up->doUpdate(); @@ -307,7 +321,7 @@ class MediaWiki { */ function doJobs() { global $wgJobRunRate; - + if ( $wgJobRunRate <= 0 || wfReadOnly() ) { return; } @@ -335,7 +349,7 @@ class MediaWiki { wfDebugLog( 'jobqueue', $output ); } } - + /** * Ends this task peacefully */ @@ -401,24 +415,26 @@ class MediaWiki { showCreditsPage( $article ); break; case 'submit': - if( !$this->getVal( 'CommandLineMode' ) && !$request->checkSessionCookie() ) { + if( session_id() == '' ) { /* Send a cookie so anons get talk message notifications */ - User::SetupSession(); + wfSetupSession(); } /* Continue... */ case 'edit': - $internal = $request->getVal( 'internaledit' ); - $external = $request->getVal( 'externaledit' ); - $section = $request->getVal( 'section' ); - $oldid = $request->getVal( 'oldid' ); - if( !$this->getVal( 'UseExternalEditor' ) || $action=='submit' || $internal || - $section || $oldid || ( !$user->getOption( 'externaleditor' ) && !$external ) ) { - $editor = new EditPage( $article ); - $editor->submit(); - } elseif( $this->getVal( 'UseExternalEditor' ) && ( $external || $user->getOption( 'externaleditor' ) ) ) { - $mode = $request->getVal( 'mode' ); - $extedit = new ExternalEdit( $article, $mode ); - $extedit->edit(); + if( wfRunHooks( 'CustomEditor', array( $article, $user ) ) ) { + $internal = $request->getVal( 'internaledit' ); + $external = $request->getVal( 'externaledit' ); + $section = $request->getVal( 'section' ); + $oldid = $request->getVal( 'oldid' ); + if( !$this->getVal( 'UseExternalEditor' ) || $action=='submit' || $internal || + $section || $oldid || ( !$user->getOption( 'externaleditor' ) && !$external ) ) { + $editor = new EditPage( $article ); + $editor->submit(); + } elseif( $this->getVal( 'UseExternalEditor' ) && ( $external || $user->getOption( 'externaleditor' ) ) ) { + $mode = $request->getVal( 'mode' ); + $extedit = new ExternalEdit( $article, $mode ); + $extedit->edit(); + } } break; case 'history': @@ -440,7 +456,6 @@ class MediaWiki { } wfProfileOut( 'MediaWiki::performAction' ); - } }; /* End of class MediaWiki */ -- cgit v1.2.3-54-g00ecf