From 90acf993417f3109536f4d95f3acdb12065e1631 Mon Sep 17 00:00:00 2001 From: Steven Wittens <steven@10.no-reply.drupal.org> Date: Mon, 31 Jul 2006 19:24:16 +0000 Subject: [PATCH] #75264: Redirect uninstalled default Drupal site to install.php --- includes/database.mysql.inc | 7 +++++++ includes/install.inc | 22 ++++++++++++++++++---- install.php | 18 ++---------------- update.php | 2 +- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/includes/database.mysql.inc b/includes/database.mysql.inc index 731107be851b..db4610884d59 100644 --- a/includes/database.mysql.inc +++ b/includes/database.mysql.inc @@ -51,6 +51,13 @@ function db_connect($url) { // (matched) rows, not the number of affected rows. $connection = @mysql_connect($url['host'], $url['user'], $url['pass'], TRUE, 2); if (!$connection) { + // Redirect to installer if using default DB credentials + if ($url['user'] == 'username' && $url['pass'] == 'password') { + include_once 'includes/install.inc'; + install_goto('install.php'); + } + + // Show error screen otherwise drupal_maintenance_theme(); drupal_set_title('Unable to connect to database server'); print theme('maintenance_page', '<p>If you still have to install Drupal, proceed to the <a href="'. base_path() .'install.php">installation page</a>.</p> diff --git a/includes/install.inc b/includes/install.inc index be8bc8944594..d3aa86a4f21d 100644 --- a/includes/install.inc +++ b/includes/install.inc @@ -19,9 +19,10 @@ define('FILE_NOT_WRITABLE', 64); define('FILE_NOT_EXECUTABLE', 128); -// Initialize the update system if necessary -if (!$install) { - // Include install files for each installed module. +/** + * Initialize the update system by loading all installed module's .install files. + */ +function drupal_load_updates() { foreach (module_list() as $module) { $install_file = './'. drupal_get_path('module', $module) .'/'. $module .'.install'; if (is_file($install_file)) { @@ -30,7 +31,6 @@ } } - /** * Returns an array of available schema versions for a module. * @@ -527,6 +527,20 @@ function drupal_install_fix_file($file, $mask, $message = TRUE) { } } + +/** + * Send the user to a different installer page. This issues an on-site HTTP + * redirect. Messages (and errors) are erased. + * + * @param $path + * An installer path. + */ +function install_goto($path) { + global $base_path; + header('Location: '. $base_path . $path); + exit(); +} + /** * Hardcoded function for doing the equivalent of theme('placeholder') * when the theme system is not available. diff --git a/install.php b/install.php index a37ffa77367d..4189c22bc0bc 100644 --- a/install.php +++ b/install.php @@ -1,7 +1,6 @@ <?php // $Id$ -$install = TRUE; require_once './includes/install.inc'; /** @@ -49,7 +48,7 @@ function install_main() { $profile = preg_replace('/[^a-zA-Z_0-9]/', '', $_GET['profile']); } elseif ($profile = install_select_profile()) { - _install_goto("install.php?profile=$profile"); + install_goto("install.php?profile=$profile"); } else { _install_no_profile_error(); @@ -291,7 +290,7 @@ function install_settings_submit($form_id, $form_values) { drupal_rewrite_settings($settings); // Continue to install profile step - _install_goto("install.php?profile=$profile"); + install_goto("install.php?profile=$profile"); } /** @@ -401,17 +400,4 @@ function install_complete($profile) { print theme('maintenance_page', $output); } -/** - * Send the user to a different installer page. This issues an on-site HTTP - * redirect. Messages (and errors) are erased. - * - * @param $path - * An installer path. - */ -function _install_goto($path) { - global $base_path; - header('Location: '. $base_path . $path); - exit(); -} - install_main(); diff --git a/update.php b/update.php index 9c0ae27ae8c1..3713d2178fb8 100644 --- a/update.php +++ b/update.php @@ -686,8 +686,8 @@ function update_convert_table_utf8($table) { // Access check: if (($access_check == FALSE) || ($user->uid == 1)) { - $install = FALSE; include_once './includes/install.inc'; + drupal_load_updates(); update_fix_schema_version(); update_fix_watchdog_115(); -- GitLab