From 4490d03649e1ce1a90274a0dce56fe8e5d2859ae Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 10 Jan 2013 12:32:29 +0100 Subject: Attach updatedb.sh script to the installer interface --- installer/rcube_install.php | 40 ++++++---------------------------------- installer/test.php | 13 +++++-------- 2 files changed, 11 insertions(+), 42 deletions(-) (limited to 'installer') diff --git a/installer/rcube_install.php b/installer/rcube_install.php index 6ef105bc7..29c18d9a5 100644 --- a/installer/rcube_install.php +++ b/installer/rcube_install.php @@ -626,46 +626,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 --label=roundcube --version=" . $version + . " --dir=" . INSTALL_PATH . "SQL", $result); - return true; + return !$result; } diff --git a/installer/test.php b/installer/test.php index e266bf05f..2cd9b5374 100644 --- a/installer/test.php +++ b/installer/test.php @@ -157,11 +157,9 @@ if ($db_working && $_POST['initdb']) { } else if ($db_working && $_POST['updatedb']) { - if (!($success = $RCI->update_db($DB, $_POST['version']))) { - $updatefile = INSTALL_PATH . 'SQL/' . (isset($RCI->db_map[$DB->db_provider]) ? $RCI->db_map[$DB->db_provider] : $DB->db_provider) . '.update.sql'; - echo '

Please manually execute the SQL statements from '.$updatefile.' on your database.
'; - echo 'See comments in the file and execute queries below the comment with the currently installed version number.

'; - } + if (!($success = $RCI->update_db($_POST['version']))) { + echo '

Database schema update failed.

'; + } } // test database @@ -176,9 +174,8 @@ if ($db_working) { $RCI->fail('DB Schema', "Database schema differs"); echo '"; $select = $RCI->versions_select(array('name' => 'version')); - echo '

You should run the update queries to get the schmea fixed.

Version to update from: ' . $select->show() . ' 

'; -// echo '

Please manually execute the SQL statements from '.$updatefile.' on your database.
'; -// echo 'See comments in the file and execute queries that are superscribed with the currently installed version number.

'; + $select->add('0.9 or newer', ''); + echo '

You should run the update queries to get the schema fixed.

Version to update from: ' . $select->show() . ' 

'; $db_working = false; } else { -- cgit v1.2.3