diff --git a/classes/config.php b/classes/config.php index 2c46e1784..ee1d3cb4a 100644 --- a/classes/config.php +++ b/classes/config.php @@ -107,8 +107,9 @@ class Config { private static $instance; private $params = []; + private $schema_version = null; - public static function get_instance() { + public static function get_instance() : Config { if (self::$instance == null) self::$instance = new self(); @@ -133,6 +134,20 @@ class Config { } } + static function get_schema_version(bool $nocache = false) { + return self::get_instance()->_schema_version($nocache); + } + + function _schema_version(bool $nocache = false) { + if (empty($this->schema_version) || $nocache) { + $row = Db::pdo()->query("SELECT schema_version FROM ttrss_version")->fetch(); + + $this->schema_version = (int) $row["schema_version"]; + } + + return $this->schema_version; + } + static function cast_to(string $value, int $type_hint) { switch ($type_hint) { case self::T_BOOL: diff --git a/classes/dbupdater.php b/classes/dbupdater.php index e923c7fcb..d1df31b40 100644 --- a/classes/dbupdater.php +++ b/classes/dbupdater.php @@ -12,8 +12,7 @@ class DbUpdater { } function get_schema_version() { - $row = $this->pdo->query("SELECT schema_version FROM ttrss_version")->fetch(); - return (int) $row['schema_version']; + return Config::get_schema_version(true); } function is_update_required() { diff --git a/classes/feeds.php b/classes/feeds.php index c5f868b1d..416e1c026 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -334,7 +334,7 @@ class Feeds extends Handler_Protected { /* we don't need those */ foreach (["date_entered", "guid", "last_published", "last_marked", "tag_cache", "favicon_avg_color", - "uuid", "label_cache", "yyiw"] as $k) + "uuid", "label_cache", "yyiw", "num_enclosures"] as $k) unset($line[$k]); array_push($reply['content'], $line); diff --git a/classes/prefs.php b/classes/prefs.php index 5ce1b6104..dabe5eac6 100644 --- a/classes/prefs.php +++ b/classes/prefs.php @@ -137,7 +137,7 @@ class Prefs { /** @var PDO */ private $pdo; - public static function get_instance() { + public static function get_instance() : Prefs { if (self::$instance == null) self::$instance = new self(); diff --git a/classes/rssutils.php b/classes/rssutils.php index b6aecb8c9..11a94162c 100755 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -53,11 +53,9 @@ class RSSUtils { } static function update_daemon_common($limit = null, $options = []) { - $schema_version = get_schema_version(); - if (!$limit) $limit = Config::get(Config::DAEMON_FEED_LIMIT); - if ($schema_version != SCHEMA_VERSION) { + if (get_schema_version() != SCHEMA_VERSION) { die("Schema version is wrong, please upgrade the database.\n"); } diff --git a/include/functions.php b/include/functions.php index 746f8d39e..6d845035e 100644 --- a/include/functions.php +++ b/include/functions.php @@ -166,8 +166,6 @@ define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . get_version() . ' (http://tt-rss.org/)'); ini_set('user_agent', SELF_USER_AGENT); - $schema_version = false; - /* compat shims */ function _debug($msg) { @@ -306,13 +304,7 @@ } function get_schema_version() { - $pdo = Db::pdo(); - - $row = $pdo->query("SELECT schema_version FROM ttrss_version")->fetch(); - $version = $row["schema_version"]; - $schema_version = $version; - - return $version; + return Config::get_schema_version(); } function file_is_locked($filename) { diff --git a/include/sessions.php b/include/sessions.php index 23815e182..891a6b3fa 100644 --- a/include/sessions.php +++ b/include/sessions.php @@ -19,25 +19,10 @@ ini_set("session.gc_maxlifetime", $session_expire); ini_set("session.cookie_lifetime", "0"); - function session_get_schema_version() { - global $schema_version; - - if (!$schema_version) { - $row = \Db::pdo()->query("SELECT schema_version FROM ttrss_version")->fetch(); - - $version = $row["schema_version"]; - - $schema_version = $version; - return $version; - } else { - return $schema_version; - } - } - function validate_session() { if (\Config::get(\Config::SINGLE_USER_MODE)) return true; - if (isset($_SESSION["ref_schema_version"]) && $_SESSION["ref_schema_version"] != session_get_schema_version()) { + if (isset($_SESSION["ref_schema_version"]) && $_SESSION["ref_schema_version"] != \Config::get_schema_version()) { $_SESSION["login_error_msg"] = __("Session failed to validate (schema version changed)"); return false; diff --git a/update.php b/update.php index bcb6d6d12..aab84bfdb 100755 --- a/update.php +++ b/update.php @@ -145,9 +145,7 @@ } if (!isset($options['update-schema'])) { - $schema_version = get_schema_version(); - - if ($schema_version != SCHEMA_VERSION) { + if (get_schema_version() != SCHEMA_VERSION) { die("Schema version is wrong, please upgrade the database (--update-schema).\n"); } } diff --git a/update_daemon2.php b/update_daemon2.php index b75f06ae5..1e8b1d072 100755 --- a/update_daemon2.php +++ b/update_daemon2.php @@ -188,9 +188,7 @@ "Maybe another daemon is already running.\n"); } - $schema_version = get_schema_version(); - - if ($schema_version != SCHEMA_VERSION) { + if (get_schema_version() != SCHEMA_VERSION) { die("Schema version is wrong, please upgrade the database.\n"); }