per-feed filters
This commit is contained in:
parent
2bbd16b947
commit
ead60402dd
4 changed files with 96 additions and 20 deletions
91
backend.php
91
backend.php
|
@ -1165,10 +1165,18 @@
|
|||
$descr = db_escape_string($_GET["d"]);
|
||||
$match = db_escape_string($_GET["m"]);
|
||||
$filter_id = db_escape_string($_GET["id"]);
|
||||
$feed_id = db_escape_string($_GET["fid"]);
|
||||
|
||||
if (!$feed_id) {
|
||||
$feed_id = 'NULL';
|
||||
} else {
|
||||
$feed_id = sprintf("'%s'", db_escape_string($feed_id));
|
||||
}
|
||||
|
||||
$result = db_query($link, "UPDATE ttrss_filters SET
|
||||
reg_exp = '$regexp',
|
||||
description = '$descr',
|
||||
feed_id = $feed_id,
|
||||
filter_type = (SELECT id FROM ttrss_filter_types WHERE
|
||||
description = '$match')
|
||||
WHERE id = '$filter_id'");
|
||||
|
@ -1193,11 +1201,18 @@
|
|||
|
||||
$regexp = db_escape_string(trim($_GET["regexp"]));
|
||||
$match = db_escape_string(trim($_GET["match"]));
|
||||
$feed_id = db_escape_string($_GET["fid"]);
|
||||
|
||||
if (!$feed_id) {
|
||||
$feed_id = 'NULL';
|
||||
} else {
|
||||
$feed_id = sprintf("'%s'", db_escape_string($feed_id));
|
||||
}
|
||||
|
||||
$result = db_query($link,
|
||||
"INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid) VALUES
|
||||
"INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id) VALUES
|
||||
('$regexp', (SELECT id FROM ttrss_filter_types WHERE
|
||||
description = '$match'),'".$_SESSION["uid"]."')");
|
||||
description = '$match'),'".$_SESSION["uid"]."', $feed_id)");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1215,27 +1230,47 @@
|
|||
<td>";
|
||||
print_select("fadd_match", "Title", $filter_types);
|
||||
|
||||
print " <select id=\"fadd_feed\">";
|
||||
|
||||
print "<option selected id=\"0\">All feeds</option>";
|
||||
|
||||
$result = db_query($link, "SELECT id,title FROM ttrss_feeds
|
||||
WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
|
||||
|
||||
if (db_num_rows($result) > 0) {
|
||||
print "<option disabled>--------</option>";
|
||||
}
|
||||
|
||||
while ($line = db_fetch_assoc($result)) {
|
||||
printf("<option id='%d'>%s</option>", $line["id"], $line["title"]);
|
||||
}
|
||||
|
||||
print "</select>";
|
||||
|
||||
print"</td><td colspan=\"4\" align=\"right\">
|
||||
<a class=\"button\" href=\"javascript:addFilter()\">Add filter</a></td></tr>
|
||||
</table>";
|
||||
|
||||
$result = db_query($link, "SELECT
|
||||
id,reg_exp,description,
|
||||
(SELECT name FROM ttrss_filter_types WHERE
|
||||
id = filter_type) as filter_type_name,
|
||||
(SELECT description FROM ttrss_filter_types
|
||||
WHERE id = filter_type) as filter_type_descr
|
||||
ttrss_filters.id AS id,reg_exp,
|
||||
ttrss_filters.description AS description,
|
||||
ttrss_filter_types.name AS filter_type_name,
|
||||
ttrss_filter_types.description AS filter_type_descr,
|
||||
feed_id,
|
||||
(SELECT title FROM ttrss_feeds WHERE id = feed_id) AS feed_title
|
||||
FROM
|
||||
ttrss_filters
|
||||
ttrss_filters,ttrss_filter_types
|
||||
WHERE
|
||||
owner_uid = ".$_SESSION["uid"]."
|
||||
filter_type = ttrss_filter_types.id AND
|
||||
ttrss_filters.owner_uid = ".$_SESSION["uid"]."
|
||||
ORDER by reg_exp");
|
||||
|
||||
print "<p><table width=\"100%\" class=\"prefFilterList\" id=\"prefFilterList\">";
|
||||
|
||||
print "<tr class=\"title\">
|
||||
<td width=\"5%\">Select</td><td width=\"40%\">Filter expression</td>
|
||||
<td width=\"40%\">Description</td><td width=\"10%\">Match</td></tr>";
|
||||
<td width=\"5%\">Select</td><td width=\"30%\">Filter expression</td>
|
||||
<td width=\"30%\">Description</td><td width=\"10%\">Match</td>
|
||||
<td width=\"30%\">Feed</td></tr>";
|
||||
|
||||
$lnum = 0;
|
||||
|
||||
|
@ -1255,6 +1290,8 @@
|
|||
$line["regexp"] = htmlspecialchars($line["reg_exp"]);
|
||||
$line["description"] = htmlspecialchars($line["description"]);
|
||||
|
||||
if (!$line["feed_title"]) $line["feed_title"] = "All feeds";
|
||||
|
||||
if (!$edit_filter_id || $subop != "edit") {
|
||||
|
||||
if (!$line["description"]) $line["description"] = "[No description]";
|
||||
|
@ -1268,7 +1305,11 @@
|
|||
print "<td><a href=\"javascript:editFilter($filter_id);\">" .
|
||||
$line["description"] . "</td>";
|
||||
|
||||
print "<td>".$line["filter_type_descr"]."</td>";
|
||||
print "<td><a href=\"javascript:editFilter($filter_id);\">" .
|
||||
$line["filter_type_descr"] . "</td>";
|
||||
|
||||
print "<td><a href=\"javascript:editFilter($filter_id);\">" .
|
||||
$line["feed_title"] . "</td>";
|
||||
|
||||
} else if ($filter_id != $edit_filter_id) {
|
||||
|
||||
|
@ -1280,6 +1321,7 @@
|
|||
print "<td>".$line["reg_exp"]."</td>";
|
||||
print "<td>".$line["description"]."</td>";
|
||||
print "<td>".$line["filter_type_descr"]."</td>";
|
||||
print "<td>".$line["feed_title"]."</td>";
|
||||
|
||||
} else {
|
||||
|
||||
|
@ -1295,8 +1337,33 @@
|
|||
print_select("iedit_match", $line["filter_type_descr"], $filter_types);
|
||||
print "</td>";
|
||||
|
||||
print "<td>";
|
||||
|
||||
print "<select id=\"iedit_feed\">";
|
||||
|
||||
print "<option id=\"0\">All feeds</option>";
|
||||
|
||||
if (db_num_rows($result) > 0) {
|
||||
print "<option disabled>--------</option>";
|
||||
}
|
||||
|
||||
$tmp_result = db_query($link, "SELECT id,title FROM ttrss_feeds
|
||||
WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
|
||||
|
||||
while ($tmp_line = db_fetch_assoc($tmp_result)) {
|
||||
if ($tmp_line["id"] == $line["feed_id"]) {
|
||||
$is_selected = "selected";
|
||||
} else {
|
||||
$is_selected = "";
|
||||
}
|
||||
printf("<option $is_selected id='%d'>%s</option>",
|
||||
$tmp_line["id"], $tmp_line["title"]);
|
||||
}
|
||||
|
||||
print "</select>";
|
||||
|
||||
print "</td>";
|
||||
}
|
||||
|
||||
print "</tr>";
|
||||
|
||||
|
|
|
@ -217,7 +217,9 @@
|
|||
$result = db_query($link, "SELECT reg_exp,
|
||||
(SELECT name FROM ttrss_filter_types
|
||||
WHERE id = filter_type) as name
|
||||
FROM ttrss_filters WHERE owner_uid = $owner_uid");
|
||||
FROM ttrss_filters WHERE
|
||||
owner_uid = $owner_uid AND
|
||||
(feed_id IS NULL OR feed_id = '$feed')");
|
||||
|
||||
while ($line = db_fetch_assoc($result)) {
|
||||
if (!$filters[$line["name"]]) $filters[$line["name"]] = array();
|
||||
|
|
11
prefs.js
11
prefs.js
|
@ -247,6 +247,7 @@ function addFilter() {
|
|||
|
||||
var regexp = document.getElementById("fadd_regexp");
|
||||
var match = document.getElementById("fadd_match");
|
||||
var feed = document.getElementById("fadd_feed");
|
||||
|
||||
if (regexp.value.length == 0) {
|
||||
notify("Missing filter expression.");
|
||||
|
@ -255,8 +256,11 @@ function addFilter() {
|
|||
|
||||
var v_match = match[match.selectedIndex].text;
|
||||
|
||||
var feed_id = feed[feed.selectedIndex].id;
|
||||
|
||||
xmlhttp.open("GET", "backend.php?op=pref-filters&subop=add®exp=" +
|
||||
param_escape(regexp.value) + "&match=" + v_match, true);
|
||||
param_escape(regexp.value) + "&match=" + v_match +
|
||||
"&fid=" + param_escape(feed_id), true);
|
||||
|
||||
xmlhttp.onreadystatechange=filterlist_callback;
|
||||
xmlhttp.send(null);
|
||||
|
@ -797,6 +801,9 @@ function filterEditSave() {
|
|||
|
||||
var v_match = match[match.selectedIndex].text;
|
||||
|
||||
var feed = document.getElementById("iedit_feed");
|
||||
var feed_id = feed[feed.selectedIndex].id;
|
||||
|
||||
// notify("Saving filter " + filter + ": " + regexp + ", " + descr + ", " + match);
|
||||
|
||||
if (regexp.length == 0) {
|
||||
|
@ -808,7 +815,7 @@ function filterEditSave() {
|
|||
|
||||
xmlhttp.open("GET", "backend.php?op=pref-filters&subop=editSave&id=" +
|
||||
filter + "&r=" + param_escape(regexp) + "&d=" + param_escape(descr) +
|
||||
"&m=" + param_escape(v_match), true);
|
||||
"&m=" + param_escape(v_match) + "&fid=" + param_escape(feed_id), true);
|
||||
|
||||
notify("");
|
||||
|
||||
|
|
|
@ -245,7 +245,7 @@ a:hover {
|
|||
}
|
||||
|
||||
#iedit_title, #iedit_link, #iedit_regexp, #iedit_descr, #iedit_expr, #iedit_updintl,
|
||||
#iedit_purgintl, #iedit_ulogin, #iedit_ulevel {
|
||||
#iedit_purgintl, #iedit_ulogin, #iedit_ulevel, #iedit_match, #iedit_feed {
|
||||
width : 100%;
|
||||
padding-left : 2px;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue