70 $block = $performer->getBlock();
76 $out->addWikiMsg(
'renameuser-summary' );
83 $userNames = $par !==
null ? explode(
'/', $par, 2 ) : [];
86 $oldName = $request->getText(
'oldusername', $userNames[0] ??
'' );
87 $oldName = trim( str_replace(
'_',
' ', $oldName ) );
88 $oldTitle = $this->titleFactory->makeTitle(
NS_USER, $oldName );
91 $origNewName = $request->getText(
'newusername', $userNames[1] ??
'' );
92 $origNewName = trim( str_replace(
'_',
' ', $origNewName ) );
96 $newName = $newTitle ? $newTitle->getText() :
'';
98 $reason = $request->getText(
'reason' );
99 $moveChecked = $request->getBool(
'movepages', !$request->wasPosted() );
100 $suppressChecked = $request->getCheck(
'suppressredirect' );
102 if ( $oldName !==
'' && $newName !==
'' && !$request->getCheck(
'confirmaction' ) ) {
103 $warnings = $this->getWarnings( $oldName, $newName );
108 $this->showForm( $oldName, $newName, $warnings, $reason, $moveChecked, $suppressChecked );
110 if ( $request->getText(
'wpEditToken' ) ===
'' ) {
111 # They probably haven't even submitted the form, so don't go further.
115 # Let user read warnings
119 !$request->wasPosted() ||
120 !$performer->matchEditToken( $request->getVal(
'wpEditToken' ) )
122 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-request' )->parse() ) );
127 $out->addHTML( Html::errorBox(
128 $out->msg(
'renameusererrorinvalid' )->params( $request->getText(
'newusername' ) )->parse()
133 if ( $oldName === $newName ) {
134 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-same-user' )->parse() ) );
140 $oldUser = $this->userFactory->newFromName( $oldName, $this->userFactory::RIGOR_NONE );
141 $newUser = $this->userFactory->newFromName( $newName, $this->userFactory::RIGOR_CREATABLE );
145 $out->addHTML( Html::errorBox(
146 $out->msg(
'renameusererrorinvalid' )->params( $oldTitle->getText() )->parse()
152 $out->addHTML( Html::errorBox(
153 $out->msg(
'renameusererrorinvalid' )->params( $newTitle->getText() )->parse()
163 $dbr = $this->dbConns->getReplicaDatabase();
164 $uid = $dbr->newSelectQueryBuilder()
165 ->select(
'user_id' )
167 ->where( [
'user_name' => $oldName ] )
168 ->caller( __METHOD__ )
170 if ( $uid ===
false ) {
175 $uid = $oldUser->idForName();
176 $oldTitle = $this->titleFactory->makeTitleSafe(
NS_USER, $oldUser->getName() );
178 $out->addHTML( Html::errorBox(
179 $out->msg(
'renameusererrorinvalid' )->params( $oldName )->parse()
183 $oldName = $oldTitle->getText();
188 $uid = $oldUser->idForName();
192 $out->addHTML( Html::errorBox(
193 $out->msg(
'renameusererrordoesnotexist' )->params( $oldName )->parse()
199 if ( $newUser->idForName() !== 0 ) {
200 $out->addHTML( Html::errorBox(
201 $out->msg(
'renameusererrorexists' )->params( $newName )->parse()
211 if ( !$this->permissionManager->userHasRight( $performer,
'renameuser' ) ) {
214 if ( $this->userFactory->isUserTableShared()
215 && !$this->permissionManager->userHasRight( $performer,
'renameuser-global' ) ) {
216 $out->addHTML( Html::errorBox( $out->msg(
'renameuser-error-global-rights' )->parse() ) );
221 if ( !$this->
getHookRunner()->onRenameUserAbort( $uid, $oldName, $newName ) ) {
225 $rename = $this->renameUserFactory->newRenameUser( $performer, $oldUser, $newName, $reason, [
226 'movePages' => $moveChecked,
227 'suppressRedirect' => $suppressChecked,
229 $status = $rename->rename();
231 if ( $status->isGood() ) {
235 $out->msg(
'renameusersuccess' )
236 ->params( $oldTitle->getText(), $newTitle->getText() )
243 foreach ( $status->getMessages() as $msg ) {
244 $outHtml = $outHtml . $out->msg( $msg )->parse() .
'<br/>';
246 if ( $status->isOK() ) {
247 $out->addHTML( Html::warningBox( $outHtml ) );
249 $out->addHTML( Html::errorBox( $outHtml ) );