Localisation updates from https://translatewiki.net.
[lhc/web/wiklou.git] / includes / installer / WebInstaller.php
index 9fcd312..304508c 100644 (file)
@@ -44,13 +44,14 @@ class WebInstaller extends Installer {
        /**
         * Cached session array.
         *
-        * @var array
+        * @var array[]
         */
        protected $session;
 
        /**
         * Captured PHP error text. Temporary.
-        * @var array
+        *
+        * @var string[]
         */
        protected $phpErrors;
 
@@ -61,7 +62,8 @@ class WebInstaller extends Installer {
         *    * 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',
@@ -78,7 +80,8 @@ class WebInstaller extends Installer {
 
        /**
         * Out of sequence pages, selectable by the user at any time.
-        * @var array
+        *
+        * @var string[]
         */
        protected $otherPages = array(
                'Restart',
@@ -91,7 +94,8 @@ class WebInstaller extends Installer {
        /**
         * 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;
 
@@ -99,24 +103,28 @@ class WebInstaller extends Installer {
         * 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;
@@ -124,7 +132,7 @@ class WebInstaller extends Installer {
        /**
         * Constructor.
         *
-        * @param $request WebRequest
+        * @param WebRequest $request
         */
        public function __construct( WebRequest $request ) {
                parent::__construct();
@@ -140,9 +148,9 @@ class WebInstaller extends Installer {
        /**
         * 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;
@@ -155,8 +163,8 @@ class WebInstaller extends Installer {
                $this->setupLanguage();
 
                if ( ( $this->getVar( '_InstallDone' ) || $this->getVar( '_UpgradeDone' ) )
-                       && $this->request->getVal( 'localsettings' ) )
-               {
+                       && $this->request->getVal( 'localsettings' )
+               {
                        $this->request->response()->header( 'Content-type: application/x-httpd-php' );
                        $this->request->response()->header(
                                'Content-Disposition: attachment; filename="LocalSettings.php"'
@@ -168,6 +176,7 @@ class WebInstaller extends Installer {
                                $ls->setGroupRights( $group, $rightsArr );
                        }
                        echo $ls->getText();
+
                        return $this->session;
                }
 
@@ -176,6 +185,7 @@ class WebInstaller extends Installer {
                        $cssDir = ( $cssDir == 'rtl' ? 'rtl' : 'ltr' );
                        $this->request->response()->header( 'Content-type: text/css' );
                        echo $this->output->getCSS( $cssDir );
+
                        return $this->session;
                }
 
@@ -199,6 +209,7 @@ class WebInstaller extends Installer {
                        $this->output->useShortHeader();
                        $this->output->allowFrames();
                        $page->submitCC();
+
                        return $this->finish();
                }
 
@@ -207,6 +218,7 @@ class WebInstaller extends Installer {
                        $this->output->useShortHeader();
                        $this->output->allowFrames();
                        $this->output->addHTML( $page->getCCDoneBox() );
+
                        return $this->finish();
                }
 
@@ -256,6 +268,7 @@ class WebInstaller extends Installer {
                        }
 
                        $this->output->redirect( $this->getUrl( array( 'page' => $nextPage ) ) );
+
                        return $this->finish();
                }
 
@@ -321,6 +334,7 @@ class WebInstaller extends Installer {
        /**
         * Start the PHP session. This may be called before execute() to start the PHP session.
         *
+        * @throws Exception
         * @return bool
         */
        public function startSession() {
@@ -331,11 +345,17 @@ class WebInstaller extends Installer {
 
                $this->phpErrors = array();
                set_error_handler( array( $this, 'errorHandler' ) );
-               session_start();
+               try {
+                       session_start();
+               } catch ( Exception $e ) {
+                       restore_error_handler();
+                       throw $e;
+               }
                restore_error_handler();
 
                if ( $this->phpErrors ) {
                        $this->showError( 'config-session-error', $this->phpErrors[0] );
+
                        return false;
                }
 
@@ -362,6 +382,7 @@ class WebInstaller extends Installer {
                        // the /mw-config/index.php. Kinda scary though?
                        $url = $m[1];
                }
+
                return md5( serialize( array(
                        'local path' => dirname( __DIR__ ),
                        'url' => $url,
@@ -371,7 +392,7 @@ class WebInstaller extends Installer {
 
        /**
         * Show an error message in a box. Parameters are like wfMessage().
-        * @param $msg
+        * @param string $msg
         */
        public function showError( $msg /*...*/ ) {
                $args = func_get_args();
@@ -383,8 +404,9 @@ class WebInstaller extends Installer {
 
        /**
         * Temporary error handler for session start debugging.
-        * @param $errno
-        * @param $errstr string
+        *
+        * @param int $errno Unused
+        * @param string $errstr
         */
        public function errorHandler( $errno, $errstr ) {
                $this->phpErrors[] = $errstr;
@@ -393,7 +415,7 @@ class WebInstaller extends Installer {
        /**
         * Clean up from execute()
         *
-        * @return array
+        * @return array[]
         */
        public function finish() {
                $this->output->output();
@@ -417,7 +439,8 @@ class WebInstaller extends Installer {
        /**
         * Get a URL for submission back to the same script.
         *
-        * @param $query array
+        * @param string[] $query
+        *
         * @return string
         */
        public function getUrl( $query = array() ) {
@@ -435,7 +458,7 @@ class WebInstaller extends Installer {
        /**
         * Get a WebInstallerPage by name.
         *
-        * @param $pageName String
+        * @param string $pageName
         * @return WebInstallerPage
         */
        public function getPageByName( $pageName ) {
@@ -447,9 +470,10 @@ class WebInstaller extends Installer {
        /**
         * Get a session variable.
         *
-        * @param $name String
-        * @param $default
-        * @return null
+        * @param string $name
+        * @param array $default
+        *
+        * @return array
         */
        public function getSession( $name, $default = null ) {
                if ( !isset( $this->session[$name] ) ) {
@@ -461,8 +485,9 @@ class WebInstaller extends Installer {
 
        /**
         * Set a session variable.
-        * @param string $name key for the variable
-        * @param $value Mixed
+        *
+        * @param string $name Key for the variable
+        * @param mixed $value
         */
        public function setSession( $name, $value ) {
                $this->session[$name] = $value;
@@ -470,6 +495,7 @@ class WebInstaller extends Installer {
 
        /**
         * Get the next tabindex attribute value.
+        *
         * @return int
         */
        public function nextTabIndex() {
@@ -516,7 +542,7 @@ class WebInstaller extends Installer {
        /**
         * Called by execute() before page output starts, to show a page list.
         *
-        * @param $currentPageName string
+        * @param string $currentPageName
         */
        private function startPageWrapper( $currentPageName ) {
                $s = "<div class=\"config-page-wrapper\">\n";
@@ -556,9 +582,9 @@ class WebInstaller extends Installer {
        /**
         * Get a list item for the page list.
         *
-        * @param $pageName string
-        * @param $enabled boolean
-        * @param $currentPageName string
+        * @param string $pageName
+        * @param bool $enabled
+        * @param string $currentPageName
         *
         * @return string
         */
@@ -614,16 +640,16 @@ class WebInstaller extends Installer {
         */
        private function endPageWrapper() {
                $this->output->addHTMLNoFlush(
-                                       "<div class=\"visualClear\"></div>\n" .
-                               "</div>\n" .
-                               "<div class=\"visualClear\"></div>\n" .
+                       "<div class=\"visualClear\"></div>\n" .
+                       "</div>\n" .
+                       "<div class=\"visualClear\"></div>\n" .
                        "</div>" );
        }
 
        /**
         * Get HTML for an error box with an icon.
         *
-        * @param string $text wikitext, get this with wfMessage()->plain()
+        * @param string $text Wikitext, get this with wfMessage()->plain()
         *
         * @return string
         */
@@ -634,7 +660,7 @@ class WebInstaller extends Installer {
        /**
         * Get HTML for a warning box with an icon.
         *
-        * @param string $text wikitext, get this with wfMessage()->plain()
+        * @param string $text Wikitext, get this with wfMessage()->plain()
         *
         * @return string
         */
@@ -645,16 +671,19 @@ class WebInstaller extends Installer {
        /**
         * Get HTML for an info box with an icon.
         *
-        * @param string $text wikitext, get this with wfMessage()->plain()
-        * @param string $icon icon name, file in skins/common/images
-        * @param string $class additional class name to add to the wrapper div
+        * @param string $text Wikitext, get this with wfMessage()->plain()
+        * @param string|bool $icon Icon name, file in skins/common/images. Default: false
+        * @param string|bool $class Additional class name to add to the wrapper div. Default: false.
         *
         * @return string
         */
        public function getInfoBox( $text, $icon = false, $class = false ) {
                $text = $this->parse( $text, true );
-               $icon = ( $icon == false ) ? '../skins/common/images/info-32.png' : '../skins/common/images/' . $icon;
+               $icon = ( $icon == false ) ?
+                       '../skins/common/images/info-32.png' :
+                       '../skins/common/images/' . $icon;
                $alt = wfMessage( 'config-information' )->text();
+
                return Html::infoBox( $text, $icon, $alt, $class, false );
        }
 
@@ -662,7 +691,7 @@ class WebInstaller extends Installer {
         * Get small text indented help for a preceding form field.
         * Parameters like wfMessage().
         *
-        * @param $msg
+        * @param string $msg
         * @return string
         */
        public function getHelpBox( $msg /*, ... */ ) {
@@ -673,15 +702,15 @@ class WebInstaller extends Installer {
                $html = $this->parse( $text, true );
 
                return "<div class=\"mw-help-field-container\">\n" .
-                       "<span class=\"mw-help-field-hint\">" . wfMessage( 'config-help' )->escaped() .
-                       "</span>\n" .
+                       "<span class=\"mw-help-field-hint\" title=\"" .  wfMessage( 'config-help-tooltip' )->escaped() . "\">" .
+                       wfMessage( 'config-help' )->escaped() . "</span>\n" .
                        "<span class=\"mw-help-field-data\">" . $html . "</span>\n" .
                        "</div>\n";
        }
 
        /**
         * Output a help box.
-        * @param string $msg key for wfMessage()
+        * @param string $msg Key for wfMessage()
         */
        public function showHelpBox( $msg /*, ... */ ) {
                $args = func_get_args();
@@ -693,19 +722,19 @@ class WebInstaller extends Installer {
         * Show a short informational message.
         * Output looks like a list.
         *
-        * @param $msg string
+        * @param string $msg
         */
        public function showMessage( $msg /*, ... */ ) {
                $args = func_get_args();
                array_shift( $args );
                $html = '<div class="config-message">' .
-               $this->parse( wfMessage( $msg, $args )->useDatabase( false )->plain() ) .
+                       $this->parse( wfMessage( $msg, $args )->useDatabase( false )->plain() ) .
                        "</div>\n";
                $this->output->addHTML( $html );
        }
 
        /**
-        * @param $status Status
+        * @param Status $status
         */
        public function showStatusMessage( Status $status ) {
                $errors = array_merge( $status->getErrorsArray(), $status->getWarningsArray() );
@@ -718,10 +747,10 @@ class WebInstaller extends Installer {
         * Label a control by wrapping a config-input div around it and putting a
         * label before it.
         *
-        * @param $msg
-        * @param $forId
-        * @param $contents
-        * @param $helpData string
+        * @param string $msg
+        * @param string $forId
+        * @param string $contents
+        * @param string $helpData
         * @return string
         */
        public function label( $msg, $forId, $contents, $helpData = "" ) {
@@ -741,11 +770,12 @@ class WebInstaller extends Installer {
                        "  <div class=\"config-block-label\">\n" .
                        Xml::tags( 'label',
                                $attributes,
-                               $labelText ) . "\n" .
-                               $helpData .
+                               $labelText
+                       ) . "\n" .
+                       $helpData .
                        "  </div>\n" .
                        "  <div class=\"config-block-elements\">\n" .
-                               $contents .
+                       $contents .
                        "  </div>\n" .
                        "</div>\n";
        }
@@ -753,14 +783,14 @@ class WebInstaller extends Installer {
        /**
         * Get a labelled text box to configure a variable.
         *
-        * @param $params Array
+        * @param mixed[] $params
         *    Parameters are:
-        *      var:        The variable to be configured (required)
-        *      label:      The message name for the label (required)
-        *      attribs:    Additional attributes for the input element (optional)
+        *      var:         The variable to be configured (required)
+        *      label:       The message name for the label (required)
+        *      attribs:     Additional attributes for the input element (optional)
         *      controlName: The name for the input element (optional)
-        *      value:      The current value of the variable (optional)
-        *      help:           The html for the help text (optional)
+        *      value:       The current value of the variable (optional)
+        *      help:        The html for the help text (optional)
         *
         * @return string
         */
@@ -779,34 +809,35 @@ class WebInstaller extends Installer {
                if ( !isset( $params['help'] ) ) {
                        $params['help'] = "";
                }
+
                return $this->label(
-                               $params['label'],
+                       $params['label'],
+                       $params['controlName'],
+                       Xml::input(
                                $params['controlName'],
-                               Xml::input(
-                                       $params['controlName'],
-                                       30, // intended to be overridden by CSS
-                                       $params['value'],
-                                       $params['attribs'] + array(
-                                               'id' => $params['controlName'],
-                                               'class' => 'config-input-text',
-                                               'tabindex' => $this->nextTabIndex()
-                                       )
-                               ),
-                               $params['help']
-                       );
+                               30, // intended to be overridden by CSS
+                               $params['value'],
+                               $params['attribs'] + array(
+                                       'id' => $params['controlName'],
+                                       'class' => 'config-input-text',
+                                       'tabindex' => $this->nextTabIndex()
+                               )
+                       ),
+                       $params['help']
+               );
        }
 
        /**
         * Get a labelled textarea to configure a variable
         *
-        * @param $params Array
+        * @param mixed[] $params
         *    Parameters are:
-        *      var:        The variable to be configured (required)
-        *      label:      The message name for the label (required)
-        *      attribs:    Additional attributes for the input element (optional)
+        *      var:         The variable to be configured (required)
+        *      label:       The message name for the label (required)
+        *      attribs:     Additional attributes for the input element (optional)
         *      controlName: The name for the input element (optional)
-        *      value:      The current value of the variable (optional)
-        *      help:           The html for the help text (optional)
+        *      value:       The current value of the variable (optional)
+        *      help:        The html for the help text (optional)
         *
         * @return string
         */
@@ -825,36 +856,37 @@ class WebInstaller extends Installer {
                if ( !isset( $params['help'] ) ) {
                        $params['help'] = "";
                }
+
                return $this->label(
-                               $params['label'],
+                       $params['label'],
+                       $params['controlName'],
+                       Xml::textarea(
                                $params['controlName'],
-                               Xml::textarea(
-                                       $params['controlName'],
-                                       $params['value'],
-                                       30,
-                                       5,
-                                       $params['attribs'] + array(
-                                               'id' => $params['controlName'],
-                                               'class' => 'config-input-text',
-                                               'tabindex' => $this->nextTabIndex()
-                                       )
-                               ),
-                               $params['help']
-                       );
+                               $params['value'],
+                               30,
+                               5,
+                               $params['attribs'] + array(
+                                       'id' => $params['controlName'],
+                                       'class' => 'config-input-text',
+                                       'tabindex' => $this->nextTabIndex()
+                               )
+                       ),
+                       $params['help']
+               );
        }
 
        /**
         * Get a labelled password box to configure a variable.
         *
         * Implements password hiding
-        * @param $params Array
+        * @param mixed[] $params
         *    Parameters are:
-        *      var:        The variable to be configured (required)
-        *      label:      The message name for the label (required)
-        *      attribs:    Additional attributes for the input element (optional)
+        *      var:         The variable to be configured (required)
+        *      label:       The message name for the label (required)
+        *      attribs:     Additional attributes for the input element (optional)
         *      controlName: The name for the input element (optional)
-        *      value:      The current value of the variable (optional)
-        *      help:           The html for the help text (optional)
+        *      value:       The current value of the variable (optional)
+        *      help:        The html for the help text (optional)
         *
         * @return string
         */
@@ -876,14 +908,14 @@ class WebInstaller extends Installer {
        /**
         * Get a labelled checkbox to configure a boolean variable.
         *
-        * @param $params Array
+        * @param mixed[] $params
         *    Parameters are:
-        *      var:        The variable to be configured (required)
-        *      label:      The message name for the label (required)
-        *      attribs:    Additional attributes for the input element (optional)
+        *      var:         The variable to be configured (required)
+        *      label:       The message name for the label (required)
+        *      attribs:     Additional attributes for the input element (optional)
         *      controlName: The name for the input element (optional)
-        *      value:      The current value of the variable (optional)
-        *      help:           The html for the help text (optional)
+        *      value:       The current value of the variable (optional)
+        *      help:        The html for the help text (optional)
         *
         * @return string
         */
@@ -927,17 +959,17 @@ class WebInstaller extends Installer {
        /**
         * Get a set of labelled radio buttons.
         *
-        * @param $params Array
+        * @param mixed[] $params
         *    Parameters are:
-        *      var:            The variable to be configured (required)
-        *      label:          The message name for the label (required)
+        *      var:             The variable to be configured (required)
+        *      label:           The message name for the label (required)
         *      itemLabelPrefix: The message name prefix for the item labels (required)
-        *      values:         List of allowed values (required)
-        *      itemAttribs     Array of attribute arrays, outer key is the value name (optional)
-        *      commonAttribs   Attribute array applied to all items
-        *      controlName:    The name for the input element (optional)
-        *      value:          The current value of the variable (optional)
-        *      help:           The html for the help text (optional)
+        *      values:          List of allowed values (required)
+        *      itemAttribs:     Array of attribute arrays, outer key is the value name (optional)
+        *      commonAttribs:   Attribute array applied to all items
+        *      controlName:     The name for the input element (optional)
+        *      value:           The current value of the variable (optional)
+        *      help:            The html for the help text (optional)
         *
         * @return string
         */
@@ -993,7 +1025,7 @@ class WebInstaller extends Installer {
        /**
         * Output an error or warning box using a Status object.
         *
-        * @param $status Status
+        * @param Status $status
         */
        public function showStatusBox( $status ) {
                if ( !$status->isGood() ) {
@@ -1014,10 +1046,10 @@ class WebInstaller extends Installer {
         * Assumes that variables containing "password" in the name are (potentially
         * fake) passwords.
         *
-        * @param $varNames Array
-        * @param string $prefix the prefix added to variables to obtain form names
+        * @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();
@@ -1044,7 +1076,8 @@ class WebInstaller extends Installer {
        /**
         * Helper for Installer::docLink()
         *
-        * @param $page
+        * @param string $page
+        *
         * @return string
         */
        protected function getDocUrl( $page ) {
@@ -1060,13 +1093,15 @@ class WebInstaller extends Installer {
        /**
         * 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 ) {
                $url = $this->getDocUrl( $attribs['href'] );
+
                return '<a href="' . htmlspecialchars( $url ) . '">' .
                        htmlspecialchars( $linkText ) .
                        '</a>';
@@ -1075,20 +1110,18 @@ class WebInstaller extends Installer {
        /**
         * Helper for "Download LocalSettings" link on WebInstall_Complete
         *
-        * @param $text
-        * @param $attribs
-        * @param $parser
-        * @return String Html for download link
+        * @param string $text Unused
+        * @param string[] $attribs Unused
+        * @param Parser $parser Unused
+        *
+        * @return string Html for download link
         */
        public function downloadLinkHook( $text, $attribs, $parser ) {
-               $img = Html::element( 'img', array(
-                       'src' => '../skins/common/images/download-32.png',
-                       'width' => '32',
-                       'height' => '32',
-               ) );
                $anchor = Html::rawElement( 'a',
                        array( 'href' => $this->getURL( array( 'localsettings' => 1 ) ) ),
-                       $img . ' ' . wfMessage( 'config-download-localsettings' )->parse() );
+                       wfMessage( 'config-download-localsettings' )->parse()
+               );
+
                return Html::rawElement( 'div', array( 'class' => 'config-download-link' ), $anchor );
        }
 
@@ -1110,12 +1143,18 @@ class WebInstaller extends Installer {
                        $this->setVar( 'wgScriptPath', $uri );
                } else {
                        $this->showError( 'config-no-uri' );
+
                        return false;
                }
+
                return parent::envCheckPath();
        }
 
+       /**
+        * @return string
+        */
        protected function envGetDefaultServer() {
                return WebRequest::detectServer();
        }
-}
+
+}
\ No newline at end of file