diff options
author | Andrew Dolgov <[email protected]> | 2005-11-29 19:43:39 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-11-29 19:43:39 +0100 |
commit | 19c9cb114369de1ecac86d147f08fd78c974eb07 (patch) | |
tree | b0ae53ef467786af9033e23fa57597062d22a3de | |
parent | 53d6935b34e08cad9a72eb929becab0dbd438886 (diff) |
support for filter actions
-rw-r--r-- | backend.php | 77 | ||||
-rw-r--r-- | functions.php | 69 | ||||
-rw-r--r-- | prefs.js | 13 | ||||
-rw-r--r-- | tt-rss.css | 7 |
4 files changed, 127 insertions, 39 deletions
diff --git a/backend.php b/backend.php index 0d59e7902..763c04c68 100644 --- a/backend.php +++ b/backend.php @@ -1903,6 +1903,7 @@ $match = db_escape_string($_GET["m"]); $filter_id = db_escape_string($_GET["id"]); $feed_id = db_escape_string($_GET["fid"]); + $action_id = db_escape_string($_GET["aid"]); if (!$feed_id) { $feed_id = 'NULL'; @@ -1914,6 +1915,7 @@ reg_exp = '$regexp', description = '$descr', feed_id = $feed_id, + action_id = '$action_id', filter_type = (SELECT id FROM ttrss_filter_types WHERE description = '$match') WHERE id = '$filter_id'"); @@ -1939,6 +1941,7 @@ $regexp = db_escape_string(trim($_GET["regexp"])); $match = db_escape_string(trim($_GET["match"])); $feed_id = db_escape_string($_GET["fid"]); + $action_id = db_escape_string($_GET["aid"]); if (!$feed_id) { $feed_id = 'NULL'; @@ -1947,9 +1950,12 @@ } $result = db_query($link, - "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id) VALUES + "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id, + action_id) + VALUES ('$regexp', (SELECT id FROM ttrss_filter_types WHERE - description = '$match'),'".$_SESSION["uid"]."', $feed_id)"); + description = '$match'),'".$_SESSION["uid"]."', + $feed_id, '$action_id')"); } } @@ -1983,22 +1989,39 @@ } print "</select> "; - + + print " Action: "; + + print "<select id=\"fadd_action\">"; + + $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions + ORDER BY name"); + + while ($line = db_fetch_assoc($result)) { + printf("<option id='%d'>%s</option>", $line["id"], $line["description"]); + } + + print "</select> "; + print "<input type=\"submit\" class=\"button\" onclick=\"javascript:addFilter()\" value=\"Add filter\">"; + print "</div>"; + $result = db_query($link, "SELECT 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, + ttrss_filter_actions.description AS action_description, (SELECT title FROM ttrss_feeds WHERE id = feed_id) AS feed_title FROM - ttrss_filters,ttrss_filter_types + ttrss_filters,ttrss_filter_types,ttrss_filter_actions WHERE filter_type = ttrss_filter_types.id AND + ttrss_filter_actions.id = action_id AND ttrss_filters.owner_uid = ".$_SESSION["uid"]." ORDER by reg_exp"); @@ -2016,8 +2039,11 @@ </td</tr>"; print "<tr class=\"title\"> - <td width=\"5%\">Select</td><td width=\"30%\">Filter expression</td> - <td width=\"30%\">Feed</td><td width=\"10%\">Match</td> + <td width=\"5%\">Select</td> + <td width=\"20%\">Filter expression</td> + <td width=\"20%\">Feed</td> + <td width=\"15%\">Match</td> + <td width=\"15%\">Action</td> <td width=\"30%\">Description</td></tr>"; $lnum = 0; @@ -2058,7 +2084,10 @@ print "<td><a href=\"javascript:editFilter($filter_id);\">" . $line["filter_type_descr"] . "</td>"; - + + print "<td><a href=\"javascript:editFilter($filter_id);\">" . + $line["action_description"] . "</td>"; + print "<td><a href=\"javascript:editFilter($filter_id);\">" . $line["description"] . "</td>"; @@ -2072,8 +2101,9 @@ print "<td>".$line["reg_exp"]."</td>"; print "<td>".$line["feed_title"]."</td>"; print "<td>".$line["filter_type_descr"]."</td>"; + print "<td>".$line["action_description"]."</td>"; print "<td>".$line["description"]."</td>"; - + } else { print "<td><input disabled=\"true\" type=\"checkbox\" checked></td>"; @@ -2082,18 +2112,16 @@ "\"></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"); - + + if (db_num_rows($tmp_result) > 0) { + print "<option disabled>--------</option>"; + } + while ($tmp_line = db_fetch_assoc($tmp_result)) { if ($tmp_line["id"] == $line["feed_id"]) { $is_selected = "selected"; @@ -2109,7 +2137,26 @@ print "<td>"; print_select("iedit_match", $line["filter_type_descr"], $filter_types); print "</td>"; + + print "<td>"; + print "<select id=\"iedit_filter_action\">"; + + $tmp_result = db_query($link, "SELECT id,description FROM ttrss_filter_actions + ORDER BY description"); + + while ($tmp_line = db_fetch_assoc($tmp_result)) { + if ($tmp_line["description"] == $line["action_description"]) { + $is_selected = "selected"; + } else { + $is_selected = ""; + } + printf("<option $is_selected id='%d'>%s</option>", + $tmp_line["id"], $tmp_line["description"]); + } + print "</select></td>"; + + print "<td><input id=\"iedit_descr\" value=\"".$line["description"]. "\"></td>"; diff --git a/functions.php b/functions.php index 742ace4af..c0368e22a 100644 --- a/functions.php +++ b/functions.php @@ -232,14 +232,20 @@ $result = db_query($link, "SELECT reg_exp, (SELECT name FROM ttrss_filter_types - WHERE id = filter_type) as name + WHERE id = filter_type) as name, + (SELECT name FROM ttrss_filter_actions + WHERE id = action_id) as action 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(); - array_push($filters[$line["name"]], $line["reg_exp"]); + + $filter["reg_exp"] = $line["reg_exp"]; + $filter["action"] = $line["action"]; + + array_push($filters[$line["name"]], $filter); } $iterator = $rss->items; @@ -374,11 +380,16 @@ $dupcheck_qpart = ""; } - error_reporting(0); - if (is_filtered($entry_title, $entry_content, $entry_link, $filters)) { +// error_reporting(0); + + $filter_name = get_filter_name($entry_title, $entry_content, + $entry_link, $filters); + + if ($filter_name == "filter") { continue; } - error_reporting (DEFAULT_ERROR_LEVEL); + +// error_reporting (DEFAULT_ERROR_LEVEL); $result = db_query($link, "SELECT ref_id FROM ttrss_user_entries WHERE @@ -387,10 +398,20 @@ // okay it doesn't exist - create user entry if (db_num_rows($result) == 0) { + + if ($filter_name != 'catchup') { + $unread = 'true'; + $last_read_qpart = 'NULL'; + } else { + $unread = 'false'; + $last_read_qpart = 'NOW()'; + } + $result = db_query($link, "INSERT INTO ttrss_user_entries - (ref_id, owner_uid, feed_id) - VALUES ('$ref_id', '$owner_uid', '$feed')"); + (ref_id, owner_uid, feed_id, unread, last_read) + VALUES ('$ref_id', '$owner_uid', '$feed', $unread, + $last_read_qpart)"); } $post_needs_update = false; @@ -503,33 +524,43 @@ print "</select>"; } - function is_filtered($title, $content, $link, $filters) { + function get_filter_name($title, $content, $link, $filters) { if ($filters["title"]) { - foreach ($filters["title"] as $title_filter) { - if (preg_match("/$title_filter/i", $title)) - return true; + foreach ($filters["title"] as $filter) { + $reg_exp = $filter["reg_exp"]; + if (preg_match("/$reg_exp/i", $title)) { + return $filter["action"]; + } } } if ($filters["content"]) { - foreach ($filters["content"] as $content_filter) { - if (preg_match("/$content_filter/i", $content)) - return true; + foreach ($filters["content"] as $filter) { + $reg_exp = $filter["reg_exp"]; + if (preg_match("/$reg_exp/i", $content)) { + return $filter["action"]; + } } } if ($filters["both"]) { foreach ($filters["both"] as $filter) { - if (preg_match("/$filter/i", $title) || preg_match("/$filter/i", $content)) - return true; + $reg_exp = $filter["reg_exp"]; + if (preg_match("/$reg_exp/i", $title) || + preg_match("/$reg_exp/i", $content)) { + return $filter["action"]; + } } } if ($filters["link"]) { - foreach ($filters["link"] as $link_filter) { - if (preg_match("/$link_filter/i", $link)) - return true; + $reg_exp = $filter["reg_exp"]; + foreach ($filters["link"] as $filter) { + $reg_exp = $filter["reg_exp"]; + if (preg_match("/$reg_exp/i", $link)) { + return $filter["action"]; + } } } @@ -235,6 +235,7 @@ function addFilter() { var regexp = document.getElementById("fadd_regexp"); var match = document.getElementById("fadd_match"); var feed = document.getElementById("fadd_feed"); + var action = document.getElementById("fadd_action"); if (regexp.value.length == 0) { notify("Missing filter expression."); @@ -242,12 +243,12 @@ function addFilter() { notify("Adding filter..."); var v_match = match[match.selectedIndex].text; - var feed_id = feed[feed.selectedIndex].id; + var action_id = action[action.selectedIndex].id; xmlhttp.open("GET", "backend.php?op=pref-filters&subop=add®exp=" + param_escape(regexp.value) + "&match=" + v_match + - "&fid=" + param_escape(feed_id), true); + "&fid=" + param_escape(feed_id) + "&aid=" + param_escape(action_id), true); xmlhttp.onreadystatechange=filterlist_callback; xmlhttp.send(null); @@ -832,12 +833,15 @@ function filterEditSave() { var regexp = document.getElementById("iedit_regexp").value; var descr = document.getElementById("iedit_descr").value; var match = document.getElementById("iedit_match"); - + var v_match = match[match.selectedIndex].text; var feed = document.getElementById("iedit_feed"); var feed_id = feed[feed.selectedIndex].id; + var action = document.getElementById("iedit_filter_action"); + var action_id = action[action.selectedIndex].id; + // notify("Saving filter " + filter + ": " + regexp + ", " + descr + ", " + match); if (regexp.length == 0) { @@ -849,7 +853,8 @@ 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) + "&fid=" + param_escape(feed_id), true); + "&m=" + param_escape(v_match) + "&fid=" + param_escape(feed_id) + + "&aid=" + param_escape(action_id), true); notify(""); diff --git a/tt-rss.css b/tt-rss.css index 15f87ff29..25ea0c394 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -295,7 +295,7 @@ a:hover { #iedit_title, #iedit_link, #iedit_regexp, #iedit_descr, #iedit_expr, #iedit_updintl, #iedit_purgintl, #iedit_ulogin, #iedit_ulevel, #iedit_match, #iedit_feed, -#iedit_fcat { +#iedit_fcat, #iedit_filter_action { width : 100%; padding-left : 2px; } @@ -651,6 +651,11 @@ span.insensitive { .prefGenericAddBox { margin : 5px; + font-size : small; +} + +.prefGenericAddBox td { + font-size : small; } body.logoutBody { |