X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/includes/specials/SpecialEmailInvalidate.php diff --git a/includes/specials/SpecialEmailInvalidate.php b/includes/specials/SpecialEmailInvalidate.php new file mode 100644 index 00000000..c54abadd --- /dev/null +++ b/includes/specials/SpecialEmailInvalidate.php @@ -0,0 +1,75 @@ +getTransactionProfiler(); + + $this->setHeaders(); + $this->checkReadOnly(); + $this->checkPermissions(); + + $old = $trxProfiler->setSilenced( true ); + $this->attemptInvalidate( $code ); + $trxProfiler->setSilenced( $old ); + } + + /** + * Attempt to invalidate the user's email address and show success or failure + * as needed; if successful, link to main page + * + * @param string $code Confirmation code + */ + private function attemptInvalidate( $code ) { + $user = User::newFromConfirmationCode( $code, User::READ_LATEST ); + if ( !is_object( $user ) ) { + $this->getOutput()->addWikiMsg( 'confirmemail_invalid' ); + + return; + } + + $user->invalidateEmail(); + $user->saveSettings(); + $this->getOutput()->addWikiMsg( 'confirmemail_invalidated' ); + + if ( !$this->getUser()->isLoggedIn() ) { + $this->getOutput()->returnToMain(); + } + } +}