From 9a97067cd0b822e9a855d728e8f8c79ad53319ee Mon Sep 17 00:00:00 2001 From: Rob Church Date: Fri, 5 May 2006 16:15:03 +0000 Subject: [PATCH] Rewrite Special:Confirmemail so it's not retarded --- includes/SpecialConfirmemail.php | 173 +++++++++++----------------- includes/templates/Confirmemail.php | 40 ------- 2 files changed, 69 insertions(+), 144 deletions(-) delete mode 100644 includes/templates/Confirmemail.php diff --git a/includes/SpecialConfirmemail.php b/includes/SpecialConfirmemail.php index 7143d9d92b..9837c2ee82 100644 --- a/includes/SpecialConfirmemail.php +++ b/includes/SpecialConfirmemail.php @@ -1,124 +1,89 @@ */ - -/** @todo document */ -function wfSpecialConfirmemail( $code ) { - $form = new ConfirmationForm(); - $form->show( $code ); + +/** + * Main execution point + * + * @param $par Parameters passed to the page + */ +function wfSpecialConfirmemail( $par ) { + $form = new EmailConfirmation(); + $form->execute( $par ); } -/** @package MediaWiki */ -class ConfirmationForm { - /** */ - function show( $code ) { - global $wgUser; - if( !$wgUser->isLoggedIn() ) { - $this->showNeedLogin(); - } elseif( empty( $code ) ) { - $this->showEmpty( $this->checkAndSend() ); - } else { - $this->showCode( $code ); - } - } - - function showNeedLogin() { - global $wgOut, $wgUser; - - $title = Title::makeTitle( NS_SPECIAL, 'Userlogin' ); - $self = Title::makeTitle( NS_SPECIAL, 'Confirmemail' ); - $skin = $wgUser->getSkin(); - $llink = $skin->makeKnownLinkObj( $title, wfMsgHtml( 'loginreqlink' ), 'returnto=' . $self->getPrefixedUrl() ); - - $wgOut->setPageTitle( wfMsg( 'confirmemail' ) ); - $wgOut->addHtml( wfMsgWikiHtml( 'confirmemail_needlogin', $llink ) ); - return; - } - - /** */ - function showCode( $code ) { - $user = User::newFromConfirmationCode( $code ); - if( is_null( $user ) ) { - $this->showInvalidCode(); +class EmailConfirmation extends SpecialPage { + + function execute( $code ) { + global $wgUser, $wgOut; + #$this->setHeaders(); + if( empty( $code ) ) { + if( $wgUser->isLoggedIn() ) { + $this->showRequestForm(); + } else { + $title = Title::makeTitle( NS_SPECIAL, 'Userlogin' ); + $self = Title::makeTitle( NS_SPECIAL, 'Confirmemail' ); + $skin = $wgUser->getSkin(); + $llink = $skin->makeKnownLinkObj( $title, wfMsgHtml( 'loginreqlink' ), 'returnto=' . $self->getPrefixedUrl() ); + $wgOut->addHtml( wfMsgWikiHtml( 'confirmemail_needlogin', $llink ) ); + } } else { - $this->confirmAndShow( $user ); + $this->attemptConfirm( $code ); } } - - /** */ - function confirmAndShow( $user ) { - if( $user->confirmEmail() ) { - $this->showSuccess(); + + function showRequestForm() { + global $wgOut, $wgUser, $wgLang, $wgRequest; + if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getText( 'token' ) ) ) { + $message = $wgUser->sendConfirmationMail() ? 'confirmemail_sent' : 'confirmemail_sendfailed'; + $wgOut->addWikiText( wfMsg( $message ) ); } else { - $this->showError(); - } + if( $wgUser->isEmailConfirmed() ) { + $time = $wgLang->timeAndDate( $wgUser->mEmailAuthenticated, true ); + $wgOut->addWikiText( wfMsg( 'emailauthenticated', $time ) ); + } + $wgOut->addWikiText( wfMsg( 'confirmemail_text' ) ); + $self = Title::makeTitle( NS_SPECIAL, 'Confirmemail' ); + $form = wfOpenElement( 'form', array( 'method' => 'post', 'action' => $self->getLocalUrl() ) ); + $form .= wfHidden( 'token', $wgUser->editToken() ); + $form .= wfSubmitButton( wfMsgHtml( 'confirmemail_send' ) ); + $form .= wfCloseElement( 'form' ); + $wgOut->addHtml( $form ); + } } - - /** */ - function checkAndSend() { - global $wgUser, $wgRequest; - if( $wgRequest->wasPosted() && - $wgUser->isLoggedIn() && - $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) { - $result = $wgUser->sendConfirmationMail(); - if( WikiError::isError( $result ) ) { - return 'confirmemail_sendfailed'; + + /** + * Attempt to confirm the user's email address and show success or failure + * as needed; if successful, take the user to log in + * + * @param $code Confirmation code + */ + function attemptConfirm( $code ) { + global $wgUser, $wgOut; + $user = User::newFromConfirmationCode( $code ); + if( is_object( $user ) ) { + if( $user->confirmEmail() ) { + $message = $wgUser->isLoggedIn() ? 'confirmemail_loggedin' : 'confirmemail_success'; + $wgOut->addWikiText( wfMsg( $message ) ); + if( !$wgUser->isLoggedIn() ) { + $title = Title::makeTitle( NS_SPECIAL, 'Userlogin' ); + $wgOut->returnToMain( true, $title->getPrefixedText() ); + } } else { - return 'confirmemail_sent'; + $wgOut->addWikiText( 'confirmemail_error' ); } } else { - # boo - return ''; - } - } - - /** */ - function showEmpty( $err ) { - require_once( 'templates/Confirmemail.php' ); - global $wgOut, $wgUser; - - $tpl = new ConfirmemailTemplate(); - $tpl->set( 'error', $err ); - $tpl->set( 'edittoken', $wgUser->editToken() ); - - $title = Title::makeTitle( NS_SPECIAL, 'Confirmemail' ); - $tpl->set( 'action', $title->getLocalUrl() ); - - - $wgOut->addTemplate( $tpl ); - } - - /** */ - function showInvalidCode() { - global $wgOut; - $wgOut->addWikiText( wfMsg( 'confirmemail_invalid' ) ); - } - - /** */ - function showError() { - global $wgOut; - $wgOut->addWikiText( wfMsg( 'confirmemail_error' ) ); - } - - /** */ - function showSuccess() { - global $wgOut, $wgRequest, $wgUser; - - if( $wgUser->isLoggedIn() ) { - $wgOut->addWikiText( wfMsg( 'confirmemail_loggedin' ) ); - } else { - $wgOut->addWikiText( wfMsg( 'confirmemail_success' ) ); - require_once( 'SpecialUserlogin.php' ); - $form = new LoginForm( $wgRequest ); - $form->execute(); + $wgOut->addWikiText( 'confirmemail_invalid' ); } } + } ?> diff --git a/includes/templates/Confirmemail.php b/includes/templates/Confirmemail.php deleted file mode 100644 index 07b2a64e8e..0000000000 --- a/includes/templates/Confirmemail.php +++ /dev/null @@ -1,40 +0,0 @@ -data['error'] ) { -?> -
msgWiki( $this->data['error']) ?>
- -
- msgWiki( 'confirmemail_text' ) ?> -
- -
- - - - - - - -
-
- \ No newline at end of file -- 2.20.1