* @since 1.25
*/
class SpecialPageAction extends FormlessAction {
-
/**
* @var array A mapping of action names to special page names.
*/
if ( isset( self::$actionToSpecialPageMapping[$actionName] ) ) {
return $actionName;
}
+
return 'nosuchaction';
}
}
public function show() {
- $action = self::getName();
- if ( $action === 'nosuchaction' ) {
- throw new ErrorPageError( $this->msg( 'nosuchaction' ), $this->msg( 'nosuchactiontext' ) );
+ $special = $this->getSpecialPage();
+ if ( !$special ) {
+ throw new ErrorPageError(
+ $this->msg( 'nosuchaction' ), $this->msg( 'nosuchactiontext' ) );
}
- // map actions to (whitelisted) special pages
- $special = SpecialPageFactory::getPage( self::$actionToSpecialPageMapping[$action] );
$special->setContext( $this->getContext() );
$special->getContext()->setTitle( $special->getPageTitle() );
$special->run( '' );
}
+
+ public function doesWrites() {
+ $special = $this->getSpecialPage();
+
+ return $special ? $special->doesWrites() : false;
+ }
+
+ /**
+ * @return SpecialPage|null
+ */
+ protected function getSpecialPage() {
+ $action = $this->getName();
+ if ( $action === 'nosuchaction' ) {
+ return null;
+ }
+
+ // map actions to (whitelisted) special pages
+ return SpecialPageFactory::getPage( self::$actionToSpecialPageMapping[$action] );
+ }
}