installer/rcube_install.php | ●●●●● patch | view | raw | blame | history | |
installer/test.php | ●●●●● patch | view | raw | blame | history |
installer/rcube_install.php
@@ -626,46 +626,18 @@ /** * 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; system(INSTALL_PATH . "bin/updatedb.sh --label=roundcube --version=" . $version . " --dir=" . INSTALL_PATH . "SQL", $result); // 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; } return true; return !$result; } installer/test.php
@@ -157,11 +157,9 @@ } 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 '<p class="warning">Please manually execute the SQL statements from '.$updatefile.' on your database.<br/>'; echo 'See comments in the file and execute queries below the comment with the currently installed version number.</p>'; } if (!($success = $RCI->update_db($_POST['version']))) { echo '<p class="warning">Database schema update failed.</p>'; } } // test database @@ -176,9 +174,8 @@ $RCI->fail('DB Schema', "Database schema differs"); echo '<ul style="margin:0"><li>' . join("</li>\n<li>", $err) . "</li></ul>"; $select = $RCI->versions_select(array('name' => 'version')); echo '<p class="suggestion">You should run the update queries to get the schmea fixed.<br/><br/>Version to update from: ' . $select->show() . ' <input type="submit" name="updatedb" value="Update" /></p>'; // echo '<p class="warning">Please manually execute the SQL statements from '.$updatefile.' on your database.<br/>'; // echo 'See comments in the file and execute queries that are superscribed with the currently installed version number.</p>'; $select->add('0.9 or newer', ''); echo '<p class="suggestion">You should run the update queries to get the schema fixed.<br/><br/>Version to update from: ' . $select->show() . ' <input type="submit" name="updatedb" value="Update" /></p>'; $db_working = false; } else {