summaryrefslogtreecommitdiff
path: root/core/controllers
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-11-02 21:12:15 +0000
committerBharat Mediratta <bharat@menalto.com>2008-11-02 21:12:15 +0000
commit231117b4a3b622df91a5a3234cb97c2fe94cd180 (patch)
tree4004b5e020c4c3bea2293bcfcf1a354b637b6d38 /core/controllers
parent3f21b08e5f7d0a44e69d70ca15286899c598f5eb (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.php32
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() {