switch filters _get_rules_list() to ORM

This commit is contained in:
Andrew Dolgov 2024-11-23 11:54:24 +03:00
parent c23b76eb72
commit 64d9a77fde
No known key found for this signature in database
GPG Key ID: 1A56B4FA25D4AF2A

View File

@ -188,26 +188,18 @@ class Pref_Filters extends Handler_Protected {
} }
private function _get_rules_list(int $filter_id): string { private function _get_rules_list(int $filter_id): string {
$sth = $this->pdo->prepare("SELECT reg_exp, $rules = ORM::for_table('ttrss_filters2_rules')
inverse, ->table_alias('r')
match_on, ->join('ttrss_filter_types', ['r.filter_type', '=', 't.id'], 't')
feed_id, ->where('filter_id', $filter_id)
cat_id, ->select_many_expr('r.*, t.description AS field')
cat_filter, ->find_many();
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]);
$rv = ""; $rv = "";
while ($line = $sth->fetch()) { foreach ($rules as $rule) {
if ($rule->match_on) {
if ($line["match_on"]) { $feeds = json_decode($rule->match_on, true);
$feeds = json_decode($line["match_on"], true);
$feeds_fmt = []; $feeds_fmt = [];
foreach ($feeds as $feed_id) { foreach ($feeds as $feed_id) {
@ -226,22 +218,19 @@ class Pref_Filters extends Handler_Protected {
$where = implode(", ", $feeds_fmt); $where = implode(", ", $feeds_fmt);
} else { } else {
$where = $rule->cat_filter ?
$where = $line["cat_filter"] ? Feeds::_get_cat_title($rule->cat_id ?? 0) :
Feeds::_get_cat_title($line["cat_id"] ?? 0) : ($rule->feed_id ?
($line["feed_id"] ? Feeds::_get_title($rule->feed_id) : __("All feeds"));
Feeds::_get_title($line["feed_id"]) : __("All feeds"));
} }
# $where = $line["cat_id"] . "/" . $line["feed_id"]; $inverse_class = $rule->inverse ? "inverse" : "";
$inverse = $line["inverse"] ? "inverse" : ""; $rv .= "<li class='$inverse_class'>" . T_sprintf("%s on %s in %s %s",
htmlspecialchars($rule->reg_exp),
$rv .= "<li class='$inverse'>" . T_sprintf("%s on %s in %s %s", $rule->field,
htmlspecialchars($line["reg_exp"]),
$line["field"],
$where, $where,
$line["inverse"] ? __("(inverse)") : "") . "</li>"; $rule->inverse ? __("(inverse)") : "") . "</li>";
} }
return $rv; return $rv;