From 4f8f4bf675c87af99cfe96b7d91a1c097900bc43 Mon Sep 17 00:00:00 2001 From: Brandon Harris Date: Mon, 6 Dec 2010 20:04:28 +0000 Subject: [PATCH] Revert r77860, which was a reversion of r75832. Didn't see comments about escaping html and use of tipsy; will be addressed in next commit. --- includes/installer/DatabaseInstaller.php | 68 +++++++++++++---------- includes/installer/Installer.i18n.php | 2 - includes/installer/MysqlInstaller.php | 29 +++++----- includes/installer/OracleInstaller.php | 11 ++-- includes/installer/PostgresInstaller.php | 13 ++--- includes/installer/SqliteInstaller.php | 8 +-- includes/installer/WebInstaller.php | 63 +++++++++++---------- includes/installer/WebInstallerOutput.php | 31 ++++------- includes/installer/WebInstallerPage.php | 62 +++++++++++---------- 9 files changed, 143 insertions(+), 144 deletions(-) diff --git a/includes/installer/DatabaseInstaller.php b/includes/installer/DatabaseInstaller.php index 14e1fd2c6c..26cf53c316 100644 --- a/includes/installer/DatabaseInstaller.php +++ b/includes/installer/DatabaseInstaller.php @@ -8,7 +8,7 @@ /** * Base class for DBMS-specific installation helper classes. - * + * * @ingroup Deployment * @since 1.17 */ @@ -16,30 +16,30 @@ abstract class DatabaseInstaller { /** * The Installer object. - * + * * TODO: naming this parent is confusing, 'installer' would be clearer. - * + * * @var Installer */ public $parent; /** * The database connection. - * + * * @var DatabaseBase */ public $db; /** * Internal variables for installation. - * + * * @var array */ protected $internalDefaults = array(); /** * Array of MW configuration globals this class uses. - * + * * @var array */ protected $globalNames = array(); @@ -56,7 +56,7 @@ abstract class DatabaseInstaller { /** * Get HTML for a web form that configures this database. Configuration - * at this time should be the minimum needed to connect and test + * at this time should be the minimum needed to connect and test * whether install or upgrade is required. * * If this is called, $this->parent can be assumed to be a WebInstaller. @@ -65,7 +65,7 @@ abstract class DatabaseInstaller { /** * Set variables based on the request array, assuming it was submitted - * via the form returned by getConnectForm(). Validate the connection + * via the form returned by getConnectForm(). Validate the connection * settings by attempting to connect with them. * * If this is called, $this->parent can be assumed to be a WebInstaller. @@ -77,7 +77,7 @@ abstract class DatabaseInstaller { /** * Get HTML for a web form that retrieves settings used for installation. * $this->parent can be assumed to be a WebInstaller. - * If the DB type has no settings beyond those already configured with + * If the DB type has no settings beyond those already configured with * getConnectForm(), this should return false. */ public function getSettingsForm() { @@ -87,7 +87,7 @@ abstract class DatabaseInstaller { /** * Set variables based on the request array, assuming it was submitted via * the form return by getSettingsForm(). - * + * * @return Status */ public function submitSettingsForm() { @@ -96,7 +96,7 @@ abstract class DatabaseInstaller { /** * Connect to the database using the administrative user/password currently - * defined in the session. On success, return the connection, on failure, + * defined in the session. On success, return the connection, on failure, * * This may be called multiple times, so the result should be cached. * @@ -114,7 +114,7 @@ abstract class DatabaseInstaller { /** * Create database tables from scratch. - * + * * @return Status */ public function createTables() { @@ -139,7 +139,7 @@ abstract class DatabaseInstaller { /** * Get the DBMS-specific options for LocalSettings.php generation. - * + * * @return String */ public abstract function getLocalSettings(); @@ -188,19 +188,19 @@ abstract class DatabaseInstaller { */ public function getGlobalNames() { return $this->globalNames; - } + } /** * Return any table options to be applied to all tables that don't * override them. - * + * * @return Array */ public function getTableOptions() { return array(); } - /** + /** * Construct and initialise parent. * This is typically only called from Installer::getDBInstaller() */ @@ -211,7 +211,7 @@ abstract class DatabaseInstaller { /** * Convenience function. * Check if a named extension is present. - * + * * @see wfDl */ protected static function checkExtension( $name ) { @@ -267,15 +267,19 @@ abstract class DatabaseInstaller { /** * Get a labelled text box to configure a local variable. */ - public function getTextBox( $var, $label, $attribs = array() ) { + public function getTextBox( $var, $label, $attribs = array(), $helpData = "" ) { $name = $this->getName() . '_' . $var; $value = $this->getVar( $var ); + if ( !isset( $attribs ) ) { + $attribs = array(); + } return $this->parent->getTextBox( array( 'var' => $var, 'label' => $label, 'attribs' => $attribs, 'controlName' => $name, - 'value' => $value + 'value' => $value, + 'help' => $helpData ) ); } @@ -283,22 +287,26 @@ abstract class DatabaseInstaller { * Get a labelled password box to configure a local variable. * Implements password hiding. */ - public function getPasswordBox( $var, $label, $attribs = array() ) { + public function getPasswordBox( $var, $label, $attribs = array(), $helpData = "" ) { $name = $this->getName() . '_' . $var; $value = $this->getVar( $var ); + if ( !isset( $attribs ) ) { + $attribs = array(); + } return $this->parent->getPasswordBox( array( 'var' => $var, 'label' => $label, 'attribs' => $attribs, 'controlName' => $name, - 'value' => $value + 'value' => $value, + 'help' => $helpData ) ); } /** * Get a labelled checkbox to configure a local boolean variable. */ - public function getCheckBox( $var, $label, $attribs = array() ) { + public function getCheckBox( $var, $label, $attribs = array(), $helpData = "" ) { $name = $this->getName() . '_' . $var; $value = $this->getVar( $var ); return $this->parent->getCheckBox( array( @@ -307,6 +315,7 @@ abstract class DatabaseInstaller { 'attribs' => $attribs, 'controlName' => $name, 'value' => $value, + 'help' => $helpData )); } @@ -339,11 +348,11 @@ abstract class DatabaseInstaller { } /** - * Determine whether an existing installation of MediaWiki is present in - * the configured administrative connection. Returns true if there is + * Determine whether an existing installation of MediaWiki is present in + * the configured administrative connection. Returns true if there is * such a wiki, false if the database doesn't exist. * - * Traditionally, this is done by testing for the existence of either + * Traditionally, this is done by testing for the existence of either * the revision table or the cur table. * * @return Boolean @@ -367,9 +376,8 @@ abstract class DatabaseInstaller { return Html::openElement( 'fieldset' ) . Html::element( 'legend', array(), wfMsg( 'config-db-install-account' ) ) . - $this->getTextBox( '_InstallUser', 'config-db-username' ) . - $this->getPasswordBox( '_InstallPassword', 'config-db-password' ) . - $this->parent->getHelpBox( 'config-db-install-help' ) . + $this->getTextBox( '_InstallUser', 'config-db-username', array(), $this->parent->getHelpBox( 'config-db-install-username' ) ) . + $this->getPasswordBox( '_InstallPassword', 'config-db-password', array(), $this->parent->getHelpBox( 'config-db-install-password' ) ) . Html::closeElement( 'fieldset' ); } @@ -389,7 +397,7 @@ abstract class DatabaseInstaller { public function getWebUserBox( $noCreateMsg = false ) { $s = Html::openElement( 'fieldset' ) . Html::element( 'legend', array(), wfMsg( 'config-db-web-account' ) ) . - $this->getCheckBox( + $this->getCheckBox( '_SameAccount', 'config-db-web-account-same', array( 'class' => 'hideShowRadio', 'rel' => 'dbOtherAccount' ) ) . @@ -408,7 +416,7 @@ abstract class DatabaseInstaller { /** * Submit the form from getWebUserBox(). - * + * * @return Status */ public function submitWebUserBox() { diff --git a/includes/installer/Installer.i18n.php b/includes/installer/Installer.i18n.php index 2fc6a2cd13..2b5886faf5 100644 --- a/includes/installer/Installer.i18n.php +++ b/includes/installer/Installer.i18n.php @@ -31,8 +31,6 @@ Restart the installation process.', 'config-no-session' => 'Your session data was lost! Check your php.ini and make sure session.save_path is set to an appropriate directory.', 'config-session-path-bad' => 'Your session.save_path ($1) seems to be invalid or unwritable.', - 'config-show-help' => 'Help', - 'config-hide-help' => 'Hide help', 'config-your-language' => 'Your language:', 'config-your-language-help' => 'Select a language to use during the installation process.', 'config-wiki-language' => 'Wiki language:', diff --git a/includes/installer/MysqlInstaller.php b/includes/installer/MysqlInstaller.php index c87b71b99d..033875a298 100644 --- a/includes/installer/MysqlInstaller.php +++ b/includes/installer/MysqlInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using MySQL. - * + * * @ingroup Deployment * @since 1.17 */ @@ -59,14 +59,11 @@ class MysqlInstaller extends DatabaseInstaller { public function getConnectForm() { return - $this->getTextBox( 'wgDBserver', 'config-db-host' ) . - $this->parent->getHelpBox( 'config-db-host-help' ) . + $this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) . Html::openElement( 'fieldset' ) . Html::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) . - $this->getTextBox( 'wgDBname', 'config-db-name' ) . - $this->parent->getHelpBox( 'config-db-name-help' ) . - $this->getTextBox( 'wgDBprefix', 'config-db-prefix' ) . - $this->parent->getHelpBox( 'config-db-prefix-help' ) . + $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-db-name-help' ) ) . + $this->getTextBox( 'wgDBprefix', 'config-db-prefix', array(), $this->parent->getHelpBox( 'config-db-prefix-help' ) ) . Html::closeElement( 'fieldset' ) . $this->getInstallUserBox(); } @@ -120,7 +117,7 @@ class MysqlInstaller extends DatabaseInstaller { $this->getVar( '_InstallPassword' ), false, false, - 0, + 0, $this->getVar( 'wgDBprefix' ) ); $status->value = $this->db; @@ -252,12 +249,12 @@ class MysqlInstaller extends DatabaseInstaller { if ( count( $parts ) != 2 ) { return false; } - $quotedUser = $conn->addQuotes( $parts[0] ) . + $quotedUser = $conn->addQuotes( $parts[0] ) . '@' . $conn->addQuotes( $parts[1] ); // The user needs to have INSERT on mysql.* to be able to CREATE USER // The grantee will be double-quoted in this query, as required - $res = $conn->select( 'INFORMATION_SCHEMA.USER_PRIVILEGES', '*', + $res = $conn->select( 'INFORMATION_SCHEMA.USER_PRIVILEGES', '*', array( 'GRANTEE' => $quotedUser ), __METHOD__ ); $insertMysql = false; $grantOptions = array_flip( $this->webUserPrivs ); @@ -273,7 +270,7 @@ class MysqlInstaller extends DatabaseInstaller { // Check for DB-specific privs for mysql.* if ( !$insertMysql ) { $row = $conn->selectRow( 'INFORMATION_SCHEMA.SCHEMA_PRIVILEGES', '*', - array( + array( 'GRANTEE' => $quotedUser, 'TABLE_SCHEMA' => 'mysql', 'PRIVILEGE_TYPE' => 'INSERT', @@ -288,7 +285,7 @@ class MysqlInstaller extends DatabaseInstaller { } // Check for DB-level grant options - $res = $conn->select( 'INFORMATION_SCHEMA.SCHEMA_PRIVILEGES', '*', + $res = $conn->select( 'INFORMATION_SCHEMA.SCHEMA_PRIVILEGES', '*', array( 'GRANTEE' => $quotedUser, 'IS_GRANTABLE' => 1, @@ -322,9 +319,9 @@ class MysqlInstaller extends DatabaseInstaller { } if ( count( $engines ) >= 2 ) { $s .= $this->getRadioSet( array( - 'var' => '_MysqlEngine', - 'label' => 'config-mysql-engine', - 'itemLabelPrefix' => 'config-mysql-', + 'var' => '_MysqlEngine', + 'label' => 'config-mysql-engine', + 'itemLabelPrefix' => 'config-mysql-', 'values' => $engines )); $s .= $this->parent->getHelpBox( 'config-mysql-engine-help' ); @@ -375,7 +372,7 @@ class MysqlInstaller extends DatabaseInstaller { $this->getVar( 'wgDBpassword' ), false, false, - 0, + 0, $this->getVar( 'wgDBprefix' ) ); } catch ( DBConnectionError $e ) { diff --git a/includes/installer/OracleInstaller.php b/includes/installer/OracleInstaller.php index cc5c6c778e..d9bc098a0b 100644 --- a/includes/installer/OracleInstaller.php +++ b/includes/installer/OracleInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using Oracle. - * + * * @ingroup Deployment * @since 1.17 */ @@ -46,8 +46,7 @@ class OracleInstaller extends DatabaseInstaller { Html::element( 'legend', array(), wfMsg( 'config-db-web-account' ) ) . Html::openElement( 'div', array( 'id' => 'dbOtherAccount' ) ) . $this->getTextBox( 'wgDBuser', 'config-db-username' ) . - $this->getPasswordBox( 'wgDBpassword', 'config-db-password' ) . - $this->parent->getHelpBox( 'config-db-web-help' ). + $this->getPasswordBox( 'wgDBpassword', 'config-db-password', array(), $this->parent->getHelpBox( 'config-db-web-help' ) ) . $this->getCheckBox( '_CreateDBAccount', 'config-db-web-create', array( 'disabled' => true ) ). Html::closeElement( 'div' ) . Html::closeElement( 'fieldset' ); } @@ -56,14 +55,12 @@ class OracleInstaller extends DatabaseInstaller { $this->parent->setVar( '_InstallUser', 'sys' ); $this->parent->setVar( 'wgDBserver', '' ); return - $this->getTextBox( 'wgDBserver', 'config-db-host-oracle' ) . - $this->parent->getHelpBox( 'config-db-host-oracle-help' ) . + $this->getTextBox( 'wgDBserver', 'config-db-host-oracle', array(), $this->parent->getHelpBox( 'config-db-host-oracle-help' ) ) . Html::openElement( 'fieldset' ) . Html::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) . $this->getTextBox( 'wgDBprefix', 'config-db-prefix' ) . $this->getTextBox( '_OracleDefTS', 'config-oracle-def-ts' ) . - $this->getTextBox( '_OracleTempTS', 'config-oracle-temp-ts' ) . - $this->parent->getHelpBox( 'config-db-oracle-help' ) . + $this->getTextBox( '_OracleTempTS', 'config-oracle-temp-ts', array(), $this->parent->getHelpBox( 'config-db-oracle-help' ) ) . Html::closeElement( 'fieldset' ) . $this->getInstallUserBox(). $this->getWebUserBox(); diff --git a/includes/installer/PostgresInstaller.php b/includes/installer/PostgresInstaller.php index 9a0a233b39..9d832f94ab 100644 --- a/includes/installer/PostgresInstaller.php +++ b/includes/installer/PostgresInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using Postgres. - * + * * @ingroup Deployment * @since 1.17 */ @@ -36,23 +36,20 @@ class PostgresInstaller extends DatabaseInstaller { function getConnectForm() { return - $this->getTextBox( 'wgDBserver', 'config-db-host' ) . - $this->parent->getHelpBox( 'config-db-host-help' ) . + $this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) . $this->getTextBox( 'wgDBport', 'config-db-port' ) . Html::openElement( 'fieldset' ) . Html::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) . - $this->getTextBox( 'wgDBname', 'config-db-name' ) . - $this->parent->getHelpBox( 'config-db-name-help' ) . - $this->getTextBox( 'wgDBmwschema', 'config-db-schema' ) . + $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-db-name-help' ) ) . + $this->getTextBox( 'wgDBmwschema', 'config-db-schema', array(), $this->parent->getHelpBox( 'config-db-schema-help' ) ) . $this->getTextBox( 'wgDBts2schema', 'config-db-ts2-schema' ) . - $this->parent->getHelpBox( 'config-db-schema-help' ) . Html::closeElement( 'fieldset' ) . $this->getInstallUserBox(); } function submitConnectForm() { // Get variables from the request - $newValues = $this->setVarsFromRequest( array( 'wgDBserver', 'wgDBport', + $newValues = $this->setVarsFromRequest( array( 'wgDBserver', 'wgDBport', 'wgDBname', 'wgDBmwschema', 'wgDBts2schema' ) ); // Validate them diff --git a/includes/installer/SqliteInstaller.php b/includes/installer/SqliteInstaller.php index 4dccdd1a4c..d191f6e0cb 100644 --- a/includes/installer/SqliteInstaller.php +++ b/includes/installer/SqliteInstaller.php @@ -8,7 +8,7 @@ /** * Class for setting up the MediaWiki database using SQLLite. - * + * * @ingroup Deployment * @since 1.17 */ @@ -41,10 +41,8 @@ class SqliteInstaller extends DatabaseInstaller { } public function getConnectForm() { - return $this->getTextBox( 'wgSQLiteDataDir', 'config-sqlite-dir' ) . - $this->parent->getHelpBox( 'config-sqlite-dir-help' ) . - $this->getTextBox( 'wgDBname', 'config-db-name' ) . - $this->parent->getHelpBox( 'config-sqlite-name-help' ); + return $this->getTextBox( 'wgSQLiteDataDir', 'config-sqlite-dir', array(), $this->parent->getHelpBox( 'config-sqlite-dir-help' ) ) . + $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-sqlite-name-help' ) ); } public function submitConnectForm() { diff --git a/includes/installer/WebInstaller.php b/includes/installer/WebInstaller.php index a676d93081..6d09667166 100644 --- a/includes/installer/WebInstaller.php +++ b/includes/installer/WebInstaller.php @@ -632,21 +632,12 @@ class WebInstaller extends CoreInstaller { array_shift( $args ); $args = array_map( 'htmlspecialchars', $args ); $text = wfMsgReal( $msg, $args, false, false, false ); - $html = $this->parse( $text, true ); - + $html = htmlspecialchars( $text ); + //$html = $this->parse( $text, true ); return - "
\n" . - "
\n" . - $html . - "
\n" . - "\n" . - "\n
\n"; + "\n"; } /** @@ -689,7 +680,7 @@ class WebInstaller extends CoreInstaller { * Label a control by wrapping a config-input div around it and putting a * label before it. */ - public function label( $msg, $forId, $contents ) { + public function label( $msg, $forId, $contents, $helpData = "" ) { if ( strval( $msg ) == '' ) { $labelText = ' '; } else { @@ -703,11 +694,16 @@ class WebInstaller extends CoreInstaller { } return - "
\n" . + "
\n" . + "
\n" . Xml::tags( 'label', $attributes, $labelText ) . "\n" . - $contents . + $helpData . + "
\n" . + "
\n" . + $contents . + "
\n" . "
\n"; } @@ -721,6 +717,7 @@ class WebInstaller extends CoreInstaller { * 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) */ public function getTextBox( $params ) { if ( !isset( $params['controlName'] ) ) { @@ -734,7 +731,9 @@ class WebInstaller extends CoreInstaller { if ( !isset( $params['attribs'] ) ) { $params['attribs'] = array(); } - + if ( !isset( $params['help'] ) ) { + $params['help'] = ""; + } return $this->label( $params['label'], @@ -748,7 +747,8 @@ class WebInstaller extends CoreInstaller { 'class' => 'config-input-text', 'tabindex' => $this->nextTabIndex() ) - ) + ), + $params['help'] ); } @@ -763,6 +763,7 @@ class WebInstaller extends CoreInstaller { * 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) */ public function getPasswordBox( $params ) { if ( !isset( $params['value'] ) ) { @@ -789,6 +790,7 @@ class WebInstaller extends CoreInstaller { * 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) */ public function getCheckBox( $params ) { if ( !isset( $params['controlName'] ) ) { @@ -802,7 +804,9 @@ class WebInstaller extends CoreInstaller { if ( !isset( $params['attribs'] ) ) { $params['attribs'] = array(); } - + if ( !isset( $params['help'] ) ) { + $params['help'] = ""; + } if( isset( $params['rawtext'] ) ) { $labelText = $params['rawtext']; } else { @@ -811,7 +815,8 @@ class WebInstaller extends CoreInstaller { return "
\n" . - "
\n"; } @@ -838,6 +844,7 @@ class WebInstaller extends CoreInstaller { * 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) */ public function getRadioSet( $params ) { if ( !isset( $params['controlName'] ) ) { @@ -851,13 +858,12 @@ class WebInstaller extends CoreInstaller { if ( !isset( $params['label'] ) ) { $label = ''; } else { - $label = $this->parse( wfMsgNoTrans( $params['label'] ) ); + $label = $params['label']; } - - $s = "\n" . - "
' . $this->getFieldSetEnd() ); $this->endForm(); -- 2.20.1