mirror of
https://github.com/roundcube/roundcubemail.git
synced 2026-03-24 16:56:59 +01:00
Fix bug where the Installer would not warn about required schema upgrade (#7042)
This commit is contained in:
@@ -463,9 +463,23 @@ class rcmail_install
|
||||
|
||||
// read reference schema from mysql.initial.sql
|
||||
$engine = $db->db_provider;
|
||||
$db_schema = $this->db_read_schema(INSTALL_PATH . "SQL/$engine.initial.sql");
|
||||
$db_schema = $this->db_read_schema(INSTALL_PATH . "SQL/$engine.initial.sql", $schema_version);
|
||||
$errors = array();
|
||||
|
||||
// Just check the version
|
||||
if ($schema_version) {
|
||||
$version = rcmail_utils::db_version();
|
||||
|
||||
if (empty($version)) {
|
||||
$errors[] = "Schema version not found";
|
||||
}
|
||||
else if ($schema_version != $version) {
|
||||
$errors[] = "Schema version: {$version} (required: {$schema_version})";
|
||||
}
|
||||
|
||||
return !empty($errors) ? $errors : false;
|
||||
}
|
||||
|
||||
// check list of tables
|
||||
$existing_tables = $db->list_tables();
|
||||
|
||||
@@ -491,7 +505,7 @@ class rcmail_install
|
||||
/**
|
||||
* Utility function to read database schema from an .sql file
|
||||
*/
|
||||
private function db_read_schema($schemafile)
|
||||
private function db_read_schema($schemafile, &$version = null)
|
||||
{
|
||||
$lines = file($schemafile);
|
||||
$schema = array();
|
||||
@@ -503,6 +517,9 @@ class rcmail_install
|
||||
$table_name = end($table_name);
|
||||
$table_name = preg_replace('/[`"\[\]]/', '', $table_name);
|
||||
}
|
||||
else if (preg_match('/insert into/i', $line) && preg_match('/\'roundcube-version\',\s*\'([0-9]+)\'/', $line, $m)) {
|
||||
$version = $m[1];
|
||||
}
|
||||
else if ($table_name && ($line = trim($line))) {
|
||||
if ($line == 'GO' || $line[0] == ')' || $line[strlen($line)-1] == ';') {
|
||||
$table_name = null;
|
||||
|
||||
Reference in New Issue
Block a user