]> git.wh0rd.org - tt-rss.git/commitdiff
support for filter actions
authorAndrew Dolgov <fox@bah.spb.su>
Tue, 29 Nov 2005 18:43:39 +0000 (19:43 +0100)
committerAndrew Dolgov <fox@bah.spb.su>
Tue, 29 Nov 2005 18:43:39 +0000 (19:43 +0100)
backend.php
functions.php
prefs.js
tt-rss.css

index 0d59e7902e87b86f41974f1c1122bdbb7a344aaa..763c04c68b0f016c14ed9abdc8b12d61def5e187 100644 (file)
                        $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';
                                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'");
                                $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';
                                }
 
                                $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')");
                        } 
                }
 
                }
 
                print "</select>&nbsp;";
-       
+
+               print "&nbsp;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>&nbsp;";
+
                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");
 
                                </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;
        
                                        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>";                 
        
                                        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>";
                                                "\"></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";
                                        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>";
        
index 742ace4af9aca17d28a7c11e3ff6ca847044f441..c0368e22a6bab035ec83a2729d435c59a64c8aee 100644 (file)
 
                        $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;
                                                        $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
 
                                                // 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;
                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"];
+                               }
                        }
                }
 
index 421b06a63dc55941bf2b1033c197403007ae1614..1064cb91484c4162d5b3ca3ce4fcc5fc360592e7 100644 (file)
--- a/prefs.js
+++ b/prefs.js
@@ -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&regexp=" +
                        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("");
 
index 15f87ff2952b91cfd7c9de90a56fe71f0e9d922c..25ea0c3944c2bc832e61328043e8cf96279519b7 100644 (file)
@@ -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 {