X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=classes%2Fdbupdater.php;h=c32afedee238dc8a62cb9d72933ac23d813abe77;hb=e52034b4bcce994312ce2af31be0a46a70172691;hp=ffcac7cf7cc3e7a686480b8476df60d5535bbf43;hpb=6322ac79a020ab584d412d782d62b2ee77d7c6cf;p=tt-rss.git diff --git a/classes/dbupdater.php b/classes/dbupdater.php index ffcac7cf..c32afede 100644 --- a/classes/dbupdater.php +++ b/classes/dbupdater.php @@ -1,19 +1,19 @@ dbh = $dbh; + function __construct($pdo, $db_type, $need_version) { + $this->pdo = Db::pdo(); //$pdo; $this->db_type = $db_type; $this->need_version = (int) $need_version; } function getSchemaVersion() { - $result = db_query( "SELECT schema_version FROM ttrss_version"); - return (int) db_fetch_result($result, 0, "schema_version"); + $row = $this->pdo->query("SELECT schema_version FROM ttrss_version")->fetch(); + return (int) $row['schema_version']; } function isUpdateRequired() { @@ -26,40 +26,51 @@ class DbUpdater { if (file_exists($filename)) { return explode(";", preg_replace("/[\r\n]/", "", file_get_contents($filename))); } else { + user_error("DB Updater: schema file for version $version is not found."); return false; } } - function performUpdateTo($version) { + function performUpdateTo($version, $html_output = true) { if ($this->getSchemaVersion() == $version - 1) { $lines = $this->getSchemaLines($version); if (is_array($lines)) { - db_query( "BEGIN"); + $this->pdo->beginTransaction(); foreach ($lines as $line) { if (strpos($line, "--") !== 0 && $line) { - db_query( $line); + if (!$this->pdo->query($line)) { + if ($html_output) { + print_notice("Query: $line"); + print_error("Error: " . implode(", ", $this->pdo->errorInfo())); + } else { + Debug::log("Query: $line"); + Debug::log("Error: " . implode(", ", $this->pdo->errorInfo())); + } + + return false; + } } } $db_version = $this->getSchemaVersion(); if ($db_version == $version) { - db_query( "COMMIT"); + $this->pdo->commit(); return true; } else { - db_query( "ROLLBACK"); + $this->pdo->rollBack(); return false; } } else { - return true; + return false; } } else { return false; } } -} ?> +} \ No newline at end of file