MediaWiki  master
SpecialEmailInvalidate.php
Go to the documentation of this file.
1 <?php
31  public function __construct() {
32  parent::__construct( 'Invalidateemail', 'editmyprivateinfo' );
33  }
34 
35  public function doesWrites() {
36  return true;
37  }
38 
39  function execute( $code ) {
40  // Ignore things like master queries/connections on GET requests.
41  // It's very convenient to just allow formless link usage.
42  $trxProfiler = Profiler::instance()->getTransactionProfiler();
43 
44  $this->setHeaders();
45  $this->checkReadOnly();
46  $this->checkPermissions();
47 
48  $old = $trxProfiler->setSilenced( true );
49  $this->attemptInvalidate( $code );
50  $trxProfiler->setSilenced( $old );
51  }
52 
59  private function attemptInvalidate( $code ) {
60  $user = User::newFromConfirmationCode( $code, User::READ_LATEST );
61  if ( !is_object( $user ) ) {
62  $this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
63 
64  return;
65  }
66 
67  $user->invalidateEmail();
68  $user->saveSettings();
69  $this->getOutput()->addWikiMsg( 'confirmemail_invalidated' );
70 
71  if ( !$this->getUser()->isLoggedIn() ) {
72  $this->getOutput()->returnToMain();
73  }
74  }
75 }
Shortcut to construct a special page which is unlisted by default.
static instance()
Singleton.
Definition: Profiler.php:63
static newFromConfirmationCode( $code, $flags=0)
Factory method to fetch whichever user has a given email confirmation code.
Definition: User.php:650
getOutput()
Get the OutputPage being used for this instance.
attemptInvalidate( $code)
Attempt to invalidate the user&#39;s email address and show success or failure as needed; if successful...
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes! ...
getUser()
Shortcut to get the User executing this instance.
checkPermissions()
Checks if userCanExecute, and if not throws a PermissionsError.
checkReadOnly()
If the wiki is currently in readonly mode, throws a ReadOnlyError.
Special page allows users to cancel an email confirmation using the e-mail confirmation code...