diff options
Diffstat (limited to 'includes/api/ApiMove.php')
-rw-r--r-- | includes/api/ApiMove.php | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/includes/api/ApiMove.php b/includes/api/ApiMove.php index f0a25e4a..9d73562b 100644 --- a/includes/api/ApiMove.php +++ b/includes/api/ApiMove.php @@ -4,7 +4,7 @@ * * Created on Oct 31, 2007 * - * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@gmail.com + * Copyright © 2007 Roan Kattouw "<Firstname>.<Lastname>@gmail.com" * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,9 +37,6 @@ class ApiMove extends ApiBase { public function execute() { $user = $this->getUser(); $params = $this->extractRequestParams(); - if ( is_null( $params['reason'] ) ) { - $params['reason'] = ''; - } $this->requireOnlyOneParameter( $params, 'from', 'fromid' ); @@ -78,6 +75,7 @@ class ApiMove extends ApiBase { } // Move the page + $toTitleExists = $toTitle->exists(); $retval = $fromTitle->moveTo( $toTitle, true, $params['reason'], !$params['noredirect'] ); if ( $retval !== true ) { $this->dieUsageMsg( reset( $retval ) ); @@ -87,13 +85,20 @@ class ApiMove extends ApiBase { if ( !$params['noredirect'] || !$user->isAllowed( 'suppressredirect' ) ) { $r['redirectcreated'] = ''; } + if( $toTitleExists ) { + $r['moveoverredirect'] = ''; + } // Move the talk page if ( $params['movetalk'] && $fromTalk->exists() && !$fromTitle->isTalkPage() ) { + $toTalkExists = $toTalk->exists(); $retval = $fromTalk->moveTo( $toTalk, true, $params['reason'], !$params['noredirect'] ); if ( $retval === true ) { $r['talkfrom'] = $fromTalk->getPrefixedText(); $r['talkto'] = $toTalk->getPrefixedText(); + if( $toTalkExists ) { + $r['talkmoveoverredirect'] = ''; + } } else { // We're not gonna dieUsage() on failure, since we already changed something $parsed = $this->parseMsg( reset( $retval ) ); @@ -180,8 +185,11 @@ class ApiMove extends ApiBase { ApiBase::PARAM_TYPE => 'string', ApiBase::PARAM_REQUIRED => true ), - 'token' => null, - 'reason' => null, + 'token' => array( + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true + ), + 'reason' => '', 'movetalk' => false, 'movesubpages' => false, 'noredirect' => false, @@ -213,7 +221,7 @@ class ApiMove extends ApiBase { 'fromid' => "Page ID of the page you want to move. Cannot be used together with {$p}from", 'to' => 'Title you want to rename the page to', 'token' => 'A move token previously retrieved through prop=info', - 'reason' => 'Reason for the move (optional)', + 'reason' => 'Reason for the move', 'movetalk' => 'Move the talk page, if it exists', 'movesubpages' => 'Move subpages, if applicable', 'noredirect' => 'Don\'t create a redirect', @@ -224,6 +232,35 @@ class ApiMove extends ApiBase { ); } + public function getResultProperties() { + return array( + '' => array( + 'from' => 'string', + 'to' => 'string', + 'reason' => 'string', + 'redirectcreated' => 'boolean', + 'moveoverredirect' => 'boolean', + 'talkfrom' => array( + ApiBase::PROP_TYPE => 'string', + ApiBase::PROP_NULLABLE => true + ), + 'talkto' => array( + ApiBase::PROP_TYPE => 'string', + ApiBase::PROP_NULLABLE => true + ), + 'talkmoveoverredirect' => 'boolean', + 'talkmove-error-code' => array( + ApiBase::PROP_TYPE => 'string', + ApiBase::PROP_NULLABLE => true + ), + 'talkmove-error-info' => array( + ApiBase::PROP_TYPE => 'string', + ApiBase::PROP_NULLABLE => true + ) + ) + ); + } + public function getDescription() { return 'Move a page'; } |