From 5d42ce553faa3a3eb2a12d66c9b0870ad778c163 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 15 Feb 2021 16:55:55 +0300 Subject: drop legacy DB interface and related sanity checks --- classes/db/mysqli.php | 85 ----------------------------------------------- classes/db/pgsql.php | 91 --------------------------------------------------- 2 files changed, 176 deletions(-) delete mode 100644 classes/db/mysqli.php delete mode 100644 classes/db/pgsql.php (limited to 'classes/db') diff --git a/classes/db/mysqli.php b/classes/db/mysqli.php deleted file mode 100644 index a05b121fc..000000000 --- a/classes/db/mysqli.php +++ /dev/null @@ -1,85 +0,0 @@ -link = mysqli_connect($host, $user, $pass, $db, $port); - else - $this->link = mysqli_connect($host, $user, $pass, $db); - - if ($this->link) { - $this->init(); - - return $this->link; - } else { - print("Unable to connect to database (as $user to $host, database $db): " . mysqli_connect_error()); - exit(102); - } - } - - function escape_string($s, $strip_tags = true) { - if ($strip_tags) $s = strip_tags($s); - - return mysqli_real_escape_string($this->link, $s); - } - - function query($query, $die_on_error = true) { - $result = @mysqli_query($this->link, $query); - if (!$result) { - $this->last_error = @mysqli_error($this->link); - - @mysqli_query($this->link, "ROLLBACK"); - user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"), - $die_on_error ? E_USER_ERROR : E_USER_WARNING); - } - - return $result; - } - - function fetch_assoc($result) { - return mysqli_fetch_assoc($result); - } - - - function num_rows($result) { - return mysqli_num_rows($result); - } - - function fetch_result($result, $row, $param) { - if (mysqli_data_seek($result, $row)) { - $line = mysqli_fetch_assoc($result); - return $line[$param]; - } else { - return false; - } - } - - function close() { - return mysqli_close($this->link); - } - - function affected_rows($result) { - return mysqli_affected_rows($this->link); - } - - function last_error() { - return mysqli_error($this->link); - } - - function last_query_error() { - return $this->last_error; - } - - function init() { - $this->query("SET time_zone = '+0:0'"); - - if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) { - mysqli_set_charset($this->link, MYSQL_CHARSET); - } - - return true; - } - -} diff --git a/classes/db/pgsql.php b/classes/db/pgsql.php deleted file mode 100644 index 98fab6bea..000000000 --- a/classes/db/pgsql.php +++ /dev/null @@ -1,91 +0,0 @@ - 0) { - $string = "$string port=" . $port; - } - - $this->link = pg_connect($string); - - if (!$this->link) { - print("Unable to connect to database (as $user to $host, database $db):" . pg_last_error()); - exit(102); - } - - $this->init(); - - return $this->link; - } - - function escape_string($s, $strip_tags = true) { - if ($strip_tags) $s = strip_tags($s); - - return pg_escape_string($s); - } - - function query($query, $die_on_error = true) { - $result = @pg_query($this->link, $query); - - if (!$result) { - $this->last_error = @pg_last_error($this->link); - - @pg_query($this->link, "ROLLBACK"); - $query = htmlspecialchars($query); // just in case - user_error("Query $query failed: " . ($this->link ? $this->last_error : "No connection"), - $die_on_error ? E_USER_ERROR : E_USER_WARNING); - } - return $result; - } - - function fetch_assoc($result) { - return pg_fetch_assoc($result); - } - - - function num_rows($result) { - return pg_num_rows($result); - } - - function fetch_result($result, $row, $param) { - return pg_fetch_result($result, $row, $param); - } - - function close() { - return pg_close($this->link); - } - - function affected_rows($result) { - return pg_affected_rows($result); - } - - function last_error() { - return pg_last_error($this->link); - } - - function last_query_error() { - return $this->last_error; - } - - function init() { - $this->query("set client_encoding = 'UTF-8'"); - pg_set_client_encoding("UNICODE"); - $this->query("set datestyle = 'ISO, european'"); - $this->query("set TIME ZONE 0"); - $this->query("set cpu_tuple_cost = 0.5"); - - return true; - } -} \ No newline at end of file -- cgit v1.2.3 From 5c4223992fdd8d9046213ea9ed4b3c447a653031 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 15 Feb 2021 22:01:11 +0300 Subject: db-prefs: minor cleanup, add warnings if unknown prefs are requested --- classes/db/prefs.php | 74 ++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'classes/db') diff --git a/classes/db/prefs.php b/classes/db/prefs.php index 24153b19a..44581dbcb 100644 --- a/classes/db/prefs.php +++ b/classes/db/prefs.php @@ -6,9 +6,8 @@ class Db_Prefs { function __construct() { $this->pdo = Db::pdo(); - $this->cache = array(); - - if (!empty($_SESSION["uid"])) $this->cache(); + $this->cache = []; + $this->cache_prefs(); } private function __clone() { @@ -22,31 +21,30 @@ class Db_Prefs { return self::$instance; } - function cache() { - $user_id = $_SESSION["uid"]; - $profile = $_SESSION["profile"] ?? false; + private function cache_prefs() { + if (!empty($_SESSION["uid"])) { + $profile = $_SESSION["profile"] ?? false; - if (!is_numeric($profile) || !$profile || get_schema_version() < 63) $profile = null; + if (!is_numeric($profile) || !$profile || get_schema_version() < 63) $profile = null; - $sth = $this->pdo->prepare("SELECT - value,ttrss_prefs_types.type_name as type_name,ttrss_prefs.pref_name AS pref_name - FROM - ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types - WHERE - (profile = :profile OR (:profile IS NULL AND profile IS NULL)) AND - ttrss_prefs.pref_name NOT LIKE '_MOBILE%' AND - ttrss_prefs_types.id = type_id AND - owner_uid = :uid AND - ttrss_user_prefs.pref_name = ttrss_prefs.pref_name"); + $sth = $this->pdo->prepare("SELECT up.pref_name, pt.type_name, up.value + FROM ttrss_user_prefs up + JOIN ttrss_prefs p ON (up.pref_name = p.pref_name) + JOIN ttrss_prefs_types pt ON (p.type_id = pt.id) + WHERE + up.pref_name NOT LIKE '_MOBILE%' AND + (profile = :profile OR (:profile IS NULL AND profile IS NULL)) AND + owner_uid = :uid"); - $sth->execute([":profile" => $profile, ":uid" => $user_id]); + $sth->execute([":profile" => $profile, ":uid" => $_SESSION["uid"]]); - while ($line = $sth->fetch()) { - if ($user_id == $_SESSION["uid"]) { - $pref_name = $line["pref_name"]; + while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { + $pref_name = $row["pref_name"]; - $this->cache[$pref_name]["type"] = $line["type_name"]; - $this->cache[$pref_name]["value"] = $line["value"]; + $this->cache[$pref_name] = [ + "type" => $row["type_name"], + "value" => $row["value"] + ]; } } } @@ -67,35 +65,37 @@ class Db_Prefs { if (!is_numeric($profile) || !$profile || get_schema_version() < 63) $profile = null; - $sth = $this->pdo->prepare("SELECT - value,ttrss_prefs_types.type_name as type_name - FROM - ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types + $sth = $this->pdo->prepare("SELECT up.pref_name, pt.type_name, up.value + FROM ttrss_user_prefs up + JOIN ttrss_prefs p ON (up.pref_name = p.pref_name) + JOIN ttrss_prefs_types pt ON (p.type_id = pt.id) WHERE + up.pref_name = :pref_name AND (profile = :profile OR (:profile IS NULL AND profile IS NULL)) AND - ttrss_user_prefs.pref_name = :pref_name AND - ttrss_prefs_types.id = type_id AND - owner_uid = :uid AND - ttrss_user_prefs.pref_name = ttrss_prefs.pref_name"); + owner_uid = :uid"); + $sth->execute([":uid" => $user_id, ":profile" => $profile, ":pref_name" => $pref_name]); - if ($row = $sth->fetch()) { + if ($row = $sth->fetch(PDO::FETCH_ASSOC)) { $value = $row["value"]; $type_name = $row["type_name"]; if ($user_id == ($_SESSION["uid"] ?? false)) { - $this->cache[$pref_name]["type"] = $type_name; - $this->cache[$pref_name]["value"] = $value; + $this->cache[$pref_name] = [ + "type" => $row["type_name"], + "value" => $row["value"] + ]; } return $this->convert($value, $type_name); } else if ($die_on_error) { - user_error("Fatal error, unknown preferences key: $pref_name (owner: $user_id)", E_USER_ERROR); - return null; + user_error("Failed retrieving preference $pref_name for user $user_id", E_USER_ERROR); } else { - return null; + user_error("Failed retrieving preference $pref_name for user $user_id", E_USER_WARNING); } + + return null; } function convert($value, $type_name) { -- cgit v1.2.3