From 64d9a77fde98b47c67dbaef0d4949ec6b0928e01 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 23 Nov 2024 11:54:24 +0300 Subject: switch filters _get_rules_list() to ORM --- classes/Pref_Filters.php | 77 +++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 44 deletions(-) (limited to 'classes') diff --git a/classes/Pref_Filters.php b/classes/Pref_Filters.php index 60998683a..53953b1e5 100644 --- a/classes/Pref_Filters.php +++ b/classes/Pref_Filters.php @@ -188,60 +188,49 @@ class Pref_Filters extends Handler_Protected { } private function _get_rules_list(int $filter_id): string { - $sth = $this->pdo->prepare("SELECT reg_exp, - inverse, - match_on, - feed_id, - cat_id, - cat_filter, - ttrss_filter_types.description AS field - FROM - ttrss_filters2_rules, ttrss_filter_types - WHERE - filter_id = ? AND filter_type = ttrss_filter_types.id - ORDER BY reg_exp"); - $sth->execute([$filter_id]); + $rules = ORM::for_table('ttrss_filters2_rules') + ->table_alias('r') + ->join('ttrss_filter_types', ['r.filter_type', '=', 't.id'], 't') + ->where('filter_id', $filter_id) + ->select_many_expr('r.*, t.description AS field') + ->find_many(); $rv = ""; - while ($line = $sth->fetch()) { - - if ($line["match_on"]) { - $feeds = json_decode($line["match_on"], true); - $feeds_fmt = []; - - foreach ($feeds as $feed_id) { - - if (strpos($feed_id, "CAT:") === 0) { - $feed_id = (int)substr($feed_id, 4); - array_push($feeds_fmt, Feeds::_get_cat_title($feed_id)); - } else { - if ($feed_id) - array_push($feeds_fmt, Feeds::_get_title((int)$feed_id)); - else - array_push($feeds_fmt, __("All feeds")); - } - } + foreach ($rules as $rule) { + if ($rule->match_on) { + $feeds = json_decode($rule->match_on, true); + $feeds_fmt = []; - $where = implode(", ", $feeds_fmt); + foreach ($feeds as $feed_id) { - } else { + if (strpos($feed_id, "CAT:") === 0) { + $feed_id = (int)substr($feed_id, 4); + array_push($feeds_fmt, Feeds::_get_cat_title($feed_id)); + } else { + if ($feed_id) + array_push($feeds_fmt, Feeds::_get_title((int)$feed_id)); + else + array_push($feeds_fmt, __("All feeds")); + } + } - $where = $line["cat_filter"] ? - Feeds::_get_cat_title($line["cat_id"] ?? 0) : - ($line["feed_id"] ? - Feeds::_get_title($line["feed_id"]) : __("All feeds")); - } + $where = implode(", ", $feeds_fmt); -# $where = $line["cat_id"] . "/" . $line["feed_id"]; + } else { + $where = $rule->cat_filter ? + Feeds::_get_cat_title($rule->cat_id ?? 0) : + ($rule->feed_id ? + Feeds::_get_title($rule->feed_id) : __("All feeds")); + } - $inverse = $line["inverse"] ? "inverse" : ""; + $inverse_class = $rule->inverse ? "inverse" : ""; - $rv .= "
  • " . T_sprintf("%s on %s in %s %s", - htmlspecialchars($line["reg_exp"]), - $line["field"], + $rv .= "
  • " . T_sprintf("%s on %s in %s %s", + htmlspecialchars($rule->reg_exp), + $rule->field, $where, - $line["inverse"] ? __("(inverse)") : "") . "
  • "; + $rule->inverse ? __("(inverse)") : "") . ""; } return $rv; -- cgit v1.2.3-54-g00ecf