]> git.wh0rd.org - tt-rss.git/blobdiff - modules/pref-filters.php
prefs: reorganize toolbar buttons
[tt-rss.git] / modules / pref-filters.php
index d0e12f31fac78af5d4214685576f00934e304d6b..afa8eb31260cbc5a447b48821718f57095bfc02f 100644 (file)
@@ -1,11 +1,11 @@
 <?php
        function module_pref_filters($link) {
-               $subop = $_GET["subop"];
-               $quiet = $_GET["quiet"];
+               $subop = $_REQUEST["subop"];
+               $quiet = $_REQUEST["quiet"];
 
                if ($subop == "edit") {
 
-                       $filter_id = db_escape_string($_GET["id"]);
+                       $filter_id = db_escape_string($_REQUEST["id"]);
 
                        $result = db_query($link, 
                                "SELECT * FROM ttrss_filters WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]);
@@ -44,7 +44,7 @@
                        print "<div class=\"dlgSecCont\">";
 
                        if ($filter_type != 5) {
-                               $date_ops_invisible = 'style=\"display : none\"';
+                               $date_ops_invisible = 'style="display : none"';
                        }
 
                        print "<span id=\"filter_dlg_date_mod_box\" $date_ops_invisible>";
        
                        print "</select>";
 
-                       $param_hidden = ($action_id == 4 || $action_id == 6) ? "" : "display : none";
+                       $param_hidden = ($action_id == 4 || $action_id == 6 || $action_id == 7) ? "" : "display : none";
 
                        print "<span id=\"filter_dlg_param_box\" style=\"$param_hidden\">";
                        print " " . __("with parameters:") . " ";
-                       print "<input size=\"20\"
+
+                       $param_int_hidden = ($action_id != 7) ? "" : "display : none";
+
+                       print "<input size=\"20\" style=\"$param_int_hidden\"
                                        onkeypress=\"return filterCR(event, filterEditSave)\"           
                                        name=\"action_param\" value=\"$action_param\">";
+
+                       $param_int_hidden = ($action_id == 7) ? "" : "display : none";
+
+                       print_label_select($link, "action_param_label", $action_param, 
+                               $param_int_hidden);
+
                        print "</span>";
 
                        print "&nbsp;"; // tiny layout hack
 
                if ($subop == "editSave") {
 
-                       $reg_exp = db_escape_string(trim($_GET["reg_exp"]));
-                       $filter_type = db_escape_string(trim($_GET["filter_type"]));
-                       $filter_id = db_escape_string($_GET["id"]);
-                       $feed_id = db_escape_string($_GET["feed_id"]);
-                       $action_id = db_escape_string($_GET["action_id"]); 
-                       $action_param = db_escape_string($_GET["action_param"]); 
-                       $enabled = checkbox_to_sql_bool(db_escape_string($_GET["enabled"]));
-                       $inverse = checkbox_to_sql_bool(db_escape_string($_GET["inverse"]));
+                       $reg_exp = db_escape_string(trim($_REQUEST["reg_exp"]));
+                       $filter_type = db_escape_string(trim($_REQUEST["filter_type"]));
+                       $filter_id = db_escape_string($_REQUEST["id"]);
+                       $feed_id = db_escape_string($_REQUEST["feed_id"]);
+                       $action_id = db_escape_string($_REQUEST["action_id"]); 
+                       $action_param = db_escape_string($_REQUEST["action_param"]); 
+                       $action_param_label = db_escape_string($_REQUEST["action_param_label"]); 
+                       $enabled = checkbox_to_sql_bool(db_escape_string($_REQUEST["enabled"]));
+                       $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"]));
 
                        # for the time being, no other filters use params anyway...
-                       $filter_param = db_escape_string($_GET["filter_date_modifier"]);
+                       $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]);
 
                        if (!$feed_id) {
                                $feed_id = 'NULL';
                        } else {
                                $feed_id = sprintf("'%s'", db_escape_string($feed_id));
                        }
-                       
+
+                       /* When processing 'assign label' filters, action_param_label dropbox
+                        * overrides action_param */
+
+                       if ($action_id == 7) {
+                               $action_param = $action_param_label;
+                       }
+
                        $result = db_query($link, "UPDATE ttrss_filters SET 
                                        reg_exp = '$reg_exp', 
                                        feed_id = $feed_id,
 
                if ($subop == "remove") {
 
-                       $ids = split(",", db_escape_string($_GET["ids"]));
+                       $ids = split(",", db_escape_string($_REQUEST["ids"]));
 
                        foreach ($ids as $id) {
                                db_query($link, "DELETE FROM ttrss_filters WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]);
 
                if ($subop == "add") {
                
-                       $regexp = db_escape_string(trim($_GET["reg_exp"]));
-                       $filter_type = db_escape_string(trim($_GET["filter_type"]));
-                       $feed_id = db_escape_string($_GET["feed_id"]);
-                       $action_id = db_escape_string($_GET["action_id"]); 
-                       $action_param = db_escape_string($_GET["action_param"]); 
-                       $inverse = checkbox_to_sql_bool(db_escape_string($_GET["inverse"]));
+                       $regexp = db_escape_string(trim($_REQUEST["reg_exp"]));
+                       $filter_type = db_escape_string(trim($_REQUEST["filter_type"]));
+                       $feed_id = db_escape_string($_REQUEST["feed_id"]);
+                       $action_id = db_escape_string($_REQUEST["action_id"]); 
+                       $action_param = db_escape_string($_REQUEST["action_param"]); 
+                       $action_param_label = db_escape_string($_REQUEST["action_param_label"]); 
+                       $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"]));
 
                        # for the time being, no other filters use params anyway...
-                       $filter_param = db_escape_string($_GET["filter_date_modifier"]);
+                       $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]);
 
                        if (!$regexp) return;
 
                                $feed_id = sprintf("'%s'", db_escape_string($feed_id));
                        }
 
+                       /* When processing 'assign label' filters, action_param_label dropbox
+                        * overrides action_param */
+
+                       if ($action_id == 7) {
+                               $action_param = $action_param_label;
+                       }
+
                        $result = db_query($link,
                                "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id,
                                        action_id, action_param, inverse, filter_param) 
 
                set_pref($link, "_PREFS_ACTIVE_TAB", "filterConfig");
 
-               $sort = db_escape_string($_GET["sort"]);
+               $sort = db_escape_string($_REQUEST["sort"]);
 
                if (!$sort || $sort == "undefined") {
                        $sort = "reg_exp";
                }
 
 
-               $filter_search = db_escape_string($_GET["search"]);
+               $filter_search = db_escape_string($_REQUEST["search"]);
 
-               if (array_key_exists("search", $_GET)) {
+               if (array_key_exists("search", $_REQUEST)) {
                        $_SESSION["prefs_filter_search"] = $filter_search;
                } else {
                        $filter_search = $_SESSION["prefs_filter_search"];
                                onchange=\"javascript:updateFilterList()\" value=\"$filter_search\">
                        <input type=\"submit\" class=\"button\" 
                        onclick=\"javascript:updateFilterList()\" value=\"".__('Search')."\">
-                       <p<a class='helpLinkPic' href=\"javascript:displayHelpInfobox(2)\">
-                       <img src='images/sign_quest.gif'></a></p>
+                       &nbsp;
+                       <a class='helpLinkPic' href=\"javascript:displayHelpInfobox(2)\">
+                       <img src='images/sign_quest.gif'></a>
                        </div>";
 
 
                        class=\"button\" 
                        onclick=\"return displayDlg('quickAddFilter', false)\" 
                        id=\"create_filter_btn\"
-                       value=\"".__('Create filter')."\">"; 
+                       value=\"".__('Create filter')."\"> "; 
 
-               print "&nbsp;";
+               print "<input type=\"submit\" class=\"button\"
+                       onclick=\"return editSelectedFilter()\" value=\"".__('Edit')."\"> ";
+
+               print "<input type=\"submit\" class=\"button\"
+                               onclick=\"return removeSelectedFilters()\" value=\"".__('Remove')."\"> ";
 
                print "<input type=\"submit\" 
                        class=\"button\" 
                        onclick=\"rescore_all_feeds()\" 
-                       value=\"".__('Rescore articles')."\">"; 
+                       value=\"".__('Rescore articles')."\"> "; 
+
 
                if ($filter_search) {
-                       $filter_search = db_escape_string($filter_search);
-                       $filter_search_query = "(
-                               UPPER(ttrss_filter_actions.description) LIKE UPPER('%$filter_search%') OR 
-                               UPPER(reg_exp) LIKE UPPER('%$filter_search%') OR 
-                               UPPER(ttrss_feeds.title) LIKE UPPER('%$filter_search%') OR
-                               UPPER(ttrss_filter_types.description) LIKE UPPER('%$filter_search%')) AND";
+                       $filter_search = split(' ', db_escape_string($filter_search));
+
+                       $tokens = array();
+
+                       foreach ($filter_search as $token) {
+                               $token = trim($token);
+
+                               array_push($tokens, "(
+                                       UPPER(ttrss_filter_actions.description) LIKE UPPER('%$token%') OR 
+                                       UPPER(reg_exp) LIKE UPPER('%$token%') OR 
+                                       UPPER(action_param) LIKE UPPER('%$token%') OR 
+                                       UPPER(ttrss_feeds.title) LIKE UPPER('%$token%') OR
+                                       UPPER(ttrss_filter_types.description) LIKE UPPER('%$token%'))");
+                       }
+
+                       $filter_search_query = "(" . join($tokens, " AND ") . ") AND ";
+
                } else {
                        $filter_search_query = "";
                }
                                enabled,
                                inverse,
                                feed_id,
+                               filter_param,
                                filter_type,
                                ttrss_filter_actions.description AS action_description,
                                ttrss_feeds.title AS feed_title,
                                $class = ($lnum % 2) ? "even" : "odd";
        
                                $filter_id = $line["id"];
-                               $edit_filter_id = $_GET["id"];
+                               $edit_filter_id = $_REQUEST["id"];
 
                                $enabled = sql_bool_to_bool($line["enabled"]);
                                $inverse = sql_bool_to_bool($line["inverse"]);
                                print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"filter\");' 
                                        type=\"checkbox\" id=\"FICHK-".$line["id"]."\"></td>";
 
+                               $filter_params = array(
+                                       "before" => __("before"),
+                                       "after" => __("after"));
+
+                               if ($line["action_name"] == 'label') {
+
+                                       $tmp_result = db_query($link, "SELECT fg_color, bg_color
+                                               FROM ttrss_labels2 WHERE caption = '".
+                                                       db_escape_string($line["action_param"])."' AND
+                                                       owner_uid = " . $_SESSION["uid"]);
+
+                                       $fg_color = db_fetch_result($tmp_result, 0, "fg_color");
+                                       $bg_color = db_fetch_result($tmp_result, 0, "bg_color");
+
+                                       $tmp = "<div class='labelColorIndicator' id='LICID-$id' 
+                                               style='color : $fg_color; background-color : $bg_color'>
+                                               &alpha;";
+                                       $tmp .= "</div>";
+
+                                       $line["action_param"] = "$tmp " . $line["action_param"];
+                               }
+
+                               if ($line["filter_type"] == 5) {
+
+                                       if (!strtotime($line["reg_exp"])) {
+                                               $line["reg_exp"] = "<span class=\"filterDateError\">" . 
+                                                       $line["reg_exp"] . "</span>";
+                                       }
+
+                                       $line["reg_exp"] = __("Date") . " " . 
+                                               $filter_params[$line['filter_param']] . " " .
+                                               $line["reg_exp"];
+                               }
+
                                if (!$enabled) {
                                        $line["reg_exp"] = "<span class=\"insensitive\">" . 
                                                $line["reg_exp"] . " " .  __("(Disabled)")."</span>";
 
                                $onclick = "onclick='editFilter($filter_id)' title='".__('Click to edit')."'";
 
-                               if ($line["filter_type"] == 5 && !strtotime($line["reg_exp"])) {
-                                       $line["reg_exp"] = "<span class=\"filterDateError\">" . 
-                                               $line["reg_exp"] . "</span>";
-                               }
-
                                $inverse_label = "";
 
                                if ($inverse) {
 
                        print "</table>";
 
-                       print "<p id=\"filterOpToolbar\">";
-
-                       print "<input type=\"submit\" class=\"button\" disabled=\"true\"
-                                       onclick=\"return editSelectedFilter()\" value=\"".__('Edit')."\">
-                               <input type=\"submit\" class=\"button\" disabled=\"true\"
-                                       onclick=\"return removeSelectedFilters()\" value=\"".__('Remove')."\">";
-
-                       print "</p>";
-
                } else {
 
                        print "<p>";
                        if (!$filter_search) {
-                               print __('No filters defined.');
+                               print_warning(__('No filters defined.'));
                        } else {
-                               print __('No matching filters found.');
+                               print_warning(__('No matching filters found.'));
                        }
                        print "</p>";
 
                }
        }
+
+       function print_label_select($link, $name, $value, $style = "") {
+
+               $result = db_query($link, "SELECT caption FROM ttrss_labels2
+                       WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY caption");
+
+               print "<select name=\"$name\" style=\"$style\">";
+
+               while ($line = db_fetch_assoc($result)) {
+
+                       $issel = ($line["caption"] == $value) ? "selected" : "";
+
+                       print "<option $issel>" . $line["caption"] . "</option>";
+
+               }
+
+               print "</select>";
+
+
+       }
 ?>