/**
* Cached session array.
*
- * @var array
+ * @var array[]
*/
protected $session;
/**
* Captured PHP error text. Temporary.
- * @var array
+ *
+ * @var string[]
*/
protected $phpErrors;
* * Add it to this WebInstaller::$pageSequence property
* * Add a "config-page-<name>" message
* * Add a "WebInstaller_<name>" class
- * @var array
+ *
+ * @var string[]
*/
public $pageSequence = array(
'Language',
/**
* Out of sequence pages, selectable by the user at any time.
- * @var array
+ *
+ * @var string[]
*/
protected $otherPages = array(
'Restart',
/**
* Array of pages which have declared that they have been submitted, have validated
* their input, and need no further processing.
- * @var array
+ *
+ * @var bool[]
*/
protected $happyPages;
* List of "skipped" pages. These are pages that will automatically continue
* to the next page on any GET request. To avoid breaking the "back" button,
* they need to be skipped during a back operation.
- * @var array
+ *
+ * @var bool[]
*/
protected $skippedPages;
/**
* Flag indicating that session data may have been lost.
+ *
* @var bool
*/
public $showSessionWarning = false;
/**
* Numeric index of the page we're on
+ *
* @var int
*/
protected $tabIndex = 1;
/**
* Name of the page we're on
+ *
* @var string
*/
protected $currentPageName;
/**
* Main entry point.
*
- * @param array $session initial session array
+ * @param array[] $session initial session array
*
- * @return array New session array
+ * @return array[] New session array
*/
public function execute( array $session ) {
$this->session = $session;
/**
* Temporary error handler for session start debugging.
- * @param $errno
+ *
+ * @param int $errno Unused
* @param string $errstr
*/
public function errorHandler( $errno, $errstr ) {
/**
* Clean up from execute()
*
- * @return array
+ * @return array[]
*/
public function finish() {
$this->output->output();
/**
* Get a URL for submission back to the same script.
*
- * @param array $query
+ * @param string[] $query
+ *
* @return string
*/
public function getUrl( $query = array() ) {
* Get a session variable.
*
* @param string $name
- * @param $default
- * @return null
+ * @param array $default
+ *
+ * @return array
*/
public function getSession( $name, $default = null ) {
if ( !isset( $this->session[$name] ) ) {
/**
* Set a session variable.
+ *
* @param string $name Key for the variable
* @param mixed $value
*/
/**
* Get the next tabindex attribute value.
+ *
* @return int
*/
public function nextTabIndex() {
/**
* Get a labelled text box to configure a variable.
*
- * @param array $params
+ * @param mixed[] $params
* Parameters are:
* var: The variable to be configured (required)
* label: The message name for the label (required)
/**
* Get a labelled textarea to configure a variable
*
- * @param array $params
+ * @param mixed[] $params
* Parameters are:
* var: The variable to be configured (required)
* label: The message name for the label (required)
* Get a labelled password box to configure a variable.
*
* Implements password hiding
- * @param array $params
+ * @param mixed[] $params
* Parameters are:
* var: The variable to be configured (required)
* label: The message name for the label (required)
/**
* Get a labelled checkbox to configure a boolean variable.
*
- * @param array $params
+ * @param mixed[] $params
* Parameters are:
* var: The variable to be configured (required)
* label: The message name for the label (required)
/**
* Get a set of labelled radio buttons.
*
- * @param array $params
+ * @param mixed[] $params
* Parameters are:
* var: The variable to be configured (required)
* label: The message name for the label (required)
* Assumes that variables containing "password" in the name are (potentially
* fake) passwords.
*
- * @param array $varNames
+ * @param string[] $varNames
* @param string $prefix The prefix added to variables to obtain form names
*
- * @return array
+ * @return string[]
*/
public function setVarsFromRequest( $varNames, $prefix = 'config_' ) {
$newValues = array();
/**
* Helper for Installer::docLink()
*
- * @param $page
+ * @param string $page
+ *
* @return string
*/
protected function getDocUrl( $page ) {
/**
* Extension tag hook for a documentation link.
*
- * @param $linkText
- * @param $attribs
- * @param $parser
+ * @param string $linkText
+ * @param string[] $attribs
+ * @param Parser $parser Unused
+ *
* @return string
*/
public function docLink( $linkText, $attribs, $parser ) {
/**
* Helper for "Download LocalSettings" link on WebInstall_Complete
*
- * @param $text
- * @param $attribs
- * @param $parser
+ * @param string $text Unused
+ * @param string[] $attribs Unused
+ * @param Parser $parser Unused
+ *
* @return string Html for download link
*/
public function downloadLinkHook( $text, $attribs, $parser ) {
return parent::envCheckPath();
}
+ /**
+ * @return String
+ */
protected function envGetDefaultServer() {
return WebRequest::detectServer();
}
+
}
*/
public $parent;
+ /**
+ * @return string
+ */
abstract public function execute();
/**
- * Constructor.
- *
- * @param $parent WebInstaller
+ * @param WebInstaller $parent
*/
public function __construct( WebInstaller $parent ) {
$this->parent = $parent;
* Is this a slow-running page in the installer? If so, WebInstaller will
* set_time_limit(0) before calling execute(). Right now this only applies
* to Install and Upgrade pages
- * @return bool
+ *
+ * @return bool Always false in this default implementation.
*/
public function isSlow() {
return false;
}
+ /**
+ * @param string $html
+ */
public function addHTML( $html ) {
$this->parent->output->addHTML( $html );
}
$this->addHTML( $s );
}
+ /**
+ * @return string
+ */
public function getName() {
return str_replace( 'WebInstaller_', '', get_class( $this ) );
}
+ /**
+ * @return string
+ */
protected function getId() {
return array_search( $this->getName(), $this->parent->pageSequence );
}
+ /**
+ * @param string $var
+ *
+ * @return mixed
+ */
public function getVar( $var ) {
return $this->parent->getVar( $var );
}
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
public function setVar( $name, $value ) {
$this->parent->setVar( $name, $value );
}
}
/**
- * Opposite to startLiveBox()
+ * Opposite to WebInstallerPage::startLiveBox
*/
protected function endLiveBox() {
$this->addHTML( '</textarea></div>
<script>jQuery( "#config-spinner" ).hide()</script>' );
$this->parent->output->flush();
}
+
}
class WebInstaller_Language extends WebInstallerPage {
+
+ /**
+ * @return string|null
+ */
public function execute() {
global $wgLang;
$r = $this->parent->request;
$this->parent->getHelpBox( 'config-wiki-language-help' ) );
$this->addHTML( $s );
$this->endForm( 'continue', false );
+
+ return null;
}
/**
* Get a "<select>" for selecting languages.
*
- * @param $name
- * @param $label
- * @param $selectedCode
- * @param $helpHtml string
+ * @param string $name
+ * @param string $label
+ * @param string $selectedCode
+ * @param string $helpHtml
+ *
* @return string
*/
public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
return $this->parent->label( $label, $name, $s );
}
+
}
class WebInstaller_ExistingWiki extends WebInstallerPage {
+
+ /**
+ * @return string
+ */
public function execute() {
// If there is no LocalSettings.php, continue to the installer welcome page
$vars = Installer::getExistingLocalSettings();
$this->endForm( 'continue' );
}
+ /**
+ * @param string[] $names
+ * @param mixed[] $vars
+ *
+ * @return Status
+ */
protected function importVariables( $names, $vars ) {
$status = Status::newGood();
foreach ( $names as $name ) {
/**
* Initiate an upgrade of the existing database
- * @param array $vars Variables from LocalSettings.php
+ *
+ * @param mixed[] $vars Variables from LocalSettings.php
+ *
* @return Status
*/
protected function handleExistingUpgrade( $vars ) {
return $status;
}
+
}
class WebInstaller_Welcome extends WebInstallerPage {
+ /**
+ * @return string
+ */
public function execute() {
if ( $this->parent->request->wasPosted() ) {
if ( $this->getVar( '_Environment' ) ) {
return '';
}
+
}
class WebInstaller_DBConnect extends WebInstallerPage {
+
/**
- * @return string|void When string, "skip" or "continue"
+ * @return string|null When string, "skip" or "continue"
*/
public function execute() {
if ( $this->getVar( '_ExistingDBSettings' ) ) {
$this->addHTML( $this->parent->label( 'config-db-type', false, $types ) . $settings );
$this->endForm();
+
+ return null;
}
+ /**
+ * @return Status
+ */
public function submit() {
$r = $this->parent->request;
$type = $r->getVal( 'DBType' );
return $installer->submitConnectForm();
}
+
}
class WebInstaller_Upgrade 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
$this->addHTML( $this->parent->getInfoBox(
wfMessage( 'config-can-upgrade', $GLOBALS['wgVersion'] )->plain() ) );
$this->endForm();
+
+ return null;
}
public function showDoneMessage() {
$this->parent->restoreLinkPopups();
$this->endForm( $regenerate ? 'regenerate' : false, false );
}
+
}
class WebInstaller_DBSettings extends WebInstallerPage {
+ /**
+ * @return string|null
+ */
public function execute() {
$installer = $this->parent->getDBInstaller( $this->getVar( 'wgDBtype' ) );
$this->startForm();
$this->addHTML( $form );
$this->endForm();
+
+ return null;
}
+
}
class WebInstaller_Name extends WebInstallerPage {
+ /**
+ * @return string
+ */
public function execute() {
$r = $this->parent->request;
if ( $r->wasPosted() ) {
return 'output';
}
+ /**
+ * @return bool
+ */
public function submit() {
$retVal = true;
$this->parent->setVarsFromRequest( array( 'wgSitename', '_NamespaceType',
return $retVal;
}
+
}
class WebInstaller_Options extends WebInstallerPage {
+
+ /**
+ * @return string|null
+ */
public function execute() {
if ( $this->getVar( '_SkipOptional' ) == 'skip' ) {
return 'skip';
$this->getFieldSetEnd()
);
$this->endForm();
+
+ return null;
}
/**
return $iframeUrl;
}
+ /**
+ * @return string
+ */
public function getCCChooser() {
$iframeAttribs = array(
'class' => 'config-cc-iframe',
"</div>\n";
}
+ /**
+ * @return string
+ */
public function getCCDoneBox() {
$js = "parent.document.getElementById('config-cc-wrapper').style.height = '$1';";
// If you change this height, also change it in config.css
$this->addHTML( $this->getCCDoneBox() );
}
+ /**
+ * @return bool
+ */
public function submit() {
$this->parent->setVarsFromRequest( array( '_RightsProfile', '_LicenseCode',
'wgEnableEmail', 'wgPasswordSender', 'wgEnableUploads', 'wgLogo',
return true;
}
+
}
class WebInstaller_Install extends WebInstallerPage {
+
+ /**
+ * @return bool Always true.
+ */
public function isSlow() {
return true;
}
+ /**
+ * @return string|bool
+ */
public function execute() {
if ( $this->getVar( '_UpgradeDone' ) ) {
return 'skip';
return true;
}
+ /**
+ * @param string $step
+ */
public function startStage( $step ) {
// Messages: config-install-database, config-install-tables, config-install-interwiki,
// config-install-stats, config-install-keys, config-install-sysop, config-install-mainpage
}
/**
- * @param $step
- * @param $status Status
+ * @param string $step
+ * @param Status $status
*/
public function endStage( $step, $status ) {
if ( $step == 'extension-tables' ) {
$this->parent->showStatusBox( $status );
}
}
+
}
class WebInstaller_Complete extends WebInstallerPage {
+
public function execute() {
// Pop up a dialog box, to make it difficult for the user to forget
// to download the file
$this->parent->restoreLinkPopups();
$this->endForm( false, false );
}
+
}
class WebInstaller_Restart extends WebInstallerPage {
+ /**
+ * @return string|null
+ */
public function execute() {
$r = $this->parent->request;
if ( $r->wasPosted() ) {
$s = $this->parent->getWarningBox( wfMessage( 'config-help-restart' )->plain() );
$this->addHTML( $s );
$this->endForm( 'restart' );
+
+ return null;
}
+
}
abstract class WebInstaller_Document extends WebInstallerPage {
+ /**
+ * @return string
+ */
abstract protected function getFileName();
public function execute() {
$this->endForm( false );
}
+ /**
+ * @return string
+ */
public function getFileContents() {
$file = __DIR__ . '/../../' . $this->getFileName();
if ( !file_exists( $file ) ) {
return file_get_contents( $file );
}
+
}
class WebInstaller_Readme extends WebInstaller_Document {
+
+ /**
+ * @return string
+ */
protected function getFileName() {
return 'README';
}
+
}
class WebInstaller_ReleaseNotes extends WebInstaller_Document {
+
+ /**
+ * @throws MWException
+ * @return string
+ */
protected function getFileName() {
global $wgVersion;
return 'RELEASE-NOTES-' . $result[1] . '.' . $result[2];
}
+
}
class WebInstaller_UpgradeDoc extends WebInstaller_Document {
+
+ /**
+ * @return string
+ */
protected function getFileName() {
return 'UPGRADE';
}
+
}
class WebInstaller_Copying extends WebInstaller_Document {
+
+ /**
+ * @return string
+ */
protected function getFileName() {
return 'COPYING';
}
+
}