summaryrefslogtreecommitdiff
path: root/installer/rcube_install.php
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-01-17 08:35:35 +0100
committerAleksander Machniak <alec@alec.pl>2013-01-17 08:35:35 +0100
commit393618dacb75c55fbf482e9ee5e368b852bfc6e7 (patch)
tree00fbf76a43db2ace0cae65f1fb47c95a2cf00583 /installer/rcube_install.php
parentb5b76d2ccb8e28183c078d242e1530508b2686ae (diff)
parentc101871d463963fe5426a2db3ba39cb524a96dbd (diff)
Merge branch 'schema_upgrades'
Diffstat (limited to 'installer/rcube_install.php')
-rw-r--r--installer/rcube_install.php43
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;
}