88 $block = $performer->getBlock();
94 $out->addWikiMsg(
'renameuser-summary' );
101 $userNames = $par !==
null ? explode(
'/', $par, 2 ) : [];
104 $oldName = $request->getText(
'oldusername', $userNames[0] ??
'' );
105 $oldName = trim( str_replace(
'_',
' ', $oldName ) );
106 $oldTitle = $this->titleFactory->makeTitle(
NS_USER, $oldName );
109 $origNewName = $request->getText(
'newusername', $userNames[1] ??
'' );
110 $origNewName = trim( str_replace(
'_',
' ', $origNewName ) );
113 $newTitle = $this->titleFactory->makeTitleSafe(
NS_USER, $this->contentLanguage->ucfirst( $origNewName ) );
114 $newName = $newTitle ? $newTitle->getText() :
'';
116 $reason = $request->getText(
'reason' );
117 $moveChecked = $request->getBool(
'movepages', !$request->wasPosted() );
118 $suppressChecked = $request->getCheck(
'suppressredirect' );
120 if ( $oldName !==
'' && $newName !==
'' && !$request->getCheck(
'confirmaction' ) ) {
121 $warnings = $this->getWarnings( $oldName, $newName );
126 $this->showForm( $oldName, $newName, $warnings, $reason, $moveChecked, $suppressChecked );
128 if ( $request->getText(
'wpEditToken' ) ===
'' ) {
129 # They probably haven't even submitted the form, so don't go further.
133 # Let user read warnings
137 !$request->wasPosted() ||
138 !$performer->matchEditToken( $request->getVal(
'wpEditToken' ) )
140 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-request' )->parse() ) );
145 $out->addHTML( Html::errorBox(
146 $out->msg(
'renameusererrorinvalid' )->params( $request->getText(
'newusername' ) )->parse()
151 if ( $oldName === $newName ) {
152 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-same-user' )->parse() ) );
158 if ( $this->userNameUtils->isTemp( $oldName ) ) {
159 $out->addHTML( Html::errorBox(
160 $out->msg(
'renameuser-error-temp-user' )->plaintextParams( $oldName )->parse()
164 if ( $this->userNameUtils->isTemp( $newName ) ||
165 $this->userNameUtils->isTempReserved( $newName )
167 $out->addHTML( Html::errorBox(
168 $out->msg(
'renameuser-error-temp-user-reserved' )->plaintextParams( $newName )->parse()
174 $oldUser = $this->userFactory->newFromName( $oldName, $this->userFactory::RIGOR_NONE );
175 $newUser = $this->userFactory->newFromName( $newName, $this->userFactory::RIGOR_CREATABLE );
179 $out->addHTML( Html::errorBox(
180 $out->msg(
'renameusererrorinvalid' )->params( $oldTitle->getText() )->parse()
186 $out->addHTML( Html::errorBox(
187 $out->msg(
'renameusererrorinvalid' )->params( $newTitle->getText() )->parse()
195 if ( $oldName !== $this->contentLanguage->ucfirst( $oldName ) ) {
197 $dbr = $this->dbConns->getReplicaDatabase();
198 $uid = $dbr->newSelectQueryBuilder()
199 ->select(
'user_id' )
201 ->where( [
'user_name' => $oldName ] )
202 ->caller( __METHOD__ )
204 if ( $uid ===
false ) {
209 $uid = $oldUser->idForName();
210 $oldTitle = $this->titleFactory->makeTitleSafe(
NS_USER, $oldUser->getName() );
212 $out->addHTML( Html::errorBox(
213 $out->msg(
'renameusererrorinvalid' )->params( $oldName )->parse()
217 $oldName = $oldTitle->getText();
222 $uid = $oldUser->idForName();
226 $out->addHTML( Html::errorBox(
227 $out->msg(
'renameusererrordoesnotexist' )->params( $oldName )->parse()
233 if ( $newUser->idForName() !== 0 ) {
234 $out->addHTML( Html::errorBox(
235 $out->msg(
'renameusererrorexists' )->params( $newName )->parse()
241 if ( $oldUser->equals( $performer ) ) {
242 $out->addHTML( Html::errorBox(
243 $out->msg(
'renameuser-error-self-rename' )->parse()
250 if ( !$this->
getHookRunner()->onRenameUserAbort( $uid, $oldName, $newName ) ) {
256 $oldTitle->getText(),
257 $newTitle->getText(),
260 [
'reason' => $reason ]
262 if ( !$rename->rename() ) {
268 if ( $performer->getId() === $uid ) {
269 $performer->setName( $newTitle->getText() );
273 if ( $moveChecked && $this->permissionManager->userHasRight( $performer,
'move' ) ) {
274 $suppressRedirect = $suppressChecked
275 && $this->permissionManager->userHasRight( $performer,
'suppressredirect' );
276 $this->movePages( $oldTitle, $newTitle, $suppressRedirect );
282 $out->msg(
'renameusersuccess' )
283 ->params( $oldTitle->getText(), $newTitle->getText() )