Per ^demon, follow-up r78260: introduced MediaWiki::getAction() to get the action that will be executed
This commit is contained in:
parent
63ea295de5
commit
fed60b047c
2 changed files with 51 additions and 39 deletions
|
|
@ -97,17 +97,17 @@ class MediaWiki {
|
|||
|
||||
/**
|
||||
* Checks some initial queries
|
||||
* Note that $title here is *not* a Title object, but a string!
|
||||
*
|
||||
* @param $title String
|
||||
* @param $action String
|
||||
* @param $request WebRequest
|
||||
* @return Title object to be $wgTitle
|
||||
*/
|
||||
function checkInitialQueries( $title, $action ) {
|
||||
global $wgRequest, $wgContLang;
|
||||
function checkInitialQueries( WebRequest $request ) {
|
||||
global $wgContLang;
|
||||
|
||||
$curid = $wgRequest->getInt( 'curid' );
|
||||
if( $wgRequest->getCheck( 'search' ) ) {
|
||||
$curid = $request->getInt( 'curid' );
|
||||
$title = $request->getVal( 'title' );
|
||||
|
||||
if( $request->getCheck( 'search' ) ) {
|
||||
// Compatibility with old search URLs which didn't use Special:Search
|
||||
// Just check for presence here, so blank requests still
|
||||
// show the search page when using ugly URLs (bug 8054).
|
||||
|
|
@ -115,7 +115,7 @@ class MediaWiki {
|
|||
} elseif( $curid ) {
|
||||
// URLs like this are generated by RC, because rc_title isn't always accurate
|
||||
$ret = Title::newFromID( $curid );
|
||||
} elseif( $title == '' && $action != 'delete' ) {
|
||||
} elseif( $title == '' && $this->getAction( $request ) != 'delete' ) {
|
||||
$ret = Title::newMainPage();
|
||||
} else {
|
||||
$ret = Title::newFromURL( $title );
|
||||
|
|
@ -127,8 +127,8 @@ class MediaWiki {
|
|||
// 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' );
|
||||
$oldid = $oldid ? $oldid : $wgRequest->getInt( 'diff' );
|
||||
$oldid = $request->getInt( 'oldid' );
|
||||
$oldid = $oldid ? $oldid : $request->getInt( 'diff' );
|
||||
// Allow oldid to override a changed or missing title
|
||||
if( $oldid ) {
|
||||
$rev = Revision::newFromId( $oldid );
|
||||
|
|
@ -173,8 +173,6 @@ class MediaWiki {
|
|||
function handleSpecialCases( &$title, &$output, $request ) {
|
||||
wfProfileIn( __METHOD__ );
|
||||
|
||||
$action = $this->getVal( 'Action' );
|
||||
|
||||
// Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
|
||||
if( is_null($title) || ( ( $title->getDBkey() == '' ) && ( $title->getInterwiki() == '' ) ) ) {
|
||||
$title = SpecialPage::getTitleFor( 'Badtitle' );
|
||||
|
|
@ -202,7 +200,7 @@ class MediaWiki {
|
|||
throw new ErrorPageError( 'badtitle', 'badtitletext' );
|
||||
}
|
||||
// Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
|
||||
} else if ( $action == 'view' && !$request->wasPosted()
|
||||
} else if ( $request->getVal( 'action', 'view' ) == 'view' && !$request->wasPosted()
|
||||
&& ( $request->getVal( 'title' ) === null || $title->getPrefixedDBKey() != $request->getText( 'title' ) )
|
||||
&& !count( array_diff( array_keys( $request->getValues() ), array( 'action', 'title' ) ) ) )
|
||||
{
|
||||
|
|
@ -283,6 +281,41 @@ class MediaWiki {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the action that will be executed, not necesserly the one passed
|
||||
* passed through the "action" parameter. Actions disabled in
|
||||
* $wgDisabledActions will be replaced by "nosuchaction"
|
||||
*
|
||||
* @param $request WebRequest
|
||||
* @return String: action
|
||||
*/
|
||||
public function getAction( WebRequest $request ) {
|
||||
global $wgDisabledActions;
|
||||
|
||||
$action = $request->getVal( 'action', 'view' );
|
||||
|
||||
// Check for disabled actions
|
||||
if( in_array( $action, $wgDisabledActions ) ) {
|
||||
return 'nosuchaction';
|
||||
}
|
||||
|
||||
// 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' ) ) {
|
||||
return 'revisiondelete';
|
||||
} elseif ( $request->getBool( 'revisionmove' ) ) {
|
||||
return 'revisionmove';
|
||||
} else {
|
||||
return 'view';
|
||||
}
|
||||
} elseif ( $action == 'editredlink' ) {
|
||||
return 'edit';
|
||||
}
|
||||
|
||||
return $action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the object to be known as $wgArticle for "standard" actions
|
||||
* Create an Article object for the page, following redirects if needed.
|
||||
|
|
@ -295,7 +328,7 @@ class MediaWiki {
|
|||
function initializeArticle( &$title, &$output, $request ) {
|
||||
wfProfileIn( __METHOD__ );
|
||||
|
||||
$action = $this->getVal( 'action', 'view' );
|
||||
$action = $request->getVal( 'action', 'view' );
|
||||
$article = self::articleFromTitle( $title );
|
||||
// NS_MEDIAWIKI has no redirects.
|
||||
// It is also used for CSS/JS, so performance matters here...
|
||||
|
|
@ -439,23 +472,7 @@ class MediaWiki {
|
|||
return;
|
||||
}
|
||||
|
||||
$action = $this->getVal( 'Action' );
|
||||
if( in_array( $action, $this->getVal( 'DisabledActions', array() ) ) ) {
|
||||
/* No such action; this will switch to the default case */
|
||||
$action = 'nosuchaction';
|
||||
}
|
||||
|
||||
// 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';
|
||||
}
|
||||
}
|
||||
$action = $this->getAction( $request );
|
||||
|
||||
switch( $action ) {
|
||||
case 'view':
|
||||
|
|
@ -511,7 +528,6 @@ class MediaWiki {
|
|||
}
|
||||
/* Continue... */
|
||||
case 'edit':
|
||||
case 'editredlink':
|
||||
if( wfRunHooks( 'CustomEditor', array( $article, $user ) ) ) {
|
||||
$internal = $request->getVal( 'internaledit' );
|
||||
$external = $request->getVal( 'externaledit' );
|
||||
|
|
|
|||
10
index.php
10
index.php
|
|
@ -50,15 +50,13 @@ if( !is_null( $maxLag ) && !$mediaWiki->checkMaxLag( $maxLag ) ) {
|
|||
exit;
|
||||
}
|
||||
|
||||
# Query string fields
|
||||
$action = $wgRequest->getVal( 'action', 'view' );
|
||||
$title = $wgRequest->getVal( 'title' );
|
||||
|
||||
# Set title from request parameters
|
||||
$wgTitle = $mediaWiki->checkInitialQueries( $title, $action );
|
||||
$wgTitle = $mediaWiki->checkInitialQueries( $wgRequest );
|
||||
|
||||
wfProfileOut( 'main-misc-setup' );
|
||||
|
||||
$action = $wgRequest->getVal( 'action' );
|
||||
|
||||
# Send Ajax requests to the Ajax dispatcher.
|
||||
if( $wgUseAjax && $action == 'ajax' ) {
|
||||
$dispatcher = new AjaxDispatcher();
|
||||
|
|
@ -94,8 +92,6 @@ if( $wgUseFileCache && $wgTitle !== null ) {
|
|||
}
|
||||
|
||||
# Setting global variables in mediaWiki
|
||||
$mediaWiki->setVal( 'action', $action );
|
||||
$mediaWiki->setVal( 'DisabledActions', $wgDisabledActions );
|
||||
$mediaWiki->setVal( 'DisableHardRedirects', $wgDisableHardRedirects );
|
||||
$mediaWiki->setVal( 'EnableCreativeCommonsRdf', $wgEnableCreativeCommonsRdf );
|
||||
$mediaWiki->setVal( 'EnableDublinCoreRdf', $wgEnableDublinCoreRdf );
|
||||
|
|
|
|||
Loading…
Reference in a new issue