MediaWiki
REL1_34
WebInstallerExistingWiki.php
Go to the documentation of this file.
1
<?php
22
class
WebInstallerExistingWiki
extends
WebInstallerPage
{
23
27
public
function
execute
() {
28
// If there is no LocalSettings.php, continue to the installer welcome page
29
$vars =
Installer::getExistingLocalSettings
();
30
if
( !$vars ) {
31
return
'skip'
;
32
}
33
34
// Check if the upgrade key supplied to the user has appeared in LocalSettings.php
35
if
( $vars[
'wgUpgradeKey'
] !==
false
36
&& $this->
getVar
(
'_UpgradeKeySupplied'
)
37
&& $this->
getVar
(
'wgUpgradeKey'
) === $vars[
'wgUpgradeKey'
]
38
) {
39
// It's there, so the user is authorized
40
$status = $this->
handleExistingUpgrade
( $vars );
41
if
( $status->isOK() ) {
42
return
'skip'
;
43
}
else
{
44
$this->
startForm
();
45
$this->parent->showStatusBox( $status );
46
$this->
endForm
(
'continue'
);
47
48
return
'output'
;
49
}
50
}
51
52
// If there is no $wgUpgradeKey, tell the user to add one to LocalSettings.php
53
if
( $vars[
'wgUpgradeKey'
] ===
false
) {
54
if
( $this->
getVar
(
'wgUpgradeKey'
,
false
) ===
false
) {
55
$secretKey = $this->
getVar
(
'wgSecretKey'
);
// preserve $wgSecretKey
56
$this->parent->generateKeys();
57
$this->
setVar
(
'wgSecretKey'
, $secretKey );
58
$this->
setVar
(
'_UpgradeKeySupplied'
,
true
);
59
}
60
$this->
startForm
();
61
$this->
addHTML
( $this->parent->getInfoBox(
62
wfMessage
(
'config-upgrade-key-missing'
,
"<pre dir=\"ltr\">\$wgUpgradeKey = '"
.
63
$this->
getVar
(
'wgUpgradeKey'
) .
"';</pre>"
)->plain()
64
) );
65
$this->
endForm
(
'continue'
);
66
67
return
'output'
;
68
}
69
70
// If there is an upgrade key, but it wasn't supplied, prompt the user to enter it
71
72
$r = $this->parent->request;
73
if
( $r->wasPosted() ) {
74
$key = $r->getText(
'config_wgUpgradeKey'
);
75
if
( !$key || $key !== $vars[
'wgUpgradeKey'
] ) {
76
$this->parent->showError(
'config-localsettings-badkey'
);
77
$this->
showKeyForm
();
78
79
return
'output'
;
80
}
81
// Key was OK
82
$status = $this->
handleExistingUpgrade
( $vars );
83
if
( $status->isOK() ) {
84
return
'continue'
;
85
}
else
{
86
$this->parent->showStatusBox( $status );
87
$this->
showKeyForm
();
88
89
return
'output'
;
90
}
91
}
else
{
92
$this->
showKeyForm
();
93
94
return
'output'
;
95
}
96
}
97
101
protected
function
showKeyForm
() {
102
$this->
startForm
();
103
$this->
addHTML
(
104
$this->parent->getInfoBox(
wfMessage
(
'config-localsettings-upgrade'
)->plain() ) .
105
'<br />'
.
106
$this->parent->getTextBox( [
107
'var'
=>
'wgUpgradeKey'
,
108
'label'
=>
'config-localsettings-key'
,
109
'attribs'
=> [
'autocomplete'
=>
'off'
],
110
] )
111
);
112
$this->
endForm
(
'continue'
);
113
}
114
121
protected
function
importVariables
( $names, $vars ) {
122
$status = Status::newGood();
123
foreach
( $names as $name ) {
124
if
( !isset( $vars[$name] ) ) {
125
$status->fatal(
'config-localsettings-incomplete'
, $name );
126
}
127
$this->
setVar
( $name, $vars[$name] );
128
}
129
130
return
$status;
131
}
132
140
protected
function
handleExistingUpgrade
( $vars ) {
141
// Check $wgDBtype
142
if
( !isset( $vars[
'wgDBtype'
] ) ||
143
!in_array( $vars[
'wgDBtype'
],
Installer::getDBTypes
() )
144
) {
145
return
Status::newFatal(
'config-localsettings-connection-error'
,
''
);
146
}
147
148
// Set the relevant variables from LocalSettings.php
149
$requiredVars = [
'wgDBtype'
];
150
$status = $this->
importVariables
( $requiredVars, $vars );
151
$installer = $this->parent->getDBInstaller();
152
$status->merge( $this->
importVariables
( $installer->getGlobalNames(), $vars ) );
153
if
( !$status->isOK() ) {
154
return
$status;
155
}
156
157
$this->
setVar
(
'_InstallUser'
, $vars[
'wgDBadminuser'
] ?? $vars[
'wgDBuser'
] );
158
$this->
setVar
(
'_InstallPassword'
, $vars[
'wgDBadminpassword'
] ?? $vars[
'wgDBpassword'
] );
159
160
// Test the database connection
161
$status = $installer->getConnection();
162
if
( !$status->isOK() ) {
163
// Adjust the error message to explain things correctly
164
$status->replaceMessage(
'config-connection-error'
,
165
'config-localsettings-connection-error'
);
166
167
return
$status;
168
}
169
170
// All good
171
$this->
setVar
(
'_ExistingDBSettings'
,
true
);
172
173
// Copy $wgAuthenticationTokenVersion too, if it exists
174
$this->
setVar
(
'wgAuthenticationTokenVersion'
,
175
$vars[
'wgAuthenticationTokenVersion'
] ??
null
176
);
177
178
return
$status;
179
}
180
181
}
wfMessage
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
Definition
GlobalFunctions.php:1263
Installer\getExistingLocalSettings
static getExistingLocalSettings()
Determine if LocalSettings.php exists.
Definition
Installer.php:593
Installer\getDBTypes
static getDBTypes()
Get a list of known DB types.
Definition
Installer.php:470
WebInstallerExistingWiki
Definition
WebInstallerExistingWiki.php:22
WebInstallerExistingWiki\importVariables
importVariables( $names, $vars)
Definition
WebInstallerExistingWiki.php:121
WebInstallerExistingWiki\handleExistingUpgrade
handleExistingUpgrade( $vars)
Initiate an upgrade of the existing database.
Definition
WebInstallerExistingWiki.php:140
WebInstallerExistingWiki\showKeyForm
showKeyForm()
Show the "enter key" form.
Definition
WebInstallerExistingWiki.php:101
WebInstallerExistingWiki\execute
execute()
Definition
WebInstallerExistingWiki.php:27
WebInstallerPage
Abstract class to define pages for the web installer.
Definition
WebInstallerPage.php:30
WebInstallerPage\startForm
startForm()
Definition
WebInstallerPage.php:69
WebInstallerPage\setVar
setVar( $name, $value)
Definition
WebInstallerPage.php:160
WebInstallerPage\endForm
endForm( $continue='continue', $back='back')
Definition
WebInstallerPage.php:86
WebInstallerPage\addHTML
addHTML( $html)
Definition
WebInstallerPage.php:65
WebInstallerPage\getVar
getVar( $var, $default=null)
Definition
WebInstallerPage.php:152
includes
installer
WebInstallerExistingWiki.php
Generated on Mon Nov 25 2024 16:05:13 for MediaWiki by
1.10.0