summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/update.sh36
-rwxr-xr-xbin/updatedb.sh50
2 files changed, 32 insertions, 54 deletions
diff --git a/bin/update.sh b/bin/update.sh
index 2015aa904..e1beef053 100755
--- a/bin/update.sh
+++ b/bin/update.sh
@@ -124,7 +124,7 @@ if ($RCI->configured) {
}
}
else {
- echo "Please update your config files manually according to the above messages.\n\n";
+ echo "Please update your config files manually according to the above messages.\n";
}
}
@@ -143,36 +143,18 @@ if ($RCI->configured) {
// check database schema
if ($RCI->config['db_dsnw']) {
- $DB = rcube_db::factory($RCI->config['db_dsnw'], '', false);
- $DB->db_connect('w');
- if ($db_error_msg = $DB->is_error()) {
- echo "Error connecting to database: $db_error_msg\n";
- $success = false;
- }
- else if ($err = $RCI->db_schema_check($DB, false)) {
- $updatefile = INSTALL_PATH . 'SQL/' . (isset($RCI->db_map[$DB->db_provider]) ? $RCI->db_map[$DB->db_provider] : $DB->db_provider) . '.update.sql';
- echo "WARNING: Database schema needs to be updated!\n";
- echo join("\n", $err) . "\n\n";
- $success = false;
-
- if ($opts['version']) {
- echo "Do you want to run the update queries to get the schmea fixed? (y/N)\n";
- $input = trim(fgets(STDIN));
- if (strtolower($input) == 'y') {
- $success = $RCI->update_db($DB, $opts['version']);
- }
- }
-
- if (!$success)
- echo "Open $updatefile and execute all queries below the comment with the currently installed version number.\n";
- }
+ echo "Executing database schema update.\n";
+ system(INSTALL_PATH . "bin/updatedb.sh --label=roundcube --version=" . $ops['version']
+ . " --dir=" . INSTALL_PATH . DIRECTORY_SEPARATOR . "SQL", $res);
+
+ $success = !$res;
}
-
+
// index contacts for fulltext searching
if (version_compare(version_parse($opts['version']), '0.6.0', '<')) {
system(INSTALL_PATH . 'bin/indexcontacts.sh');
}
-
+
if ($success) {
echo "This instance of Roundcube is up-to-date.\n";
echo "Have fun!\n";
@@ -183,6 +165,4 @@ else {
echo "Open http://url-to-roundcube/installer/ in your browser and follow the instuctions.\n";
}
-echo "\n";
-
?>
diff --git a/bin/updatedb.sh b/bin/updatedb.sh
index d2cf1b046..3d37edf61 100755
--- a/bin/updatedb.sh
+++ b/bin/updatedb.sh
@@ -45,8 +45,27 @@ if (!file_exists($opts['dir'])) {
exit(1);
}
-// version is specified, use release-to-version map
-if ($opts['version']) {
+$RC = rcube::get_instance();
+$DB = rcube_db::factory($RC->config->get('db_dsnw'));
+
+// Connect to database
+$DB->db_connect('w');
+if (!$DB->is_connected()) {
+ echo "Error connecting to database: " . $DB->is_error() . ".\n";
+ exit(1);
+}
+
+// Read DB schema version from database
+$DB->query("SELECT " . $DB->quote_identifier('value')
+ ." FROM " . $DB->quote_identifier('system')
+ ." WHERE " . $DB->quote_identifier('name') ." = ?",
+ $opts['label'] . '-version');
+
+$row = $DB->fetch_array();
+$version = $row[0];
+
+// no DB version, but release version is specified
+if (!$version && $opts['version']) {
// Map old release version string to DB schema version
// Note: This is for backward compat. only, do not need to be updated
$map = array(
@@ -82,28 +101,7 @@ if ($opts['version']) {
$version = $map[$opts['version']];
}
-$RC = rcube::get_instance();
-$DB = rcube_db::factory($RC->config->get('db_dsnw'));
-
-// Connect to database
-$DB->db_connect('w');
-if (!$DB->is_connected()) {
- echo "Error connecting to database: " . $DB->is_error() . ".\n";
- exit(1);
-}
-
-// Read DB schema version from database
-if (empty($version)) {
- @$DB->query("SELECT " . $DB->quote_identifier('value')
- ." FROM " . $DB->quote_identifier('system')
- ." WHERE name = ?",
- $opts['label'] . '-version');
-
- $row = $DB->fetch_array();
- $version = $row[0];
-}
-
-// Assume last version without the "system" table
+// Assume last version before the system table was added
if (empty($version)) {
$version = 2012080700;
}
@@ -162,13 +160,13 @@ function update_db_schema($label, $version, $file)
$DB->query("UPDATE " . $DB->quote_identifier('system')
." SET " . $DB->quote_identifier('value') . " = ?"
." WHERE " . $DB->quote_identifier('name') . " = ?",
- $version, $opts['label'] . '-version');
+ $version, $label . '-version');
if (!$DB->is_error() && !$DB->affected_rows()) {
$DB->query("INSERT INTO " . $DB->quote_identifier('system')
." (" . $DB->quote_identifier('name') . ", " . $DB->quote_identifier('value') . ")"
." VALUES (?, ?)",
- $opts['label'] . '-version', $version);
+ $label . '-version', $version);
}
return $DB->is_error();