86 $block = $performer->getBlock();
92 $out->addWikiMsg(
'renameuser-summary' );
99 $userNames = $par !==
null ? explode(
'/', $par, 2 ) : [];
102 $oldName = $request->getText(
'oldusername', $userNames[0] ??
'' );
103 $oldName = trim( str_replace(
'_',
' ', $oldName ) );
104 $oldTitle = $this->titleFactory->makeTitle(
NS_USER, $oldName );
107 $origNewName = $request->getText(
'newusername', $userNames[1] ??
'' );
108 $origNewName = trim( str_replace(
'_',
' ', $origNewName ) );
112 $newName = $newTitle ? $newTitle->getText() :
'';
114 $reason = $request->getText(
'reason' );
115 $moveChecked = $request->getBool(
'movepages', !$request->wasPosted() );
116 $suppressChecked = $request->getCheck(
'suppressredirect' );
118 if ( $oldName !==
'' && $newName !==
'' && !$request->getCheck(
'confirmaction' ) ) {
119 $warnings = $this->getWarnings( $oldName, $newName );
124 $this->showForm( $oldName, $newName, $warnings, $reason, $moveChecked, $suppressChecked );
126 if ( $request->getText(
'wpEditToken' ) ===
'' ) {
127 # They probably haven't even submitted the form, so don't go further.
131 # Let user read warnings
135 !$request->wasPosted() ||
136 !$performer->matchEditToken( $request->getVal(
'wpEditToken' ) )
138 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-request' )->parse() ) );
143 $out->addHTML( Html::errorBox(
144 $out->msg(
'renameusererrorinvalid' )->params( $request->getText(
'newusername' ) )->parse()
149 if ( $oldName === $newName ) {
150 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-same-user' )->parse() ) );
156 if ( $this->userNameUtils->isTemp( $oldName ) ) {
157 $out->addHTML( Html::errorBox(
158 $out->msg(
'renameuser-error-temp-user' )->plaintextParams( $oldName )->parse()
162 if ( $this->userNameUtils->isTemp( $newName ) ||
163 $this->userNameUtils->isTempReserved( $newName )
165 $out->addHTML( Html::errorBox(
166 $out->msg(
'renameuser-error-temp-user-reserved' )->plaintextParams( $newName )->parse()
172 $oldUser = $this->userFactory->newFromName( $oldName, $this->userFactory::RIGOR_NONE );
173 $newUser = $this->userFactory->newFromName( $newName, $this->userFactory::RIGOR_CREATABLE );
177 $out->addHTML( Html::errorBox(
178 $out->msg(
'renameusererrorinvalid' )->params( $oldTitle->getText() )->parse()
184 $out->addHTML( Html::errorBox(
185 $out->msg(
'renameusererrorinvalid' )->params( $newTitle->getText() )->parse()
195 $dbr = $this->dbConns->getReplicaDatabase();
196 $uid = $dbr->newSelectQueryBuilder()
197 ->select(
'user_id' )
199 ->where( [
'user_name' => $oldName ] )
200 ->caller( __METHOD__ )
202 if ( $uid ===
false ) {
207 $uid = $oldUser->idForName();
208 $oldTitle = $this->titleFactory->makeTitleSafe(
NS_USER, $oldUser->getName() );
210 $out->addHTML( Html::errorBox(
211 $out->msg(
'renameusererrorinvalid' )->params( $oldName )->parse()
215 $oldName = $oldTitle->getText();
220 $uid = $oldUser->idForName();
224 $out->addHTML( Html::errorBox(
225 $out->msg(
'renameusererrordoesnotexist' )->params( $oldName )->parse()
231 if ( $newUser->idForName() !== 0 ) {
232 $out->addHTML( Html::errorBox(
233 $out->msg(
'renameusererrorexists' )->params( $newName )->parse()
240 if ( !$this->
getHookRunner()->onRenameUserAbort( $uid, $oldName, $newName ) ) {
246 $oldTitle->getText(),
247 $newTitle->getText(),
250 [
'reason' => $reason ]
252 if ( !$rename->rename() ) {
258 if ( $performer->getId() === $uid ) {
259 $performer->setName( $newTitle->getText() );
263 if ( $moveChecked && $this->permissionManager->userHasRight( $performer,
'move' ) ) {
264 $suppressRedirect = $suppressChecked
265 && $this->permissionManager->userHasRight( $performer,
'suppressredirect' );
266 $this->movePages( $oldTitle, $newTitle, $suppressRedirect );
272 $out->msg(
'renameusersuccess' )
273 ->params( $oldTitle->getText(), $newTitle->getText() )