From b4c47f7e7b4c8220e07115f27c373df20503d576 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 4 Apr 2013 19:15:14 +0400 Subject: add command-line db schema updater --- classes/dbupdater.php | 65 ++++++++++++++++++++++++++++++++++++++++++++++ classes/handler/public.php | 9 +++++++ 2 files changed, 74 insertions(+) create mode 100644 classes/dbupdater.php (limited to 'classes') diff --git a/classes/dbupdater.php b/classes/dbupdater.php new file mode 100644 index 000000000..a9a713273 --- /dev/null +++ b/classes/dbupdater.php @@ -0,0 +1,65 @@ +link = $link; + $this->db_type = $db_type; + $this->need_version = (int) $need_version; + } + + function getSchemaVersion() { + $result = db_query($this->link, "SELECT schema_version FROM ttrss_version"); + return (int) db_fetch_result($result, 0, "schema_version"); + } + + function isUpdateRequired() { + return $this->getSchemaVersion() < $this->need_version; + } + + function getSchemaLines($version) { + $filename = "schema/versions/".$this->db_type."/$version.sql"; + + if (file_exists($filename)) { + return explode(";", preg_replace("/[\r\n]/", "", file_get_contents($filename))); + } else { + return false; + } + } + + function performUpdateTo($version) { + if ($this->getSchemaVersion() == $version - 1) { + + $lines = $this->getSchemaLines($version); + + if (is_array($lines)) { + + db_query($this->link, "BEGIN"); + + foreach ($lines as $line) { + if (strpos($line, "--") !== 0 && $line) { + db_query($this->link, $line); + } + } + + $db_version = $this->getSchemaVersion(); + + if ($db_version == $version) { + db_query($this->link, "COMMIT"); + return true; + } else { + db_query($this->link, "ROLLBACK"); + return false; + } + } else { + return true; + } + } else { + return false; + } + } + +} ?> diff --git a/classes/handler/public.php b/classes/handler/public.php index b8a32cd27..3d3d6727d 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -835,6 +835,15 @@ class Handler_Public extends Handler { print ""; print ""; + } + + function dbupdate() { + + + + + + } } -- cgit v1.2.3