diff options
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() { | 
