Use updatedb.sh from update.sh + various fixes in updatedb.sh

pull/56/head
Aleksander Machniak 12 years ago
parent b7e7c8f950
commit 7e7431bdda

@ -124,7 +124,7 @@ if ($RCI->configured) {
} }
} }
else { 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,29 +143,11 @@ if ($RCI->configured) {
// check database schema // check database schema
if ($RCI->config['db_dsnw']) { if ($RCI->config['db_dsnw']) {
$DB = rcube_db::factory($RCI->config['db_dsnw'], '', false); echo "Executing database schema update.\n";
$DB->db_connect('w'); system(INSTALL_PATH . "bin/updatedb.sh --label=roundcube --version=" . $ops['version']
if ($db_error_msg = $DB->is_error()) { . " --dir=" . INSTALL_PATH . DIRECTORY_SEPARATOR . "SQL", $res);
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']) { $success = !$res;
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";
}
} }
// index contacts for fulltext searching // index contacts for fulltext searching
@ -183,6 +165,4 @@ else {
echo "Open http://url-to-roundcube/installer/ in your browser and follow the instuctions.\n"; echo "Open http://url-to-roundcube/installer/ in your browser and follow the instuctions.\n";
} }
echo "\n";
?> ?>

@ -45,8 +45,27 @@ if (!file_exists($opts['dir'])) {
exit(1); exit(1);
} }
// version is specified, use release-to-version map $RC = rcube::get_instance();
if ($opts['version']) { $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 // Map old release version string to DB schema version
// Note: This is for backward compat. only, do not need to be updated // Note: This is for backward compat. only, do not need to be updated
$map = array( $map = array(
@ -82,28 +101,7 @@ if ($opts['version']) {
$version = $map[$opts['version']]; $version = $map[$opts['version']];
} }
$RC = rcube::get_instance(); // Assume last version before the system table was added
$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
if (empty($version)) { if (empty($version)) {
$version = 2012080700; $version = 2012080700;
} }
@ -162,13 +160,13 @@ function update_db_schema($label, $version, $file)
$DB->query("UPDATE " . $DB->quote_identifier('system') $DB->query("UPDATE " . $DB->quote_identifier('system')
." SET " . $DB->quote_identifier('value') . " = ?" ." SET " . $DB->quote_identifier('value') . " = ?"
." WHERE " . $DB->quote_identifier('name') . " = ?", ." WHERE " . $DB->quote_identifier('name') . " = ?",
$version, $opts['label'] . '-version'); $version, $label . '-version');
if (!$DB->is_error() && !$DB->affected_rows()) { if (!$DB->is_error() && !$DB->affected_rows()) {
$DB->query("INSERT INTO " . $DB->quote_identifier('system') $DB->query("INSERT INTO " . $DB->quote_identifier('system')
." (" . $DB->quote_identifier('name') . ", " . $DB->quote_identifier('value') . ")" ." (" . $DB->quote_identifier('name') . ", " . $DB->quote_identifier('value') . ")"
." VALUES (?, ?)", ." VALUES (?, ?)",
$opts['label'] . '-version', $version); $label . '-version', $version);
} }
return $DB->is_error(); return $DB->is_error();

Loading…
Cancel
Save