MediaWiki  master
SpecialUserLogout.php
Go to the documentation of this file.
1 <?php
30  public 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  $this->getHookRunner()->onUserLogoutComplete( $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 
125  public function requiresUnblock() {
126  return false;
127  }
128 }
SpecialUserLogout\requiresUnblock
requiresUnblock()
Let blocked users to log out and come back with their sockpuppets.
Definition: SpecialUserLogout.php:125
SpecialPage\msg
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
Definition: SpecialPage.php:828
SpecialPage\getOutput
getOutput()
Get the OutputPage being used for this instance.
Definition: SpecialPage.php:744
SpecialUserLogout\alterForm
alterForm(HTMLForm $form)
Play with the HTMLForm if you need to more substantially.
Definition: SpecialUserLogout.php:64
HTMLForm\addHeaderText
addHeaderText( $msg, $section=null)
Add HTML to the header, inside the form.
Definition: HTMLForm.php:819
SpecialUserLogout\getFormFields
getFormFields()
Get an HTMLForm descriptor array.
Definition: SpecialUserLogout.php:46
SpecialUserLogout\onSuccess
onSuccess()
Do something exciting on successful processing of the form, most likely to show a confirmation messag...
Definition: SpecialUserLogout.php:99
HTMLForm\setTokenSalt
setTokenSalt( $salt)
Set the salt for the edit token.
Definition: HTMLForm.php:1047
FormSpecialPage
Special page which uses an HTMLForm to handle processing.
Definition: FormSpecialPage.php:31
SpecialPage\getTitleFor
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don't need a full Title object,...
Definition: SpecialPage.php:92
SpecialUserLogout\showSuccess
showSuccess()
Definition: SpecialUserLogout.php:111
Status
Generic operation result class Has warning/error list, boolean status and arbitrary value.
Definition: Status.php:44
SpecialPage\getHookRunner
getHookRunner()
Definition: SpecialPage.php:1011
SpecialUserLogout\onSubmit
onSubmit(array $data)
Process the form.
Definition: SpecialUserLogout.php:80
SpecialPage\setHeaders
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes!...
Definition: SpecialPage.php:571
SpecialPage\getUser
getUser()
Shortcut to get the User executing this instance.
Definition: SpecialPage.php:754
SpecialUserLogout\doesWrites
doesWrites()
Indicates whether this special page may perform database writes.
Definition: SpecialUserLogout.php:34
FormSpecialPage\$par
string null $par
The sub-page of the special page.
Definition: FormSpecialPage.php:36
MediaWiki\Session\SessionManager\getGlobalSession
static getGlobalSession()
Get the "global" session.
Definition: SessionManager.php:114
SpecialPage\getRequest
getRequest()
Get the WebRequest being used for this instance.
Definition: SpecialPage.php:734
RequestContext\getMain
static getMain()
Get the RequestContext object associated with the main request.
Definition: RequestContext.php:451
SpecialUserLogout
Implements Special:Userlogout.
Definition: SpecialUserLogout.php:29
SpecialUserLogout\getDisplayFormat
getDisplayFormat()
Get display format for the form.
Definition: SpecialUserLogout.php:50
HTMLForm\addHiddenFields
addHiddenFields(array $fields)
Add an array of hidden fields to the output.
Definition: HTMLForm.php:974
SpecialUserLogout\getGroupName
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
Definition: SpecialUserLogout.php:42
SpecialUserLogout\isListed
isListed()
Whether this special page is listed in Special:SpecialPages Stable to override.
Definition: SpecialUserLogout.php:38
ErrorPageError
An error page which can definitely be safely rendered using the OutputPage.
Definition: ErrorPageError.php:30
SpecialUserLogout\execute
execute( $par)
Basic SpecialPage workflow: get a form, send it to the user; get some data back,.
Definition: SpecialUserLogout.php:54
SpecialUserLogout\__construct
__construct()
Definition: SpecialUserLogout.php:30
HTMLForm
Object handling generic submission, CSRF protection, layout and other logic for UI forms in a reusabl...
Definition: HTMLForm.php:135