MediaWiki REL1_34
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
82 $session = MediaWiki\Session\SessionManager::getGlobalSession();
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}
An error page which can definitely be safely rendered using the OutputPage.
Special page which uses an HTMLForm to handle processing.
string null $par
The sub-page of the special page.
Object handling generic submission, CSRF protection, layout and other logic for UI forms in a reusabl...
Definition HTMLForm.php:131
addHeaderText( $msg, $section=null)
Add HTML to the header, inside the form.
Definition HTMLForm.php:802
setTokenSalt( $salt)
Set the salt for the edit token.
addHiddenFields(array $fields)
Add an array of hidden fields to the output.
Definition HTMLForm.php:956
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes!
getOutput()
Get the OutputPage being used for this instance.
getUser()
Shortcut to get the User executing this instance.
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,...
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
getRequest()
Get the WebRequest being used for this instance.
Implements Special:Userlogout.
onSuccess()
Do something exciting on successful processing of the form, most likely to show a confirmation messag...
alterForm(HTMLForm $form)
Play with the HTMLForm if you need to more substantially.
getDisplayFormat()
Get display format for the form.
isListed()
Whether this special page is listed in Special:SpecialPages.
doesWrites()
Indicates whether this special page may perform database writes.
execute( $par)
Basic SpecialPage workflow: get a form, send it to the user; get some data back,.
onSubmit(array $data)
Process the form.
getFormFields()
Get an HTMLForm descriptor array.
requiresUnblock()
Let blocked users to log out and come back with their sockpuppets.
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
Generic operation result class Has warning/error list, boolean status and arbitrary value.
Definition Status.php:40