diff options
author | Bharat Mediratta <bharat@menalto.com> | 2008-11-02 21:12:15 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2008-11-02 21:12:15 +0000 |
commit | 231117b4a3b622df91a5a3234cb97c2fe94cd180 (patch) | |
tree | 4004b5e020c4c3bea2293bcfcf1a354b637b6d38 /core/controllers | |
parent | 3f21b08e5f7d0a44e69d70ca15286899c598f5eb (diff) |
Change this to be inline instead of an iframe, and fix it up so that
it walks you through creating the database also.
Diffstat (limited to 'core/controllers')
-rw-r--r-- | core/controllers/welcome.php | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/core/controllers/welcome.php b/core/controllers/welcome.php index 1e77ad4a..672252eb 100644 --- a/core/controllers/welcome.php +++ b/core/controllers/welcome.php @@ -21,9 +21,12 @@ class Welcome_Controller extends Template_Controller { public $template = 'welcome.html'; function Index() { + $this->template->syscheck = new View('welcome_syscheck.html'); + $this->template->syscheck->errors = $this->_get_config_errors(); + $this->_create_directories(); } - function Syscheck() { + private function _get_config_errors() { $errors = array(); if (!file_exists(VARPATH)) { $error = new stdClass(); @@ -47,19 +50,34 @@ class Welcome_Controller extends Template_Controller { $error->message2 = "Then edit this file and enter your database configuration settings."; $errors[] = $error; } else if (!is_readable($db_php)) { + $error = new stdClass(); $error->message = "Not readable: $db_php"; $error->instructions[] = "chmod 644 $db_php"; $error->message2 = "Then edit this file and enter your database configuration settings."; $errors[] = $error; + } else { + $old_handler = set_error_handler(array('Welcome_Controller', '_error_handler')); + try { + Database::instance()->connect(); + } catch (Exception $e) { + $error = new stdClass(); + $error->message = "Database error: {$e->getMessage()}"; + $db_name = Kohana::config('database.default.connection.database'); + if (strchr($error->message, "Unknown database")) { + $error->instructions[] = "mysqladmin -uroot create $db_name"; + } else { + $error->instructions = array(); + $error->message2 = "Check " . VARPATH . "database.php"; + } + $errors[] = $error; + } + set_error_handler($old_handler); } - if (empty($errors)) { - Database::instance()->connect(); - } + return $errors; + } - $this->_create_directories(); - $this->template = new View('welcome_syscheck.html'); - $this->template->errors = $errors; + function _error_handler() { } function _create_directories() { |