MediaWiki  master
SpecialUserLogout.php
Go to the documentation of this file.
1 <?php
30  function __construct() {
31  parent::__construct( 'Userlogout' );
32  }
33 
34  public function doesWrites() {
35  return true;
36  }
37 
38  public function isListed() {
39  return false;
40  }
41 
42  protected function getGroupName() {
43  return 'login';
44  }
45 
46  protected function getFormFields() {
47  return [];
48  }
49 
50  protected function getDisplayFormat() {
51  return 'ooui';
52  }
53 
54  public function execute( $par ) {
55  if ( $this->getUser()->isAnon() ) {
56  $this->setHeaders();
57  $this->showSuccess();
58  return;
59  }
60 
61  parent::execute( $par );
62  }
63 
64  public function alterForm( HTMLForm $form ) {
65  $form->setTokenSalt( 'logoutToken' );
66  $form->addHeaderText( $this->msg( 'userlogout-continue' ) );
67 
68  $form->addHiddenFields( $this->getRequest()->getValues( 'returnto', 'returntoquery' ) );
69  }
70 
80  public function onSubmit( array $data ) {
81  // Make sure it's possible to log out
83  if ( !$session->canSetUser() ) {
84  throw new ErrorPageError(
85  'cannotlogoutnow-title',
86  'cannotlogoutnow-text',
87  [
88  $session->getProvider()->describe( RequestContext::getMain()->getLanguage() )
89  ]
90  );
91  }
92 
93  $user = $this->getUser();
94 
95  $user->logout();
96  return new Status();
97  }
98 
99  public function onSuccess() {
100  $this->showSuccess();
101 
102  $user = $this->getUser();
103  $oldName = $user->getName();
104  $out = $this->getOutput();
105  // Hook.
106  $injected_html = '';
107  Hooks::run( 'UserLogoutComplete', [ &$user, &$injected_html, $oldName ] );
108  $out->addHTML( $injected_html );
109  }
110 
111  private function showSuccess() {
112  $loginURL = SpecialPage::getTitleFor( 'Userlogin' )->getFullURL(
113  $this->getRequest()->getValues( 'returnto', 'returntoquery' ) );
114 
115  $out = $this->getOutput();
116  $out->addWikiMsg( 'logouttext', $loginURL );
117 
118  $out->returnToMain();
119  }
120 
124  public function requiresUnblock() {
125  return false;
126  }
127 }
setTokenSalt( $salt)
Set the salt for the edit token.
Definition: HTMLForm.php:1036
getOutput()
Get the OutputPage being used for this instance.
Special page which uses an HTMLForm to handle processing.
addHiddenFields(array $fields)
Add an array of hidden fields to the output.
Definition: HTMLForm.php:960
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
static getMain()
Get the RequestContext object associated with the main request.
An error page which can definitely be safely rendered using the OutputPage.
alterForm(HTMLForm $form)
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes! ...
onSubmit(array $data)
Process the form.
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don&#39;t need a full Title object...
Definition: SpecialPage.php:83
static getGlobalSession()
Get the "global" session.
string null $par
The sub-page of the special page.
requiresUnblock()
Let blocked users to log out and come back with their sockpuppets.
getUser()
Shortcut to get the User executing this instance.
getLanguage()
Shortcut to get user&#39;s language.
getRequest()
Get the WebRequest being used for this instance.
Implements Special:Userlogout.
addHeaderText( $msg, $section=null)
Add HTML to the header, inside the form.
Definition: HTMLForm.php:806
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200