implement basic filter search

This commit is contained in:
Andrew Dolgov 2012-08-31 15:14:12 +04:00
parent e8b703878d
commit 69c6e94d35
1 changed files with 19 additions and 1 deletions

View File

@ -106,6 +106,8 @@ class Pref_Filters extends Handler_Protected {
$root['name'] = __('Filters'); $root['name'] = __('Filters');
$root['items'] = array(); $root['items'] = array();
$filter_search = $_SESSION["prefs_filter_search"];
$result = db_query($this->link, "SELECT *, $result = db_query($this->link, "SELECT *,
(SELECT action_id FROM ttrss_filters2_actions (SELECT action_id FROM ttrss_filters2_actions
WHERE filter_id = ttrss_filters2.id ORDER BY id LIMIT 1) AS action_id, WHERE filter_id = ttrss_filters2.id ORDER BY id LIMIT 1) AS action_id,
@ -117,6 +119,7 @@ class Pref_Filters extends Handler_Protected {
FROM ttrss_filters2 WHERE FROM ttrss_filters2 WHERE
owner_uid = ".$_SESSION["uid"]." ORDER BY action_id,reg_exp"); owner_uid = ".$_SESSION["uid"]." ORDER BY action_id,reg_exp");
$action_id = -1; $action_id = -1;
$folder = array(); $folder = array();
$folder['items'] = array(); $folder['items'] = array();
@ -137,6 +140,19 @@ class Pref_Filters extends Handler_Protected {
$name = $this->getFilterName($line["id"]); $name = $this->getFilterName($line["id"]);
$match_ok = false;
if ($filter_search) {
$rules_result = db_query($this->link,
"SELECT reg_exp FROM ttrss_filters2_rules WHERE filter_id = ".$line["id"]);
while ($rule_line = db_fetch_assoc($rules_result)) {
if (mb_strpos($rule_line['reg_exp'], $filter_search) !== false) {
$match_ok = true;
break;
}
}
}
$filter = array(); $filter = array();
$filter['id'] = 'FILTER:' . $line['id']; $filter['id'] = 'FILTER:' . $line['id'];
$filter['bare_id'] = $line['id']; $filter['bare_id'] = $line['id'];
@ -145,8 +161,10 @@ class Pref_Filters extends Handler_Protected {
$filter['checkbox'] = false; $filter['checkbox'] = false;
$filter['enabled'] = sql_bool_to_bool($line["enabled"]); $filter['enabled'] = sql_bool_to_bool($line["enabled"]);
if (!$filter_search || $match_ok) {
array_push($folder['items'], $filter); array_push($folder['items'], $filter);
} }
}
if (count($folder['items']) > 0) { if (count($folder['items']) > 0) {
array_push($root['items'], $folder); array_push($root['items'], $folder);