? includes/.bootstrap.inc.swp
Index: includes/install.core.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.core.inc,v
retrieving revision 1.41
diff -r1.41 install.core.inc
853c853
<   $drivers = drupal_detect_database_types();
---
>   $drivers = drupal_get_database_types();
860d859
<     '#options' => $drivers,
869,934c868,882
<   // Database name.
<   $form['database'] = array(
<     '#type' => 'textfield',
<     '#title' => st('Database name'),
<     '#default_value' => empty($database['database']) ? '' : $database['database'],
<     '#size' => 45,
<     '#required' => TRUE,
<     '#description' => st('The name of the database your @drupal data will be stored in. It must exist on your server before @drupal can be installed.', array('@drupal' => drupal_install_profile_distribution_name())),
<   );
< 
<   // Database username.
<   $form['username'] = array(
<     '#type' => 'textfield',
<     '#title' => st('Database username'),
<     '#default_value' => empty($database['username']) ? '' : $database['username'],
<     '#size' => 45,
<   );
< 
<   // Database password.
<   $form['password'] = array(
<     '#type' => 'password',
<     '#title' => st('Database password'),
<     '#default_value' => empty($database['password']) ? '' : $database['password'],
<     '#size' => 45,
<   );
< 
<   $form['advanced_options'] = array(
<     '#type' => 'fieldset',
<     '#title' => st('Advanced options'),
<     '#collapsible' => TRUE,
<     '#collapsed' => TRUE,
<     '#description' => st("These options are only necessary for some sites. If you're not sure what you should enter here, leave the default settings or check with your hosting provider.")
<   );
< 
<   // Database host.
<   $form['advanced_options']['host'] = array(
<     '#type' => 'textfield',
<     '#title' => st('Database host'),
<     '#default_value' => empty($database['host']) ? 'localhost' : $database['host'],
<     '#size' => 45,
<     // Hostnames can be 255 characters long.
<     '#maxlength' => 255,
<     '#required' => TRUE,
<     '#description' => st('If your database is located on a different server, change this.'),
<   );
< 
<   // Database port.
<   $form['advanced_options']['port'] = array(
<     '#type' => 'textfield',
<     '#title' => st('Database port'),
<     '#default_value' => empty($database['port']) ? '' : $database['port'],
<     '#size' => 45,
<     // The maximum port number is 65536, 5 digits.
<     '#maxlength' => 5,
<     '#description' => st('If your database server is listening to a non-standard port, enter its number.'),
<   );
< 
<   // Table prefix.
<   $db_prefix = ($profile == 'standard') ? 'drupal_' : $profile . '_';
<   $form['advanced_options']['db_prefix'] = array(
<     '#type' => 'textfield',
<     '#title' => st('Table prefix'),
<     '#default_value' => '',
<     '#size' => 45,
<     '#description' => st('If more than one application will be sharing this database, enter a table prefix such as %prefix for your @drupal site here.', array('@drupal' => drupal_install_profile_distribution_name(), '%prefix' => $db_prefix)),
<   );
---
>   // Add driver specific configuration options.
>   foreach ($drivers as $key => $driver) {
>     $form['driver']['#options'][$key] = $driver->name();
> 
>     $form['settings'][$key] = $driver->getFormOptions($database);
>     $form['settings'][$key]['#prefix'] = '<div class="js-hide">' . st('@driver_name settings', array('@driver_name' => $driver->name())) . '</div>';
>     $form['settings'][$key]['#type'] = 'container';
>     $form['settings'][$key]['#tree'] = TRUE;
>     $form['settings'][$key]['advanced_options']['#parents'] = array($key);
>     $form['settings'][$key]['#states'] = array(
>       'visible' => array(
>         ':input[name=driver]' => array('value' => $key),
>       )
>     );
>   }
939a888,892
>     '#limit_validation_errors' => array(
>       array('driver'),
>       array(isset($form_state['input']['driver']) ? $form_state['input']['driver'] : current($drivers_keys)),
>     ),
>     '#submit' => array('install_settings_form_submit'),
944d896
<   $form['_database'] = array('#type' => 'value');
952a905,909
>   $driver = $form_state['values']['driver'];
>   $database = $form_state['values'][$driver];
>   $database['driver'] = $driver;
>   $form_state['storage']['database'] = $database;
> 
955c912
<   $form_state['values']['prefix'] = $form_state['values']['db_prefix'];
---
>   $database['prefix'] = $database['db_prefix'];
957,958c914
<   form_set_value($form['_database'], $form_state['values'], $form_state);
<   $errors = install_database_errors($form_state['values'], $form_state['values']['settings_file']);
---
>   $errors = install_database_errors($database, $form_state['values']['settings_file']);
970,977d925
<   // Verify the table prefix.
<   if (!empty($database['prefix']) && is_string($database['prefix']) && !preg_match('/^[A-Za-z0-9_.]+$/', $database['prefix'])) {
<     $errors['prefix'] = st('The database table prefix you have entered, %prefix, is invalid. The table prefix can only contain alphanumeric characters, periods, or underscores.', array('%prefix' => $database['prefix']));
<   }
< 
<   if (!empty($database['port']) && !is_numeric($database['port'])) {
<     $errors['db_port'] = st('Database port must be a number.');
<   }
980c928
<   $database_types = drupal_detect_database_types();
---
>   $database_types = drupal_get_database_types();
985a934,936
>     // Run driver specific validation
>     $errors += $database_types[$driver]->validateDatabaseSettings($database);
> 
1012c963
<   $database = array_intersect_key($form_state['values']['_database'], array_flip(array('driver', 'database', 'username', 'password', 'host', 'port', 'prefix')));
---
>   $database = $form_state['storage']['database'];
Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.146
diff -r1.146 install.inc
192a193,194
>   global $install_state;
> 
195,196c197
<   if (drupal_installation_attempted()) {
<     global $install_state;
---
>   if (drupal_installation_attempted() && isset($install_state['profile_info']['distribution_name'])) {
232a234,249
>   $databases = drupal_get_database_types();
> 
>   foreach ($databases as $driver => $installer) {
>     $databases[$driver] = $installer->name();
>   }
> 
>   return $databases;
> }
> 
> /**
>  * Return all supported database installer objects that are compiled into PHP.
>  *
>  * @return
>  *  An array of database installer objects compiled into PHP.
>  */
> function drupal_get_database_types() {
252c269
<       $databases[$driver] = $installer->name();
---
>       $databases[$driver] = $installer;
447a465,569
> 
>   /**
>    * Return driver specific configuration options.
>    *
>    * @param $database
>    * @return
>    *   The options form array.
>    */
>   public function getFormOptions($database) {
>     $form['database'] = array(
>       '#type' => 'textfield',
>       '#title' => st('Database name'),
>       '#default_value' => empty($database['database']) ? '' : $database['database'],
>       '#size' => 45,
>       '#required' => TRUE,
>       '#description' => st('The name of the database your @drupal data will be stored in. It must exist on your server before @drupal can be installed.', array('@drupal' => drupal_install_profile_distribution_name())),
>     );
> 
>     $form['username'] = array(
>       '#type' => 'textfield',
>       '#title' => st('Database username'),
>       '#default_value' => empty($database['username']) ? '' : $database['username'],
>       '#required' => TRUE,
>       '#size' => 45,
>     );
> 
>     $form['password'] = array(
>       '#type' => 'password',
>       '#title' => st('Database password'),
>       '#default_value' => empty($database['password']) ? '' : $database['password'],
>       '#required' => TRUE,
>       '#size' => 45,
>     );
> 
>     $form['advanced_options'] = array(
>       '#type' => 'fieldset',
>       '#title' => st('Advanced options'),
>       '#collapsible' => TRUE,
>       '#collapsed' => TRUE,
>       '#description' => st("These options are only necessary for some sites. If you're not sure what you should enter here, leave the default settings or check with your hosting provider."),
>       '#weight' => 10,
>     );
> 
>     $profile = drupal_get_profile();
>     $db_prefix = ($profile == 'standard') ? 'drupal_' : $profile . '_';
>     $form['advanced_options']['db_prefix'] = array(
>       '#type' => 'textfield',
>       '#title' => st('Table prefix'),
>       '#default_value' => '',
>       '#size' => 45,
>       '#description' => st('If more than one application will be sharing this database, enter a table prefix such as %prefix for your @drupal site here.', array('@drupal' => drupal_install_profile_distribution_name(), '%prefix' => $db_prefix)),
>       '#weight' => 10,
>     );
> 
>     $form['advanced_options']['host'] = array(
>       '#type' => 'textfield',
>       '#title' => st('Database host'),
>       '#default_value' => empty($database['host']) ? 'localhost' : $database['host'],
>       '#size' => 45,
>       // Hostnames can be 255 characters long.
>       '#maxlength' => 255,
>       '#required' => TRUE,
>       '#description' => st('If your database is located on a different server, change this.'),
>     );
> 
>     $form['advanced_options']['port'] = array(
>       '#type' => 'textfield',
>       '#title' => st('Database port'),
>       '#default_value' => empty($database['port']) ? '' : $database['port'],
>       '#size' => 45,
>       // The maximum port number is 65536, 5 digits.
>       '#maxlength' => 5,
>       '#description' => st('If your database server is listening to a non-standard port, enter its number.'),
>     );
> 
>     return $form;
>   }
> 
>   /**
>    * Validates driver specific configuration settings.
>    *
>    * Checks to ensure correct basic database settings and that a proper
>    * connection to the database can be established.
>    *
>    * @param $database
>    *   An array of driver specific configuration options.
>    * @return
>    *   An array of driver configuration errors, keyed by form element name.
>    */
>   public function validateDatabaseSettings($database) {
>     $errors = array();
> 
>     // Verify the table prefix.
>     if (!empty($database['prefix']) && is_string($database['prefix']) && !preg_match('/^[A-Za-z0-9_.]+$/', $database['prefix'])) {
>       $errors[$database['driver'] . '][advanced_options][db_prefix'] = st('The database table prefix you have entered, %prefix, is invalid. The table prefix can only contain alphanumeric characters, periods, or underscores.', array('%prefix' => $database['prefix']));
>     }
> 
>     // Verify the database port.
>     if (!empty($database['port']) && !is_numeric($database['port'])) {
>       $errors[$database['driver'] . '][advanced_options][port'] =  st('Database port must be a number.');
>     }
> 
>     return $errors;
>   }
> 
448a571
> 
Index: includes/database/sqlite/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/sqlite/install.inc,v
retrieving revision 1.4
diff -r1.4 install.inc
23a24,38
> 
>   public function getFormOptions($database) {
>     $form = parent::getFormOptions($database);
> 
>     // Remove the options that only apply to client/server style databases.
>     unset($form['username'], $form['password'], $form['advanced_options']['host'], $form['advanced_options']['port']);
> 
>     // Make the text more accurate for SQLite.
>     $form['database']['#title'] = st('Database file');
>     $form['database']['#description'] = st('The path and name of the file that your @drupal data will be stored in. @drupal must always have write permissions for both the file and the directory where the database file resides. It is strongly suggested that you choose a path that is outside of the webroot, yet ensure that the directory is writeable by the web server.', array('@drupal' => drupal_install_profile_distribution_name()));
>     $default_database = conf_path(FALSE, TRUE) . '/files/.ht.sqlite';
>     $form['database']['#default_value'] = empty($database['database']) ? $default_database : $database['database'];
>     return $form;
>   }
> 
