From 56f658711fc0271c41a2f3975e49c5d69bd9573b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Mar 2021 20:25:53 +0300 Subject: use orm for a bunch of short feed/cat queries --- classes/feeds.php | 83 ++++++++++++++++++------------------------ classes/pref/feeds.php | 98 ++++++++++++++++++++------------------------------ classes/rssutils.php | 4 +-- 3 files changed, 76 insertions(+), 109 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index bf165f93a..83e799cbc 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -1843,18 +1843,13 @@ class Feeds extends Handler_Protected { } static function _cat_of_feed($feed) { - $pdo = Db::pdo(); - - $sth = $pdo->prepare("SELECT cat_id FROM ttrss_feeds - WHERE id = ?"); - $sth->execute([$feed]); + $feed = ORM::for_table('ttrss_feeds')->find_one($feed); - if ($row = $sth->fetch()) { - return $row["cat_id"]; + if ($feed) { + return $feed->cat_id; } else { - return false; + return null; } - } private function _color_of($name) { @@ -1905,6 +1900,15 @@ class Feeds extends Handler_Protected { return preg_match("/where('owner_uid', $owner_uid) + ->find_one($id); + + if ($cat) + $cat->delete(); + } + static function _add_cat($feed_cat, $parent_cat_id = false, $order_id = 0) { if (!$feed_cat) return false; @@ -1942,42 +1946,31 @@ class Feeds extends Handler_Protected { return false; } - static function _get_access_key($feed_id, $is_cat, $owner_uid = false) { - + static function _get_access_key($feed_id, bool $is_cat, int $owner_uid = 0) { if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - $is_cat = bool_to_sql_bool($is_cat); - - $pdo = Db::pdo(); - - $sth = $pdo->prepare("SELECT access_key FROM ttrss_access_keys - WHERE feed_id = ? AND is_cat = ? - AND owner_uid = ?"); - $sth->execute([$feed_id, $is_cat, $owner_uid]); + $key = ORM::for_table('ttrss_access_keys') + ->where('owner_uid', $owner_uid) + ->where('feed_id', $feed_id) + ->where('is_cat', $is_cat) + ->find_one(); - if ($row = $sth->fetch()) { - return $row["access_key"]; + if ($key) { + return $key->access_key; } else { - $key = uniqid_short(); + $key = ORM::for_table('ttrss_access_keys')->create(); - $sth = $pdo->prepare("INSERT INTO ttrss_access_keys - (access_key, feed_id, is_cat, owner_uid) - VALUES (?, ?, ?, ?)"); - - $sth->execute([$key, $feed_id, $is_cat, $owner_uid]); + $key->owner_uid = $owner_uid; + $key->feed_id = $feed_id; + $key->is_cat = $is_cat; + $key->access_key = uniqid_short(); - return $key; + if ($key->save()) { + return $key->access_key; + } } } - /** - * Purge a feed old posts. - * - * @param mixed $feed_id The id of the purged feed. - * @param mixed $purge_interval Olderness of purged posts. - * @access public - * @return mixed - */ static function _purge($feed_id, $purge_interval) { if (!$purge_interval) $purge_interval = self::_get_purge_interval($feed_id); @@ -2049,21 +2042,15 @@ class Feeds extends Handler_Protected { } private static function _get_purge_interval($feed_id) { + $feed = ORM::for_table('ttrss_feeds')->find_one($feed_id); - $pdo = Db::pdo(); + if ($feed) { - $sth = $pdo->prepare("SELECT purge_interval, owner_uid FROM ttrss_feeds - WHERE id = ?"); - $sth->execute([$feed_id]); - - if ($row = $sth->fetch()) { - $purge_interval = $row["purge_interval"]; - $owner_uid = $row["owner_uid"]; - - if ($purge_interval == 0) - $purge_interval = get_pref(Prefs::PURGE_OLD_DAYS, $owner_uid); + if ($feed->purge_interval != 0) + return $feed->purge_interval; + else + return get_pref(Prefs::PURGE_OLD_DAYS, $feed->owner_uid); - return $purge_interval; } else { return -1; } diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index c7d4f1925..24bf68c47 100755 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -22,14 +22,16 @@ class Pref_Feeds extends Handler_Protected { return $rv; } - function renamecat() { + function renameCat() { + $cat = ORM::for_table("ttrss_feed_categories") + ->where("owner_uid", $_SESSION["uid"]) + ->find_one($_REQUEST['id']); + $title = clean($_REQUEST['title']); - $id = clean($_REQUEST['id']); - if ($title) { - $sth = $this->pdo->prepare("UPDATE ttrss_feed_categories SET - title = ? WHERE id = ? AND owner_uid = ?"); - $sth->execute([$title, $id, $_SESSION['uid']]); + if ($cat && $title) { + $cat->title = $title; + $cat->save(); } } @@ -513,11 +515,11 @@ class Pref_Feeds extends Handler_Protected { $feed_id = (int)clean($_REQUEST["id"]); - $sth = $this->pdo->prepare("SELECT * FROM ttrss_feeds WHERE id = ? AND - owner_uid = ?"); - $sth->execute([$feed_id, $_SESSION['uid']]); + $row = ORM::for_table('ttrss_feeds') + ->where("owner_uid", $_SESSION["uid"]) + ->find_one($feed_id)->as_array(); - if ($row = $sth->fetch(PDO::FETCH_ASSOC)) { + if ($row) { ob_start(); PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_EDIT_FEED, $feed_id); @@ -720,48 +722,32 @@ class Pref_Feeds extends Handler_Protected { $reset_basic_info = $orig_feed_url != $feed_url; */ - $sth = $this->pdo->prepare("UPDATE ttrss_feeds SET - cat_id = :cat_id, - title = :title, - feed_url = :feed_url, - site_url = :site_url, - update_interval = :upd_intl, - purge_interval = :purge_intl, - auth_login = :auth_login, - auth_pass = :auth_pass, - auth_pass_encrypted = false, - private = :private, - cache_images = :cache_images, - hide_images = :hide_images, - include_in_digest = :include_in_digest, - always_display_enclosures = :always_display_enclosures, - mark_unread_on_update = :mark_unread_on_update, - feed_language = :feed_language - WHERE id = :id AND owner_uid = :uid"); - - $sth->execute([":title" => $feed_title, - ":cat_id" => $cat_id ? $cat_id : null, - ":feed_url" => $feed_url, - ":site_url" => $site_url, - ":upd_intl" => $upd_intl, - ":purge_intl" => $purge_intl, - ":auth_login" => $auth_login, - ":auth_pass" => $auth_pass, - ":private" => (int)$private, - ":cache_images" => (int)$cache_images, - ":hide_images" => (int)$hide_images, - ":include_in_digest" => (int)$include_in_digest, - ":always_display_enclosures" => (int)$always_display_enclosures, - ":mark_unread_on_update" => (int)$mark_unread_on_update, - ":feed_language" => $feed_language, - ":id" => $feed_id, - ":uid" => $_SESSION['uid']]); - -/* if ($reset_basic_info) { - RSSUtils::set_basic_feed_info($feed_id); - } */ - - PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_SAVE_FEED, $feed_id); + $feed = ORM::for_table('ttrss_feeds') + ->where('owner_uid', $_SESSION['uid']) + ->find_one($feed_id); + + if ($feed) { + + $feed->title = $feed_title; + $feed->cat_id = $cat_id ? $cat_id : null; + $feed->feed_url = $feed_url; + $feed->site_url = $site_url; + $feed->update_interval = $upd_intl; + $feed->purge_interval = $purge_intl; + $feed->auth_login = $auth_login; + $feed->auth_pass = $auth_pass; + $feed->private = (int)$private; + $feed->cache_images = (int)$cache_images; + $feed->hide_images = (int)$hide_images; + $feed->feed_language = $feed_language; + $feed->include_in_digest = (int)$include_in_digest; + $feed->always_display_enclosures = (int)$always_display_enclosures; + $feed->mark_unread_on_update = (int)$mark_unread_on_update; + + $feed->save(); + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_SAVE_FEED, $feed_id); + } } else { $feed_data = array(); @@ -874,7 +860,7 @@ class Pref_Feeds extends Handler_Protected { function removeCat() { $ids = explode(",", clean($_REQUEST["ids"])); foreach ($ids as $id) { - $this->remove_feed_category($id, $_SESSION["uid"]); + Feeds::_remove_cat((int)$id, $_SESSION["uid"]); } } @@ -1188,12 +1174,6 @@ class Pref_Feeds extends Handler_Protected { print json_encode($rv); } - private function remove_feed_category($id, $owner_uid) { - $sth = $this->pdo->prepare("DELETE FROM ttrss_feed_categories - WHERE id = ? AND owner_uid = ?"); - $sth->execute([$id, $owner_uid]); - } - static function remove_feed($id, $owner_uid) { if (PluginHost::getInstance()->run_hooks_until(PluginHost::HOOK_UNSUBSCRIBE_FEED, true, $id, $owner_uid)) diff --git a/classes/rssutils.php b/classes/rssutils.php index 73ddaa235..a50440e21 100755 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -1713,9 +1713,9 @@ class RSSUtils { $filters = array(); $feed_id = (int) $feed_id; - $cat_id = (int)Feeds::_cat_of_feed($feed_id); + $cat_id = Feeds::_cat_of_feed($feed_id); - if ($cat_id == 0) + if (empty($cat_id)) $null_cat_qpart = "cat_id IS NULL OR"; else $null_cat_qpart = ""; -- cgit v1.2.3