- function __construct( $oldTitle, $newTitle ) {
- global $wgRequest;
- $target = isset($par) ? $par : $wgRequest->getVal( 'target' );
- $this->oldTitle = $oldTitle;
- $this->newTitle = $newTitle;
- $this->reason = $wgRequest->getText( 'wpReason' );
- if ( $wgRequest->wasPosted() ) {
- $this->moveTalk = $wgRequest->getBool( 'wpMovetalk', false );
- $this->fixRedirects = $wgRequest->getBool( 'wpFixRedirects', false );
- $this->leaveRedirect = $wgRequest->getBool( 'wpLeaveRedirect', false );
+ $user = $this->getUser();
+
+ # Check rights
+ $permErrors = $this->oldTitle->getUserPermissionsErrors( 'move', $user );
+ if ( count( $permErrors ) ) {
+ // Auto-block user's IP if the account was "hard" blocked
+ $user->spreadAnyEditBlock();
+ throw new PermissionsError( 'move', $permErrors );
+ }
+
+ $def = !$request->wasPosted();
+
+ $this->reason = $request->getText( 'wpReason' );
+ $this->moveTalk = $request->getBool( 'wpMovetalk', $def );
+ $this->fixRedirects = $request->getBool( 'wpFixRedirects', $def );
+ $this->leaveRedirect = $request->getBool( 'wpLeaveRedirect', $def );
+ $this->moveSubpages = $request->getBool( 'wpMovesubpages', false );
+ $this->deleteAndMove = $request->getBool( 'wpDeleteAndMove' ) && $request->getBool( 'wpConfirm' );
+ $this->moveOverShared = $request->getBool( 'wpMoveOverSharedFile', false );
+ $this->watch = $request->getCheck( 'wpWatch' ) && $user->isLoggedIn();
+
+ if ( 'submit' == $request->getVal( 'action' ) && $request->wasPosted()
+ && $user->matchEditToken( $request->getVal( 'wpEditToken' ) ) ) {
+ $this->doSubmit();