diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-01-17 08:35:35 +0100 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-01-17 08:35:35 +0100 |
commit | 393618dacb75c55fbf482e9ee5e368b852bfc6e7 (patch) | |
tree | 00fbf76a43db2ace0cae65f1fb47c95a2cf00583 /installer/rcube_install.php | |
parent | b5b76d2ccb8e28183c078d242e1530508b2686ae (diff) | |
parent | c101871d463963fe5426a2db3ba39cb524a96dbd (diff) |
Merge branch 'schema_upgrades'
Diffstat (limited to 'installer/rcube_install.php')
-rw-r--r-- | installer/rcube_install.php | 43 |
1 files changed, 7 insertions, 36 deletions
diff --git a/installer/rcube_install.php b/installer/rcube_install.php index e6fbc6251..33fd4c675 100644 --- a/installer/rcube_install.php +++ b/installer/rcube_install.php @@ -29,7 +29,6 @@ class rcube_install var $config = array(); var $configured = false; var $last_error = null; - var $db_map = array('pgsql' => 'postgres', 'mysqli' => 'mysql', 'sqlsrv' => 'mssql'); var $email_pattern = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9])'; var $bool_config_props = array(); @@ -609,7 +608,7 @@ class rcube_install */ function init_db($DB) { - $engine = isset($this->db_map[$DB->db_provider]) ? $this->db_map[$DB->db_provider] : $DB->db_provider; + $engine = $DB->db_provider; // read schema file from /SQL/* $fname = INSTALL_PATH . "SQL/$engine.initial.sql"; @@ -631,46 +630,18 @@ class rcube_install /** - * Update database with SQL statements from SQL/*.update.sql + * Update database schema * - * @param object rcube_db Database connection * @param string Version to update from + * * @return boolen True on success, False on error */ - function update_db($DB, $version) + function update_db($version) { - $version = version_parse(strtolower($version)); - $engine = isset($this->db_map[$DB->db_provider]) ? $this->db_map[$DB->db_provider] : $DB->db_provider; - - // read schema file from /SQL/* - $fname = INSTALL_PATH . "SQL/$engine.update.sql"; - if ($lines = @file($fname, FILE_SKIP_EMPTY_LINES)) { - $from = false; $sql = ''; - foreach ($lines as $line) { - $is_comment = preg_match('/^--/', $line); - if (!$from && $is_comment && preg_match('/from version\s([0-9.]+[a-z-]*)/', $line, $m)) { - $v = version_parse(strtolower($m[1])); - if ($v == $version || version_compare($version, $v, '<=')) - $from = true; - } - if ($from && !$is_comment) - $sql .= $line. "\n"; - } - - if ($sql) - $this->exec_sql($sql, $DB); - } - else { - $this->fail('DB Schema', "Cannot read the update file: $fname"); - return false; - } - - if ($err = $this->get_error()) { - $this->fail('DB Schema', "Error updating database: $err"); - return false; - } + system(INSTALL_PATH . "bin/updatedb.sh --package=roundcube --version=" . $version + . " --dir=" . INSTALL_PATH . "SQL", $result); - return true; + return !$result; } |