summaryrefslogtreecommitdiff
path: root/www/wiki/includes/installer/WebInstallerUpgrade.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/includes/installer/WebInstallerUpgrade.php')
-rw-r--r--www/wiki/includes/installer/WebInstallerUpgrade.php110
1 files changed, 110 insertions, 0 deletions
diff --git a/www/wiki/includes/installer/WebInstallerUpgrade.php b/www/wiki/includes/installer/WebInstallerUpgrade.php
new file mode 100644
index 00000000..bf732a4b
--- /dev/null
+++ b/www/wiki/includes/installer/WebInstallerUpgrade.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Deployment
+ */
+
+class WebInstallerUpgrade extends WebInstallerPage {
+
+ /**
+ * @return bool Always true.
+ */
+ public function isSlow() {
+ return true;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function execute() {
+ if ( $this->getVar( '_UpgradeDone' ) ) {
+ // Allow regeneration of LocalSettings.php, unless we are working
+ // from a pre-existing LocalSettings.php file and we want to avoid
+ // leaking its contents
+ if ( $this->parent->request->wasPosted() && !$this->getVar( '_ExistingDBSettings' ) ) {
+ // Done message acknowledged
+ return 'continue';
+ } else {
+ // Back button click
+ // Show the done message again
+ // Make them click back again if they want to do the upgrade again
+ $this->showDoneMessage();
+
+ return 'output';
+ }
+ }
+
+ // wgDBtype is generally valid here because otherwise the previous page
+ // (connect) wouldn't have declared its happiness
+ $type = $this->getVar( 'wgDBtype' );
+ $installer = $this->parent->getDBInstaller( $type );
+
+ if ( !$installer->needsUpgrade() ) {
+ return 'skip';
+ }
+
+ if ( $this->parent->request->wasPosted() ) {
+ $installer->preUpgrade();
+
+ $this->startLiveBox();
+ $result = $installer->doUpgrade();
+ $this->endLiveBox();
+
+ if ( $result ) {
+ // If they're going to possibly regenerate LocalSettings, we
+ // need to create the upgrade/secret keys. T28481
+ if ( !$this->getVar( '_ExistingDBSettings' ) ) {
+ $this->parent->generateKeys();
+ }
+ $this->setVar( '_UpgradeDone', true );
+ $this->showDoneMessage();
+
+ return 'output';
+ }
+ }
+
+ $this->startForm();
+ $this->addHTML( $this->parent->getInfoBox(
+ wfMessage( 'config-can-upgrade', $GLOBALS['wgVersion'] )->plain() ) );
+ $this->endForm();
+
+ return null;
+ }
+
+ public function showDoneMessage() {
+ $this->startForm();
+ $regenerate = !$this->getVar( '_ExistingDBSettings' );
+ if ( $regenerate ) {
+ $msg = 'config-upgrade-done';
+ } else {
+ $msg = 'config-upgrade-done-no-regenerate';
+ }
+ $this->parent->disableLinkPopups();
+ $this->addHTML(
+ $this->parent->getInfoBox(
+ wfMessage( $msg,
+ $this->getVar( 'wgServer' ) .
+ $this->getVar( 'wgScriptPath' ) . '/index.php'
+ )->plain(), 'tick-32.png'
+ )
+ );
+ $this->parent->restoreLinkPopups();
+ $this->endForm( $regenerate ? 'regenerate' : false, false );
+ }
+
+}