"; print "".__('Filter Editor').""; print ""; print ""; print ""; print ""; $result = db_query($link, "SELECT id,description FROM ttrss_filter_types ORDER BY description"); $filter_types = array(); while ($line = db_fetch_assoc($result)) { //array_push($filter_types, $line["description"]); $filter_types[$line["id"]] = __($line["description"]); } print "
".__("Match")."
"; print "
"; if ($filter_type != 5) { $date_ops_invisible = 'style="display : none"'; } print ""; print __("Date") . " "; $filter_params = array( "before" => __("before"), "after" => __("after")); print_select_hash("filter_date_modifier", $filter_param, $filter_params); print " "; print ""; print ""; print " "; print ""; print "
" . __("on field") . " "; print_select_hash("filter_type", $filter_type, $filter_types, 'onchange="filterDlgCheckType(this)"'); print "
"; print __("in") . " "; print_feed_select($link, "feed_id", $feed_id); print "
"; print "
".__("Perform Action")."
"; print "
"; print ""; $param_hidden = ($action_id == 4 || $action_id == 6 || $action_id == 7) ? "" : "display : none"; print ""; print " " . __("with parameters:") . " "; $param_int_hidden = ($action_id != 7) ? "" : "display : none"; print ""; $param_int_hidden = ($action_id == 7) ? "" : "display : none"; print_label_select($link, "action_param_label", $action_param, $param_int_hidden); print ""; print " "; // tiny layout hack print "
"; print "
".__("Options")."
"; print "
"; print "
"; if ($enabled) { $checked = "checked"; } else { $checked = ""; } print "
"; if ($inverse) { $checked = "checked"; } else { $checked = ""; } print " "; print "
"; print "
"; print "
"; $reg_exp = htmlspecialchars($reg_exp, ENT_QUOTES); // second escaping seems to be needed for javascript print "
"; print ""; print "
"; print " "; print ""; print "]]>"; return; } if ($subop == "editSave") { global $memcache; if ($memcache) $memcache->flush(); $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($_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, action_id = '$action_id', filter_type = '$filter_type', enabled = $enabled, inverse = $inverse, action_param = '$action_param', filter_param = '$filter_param' WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]); if (db_affected_rows($link, $result) != 0) { print_notice(T_sprintf("Saved filter %s", htmlspecialchars($reg_exp))); } } if ($subop == "remove") { if ($memcache) $memcache->flush(); $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") { if ($memcache) $memcache->flush(); $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($_REQUEST["filter_date_modifier"]); if (!$regexp) return; 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, "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id, action_id, action_param, inverse, filter_param) VALUES ('$regexp', '$filter_type','".$_SESSION["uid"]."', $feed_id, '$action_id', '$action_param', $inverse, '$filter_param')"); if (db_affected_rows($link, $result) != 0) { print T_sprintf("Created filter %s", htmlspecialchars($regexp)); } return; } if ($quiet) return; set_pref($link, "_PREFS_ACTIVE_TAB", "filterConfig"); $sort = db_escape_string($_REQUEST["sort"]); if (!$sort || $sort == "undefined") { $sort = "reg_exp"; } $result = db_query($link, "SELECT id,description FROM ttrss_filter_types ORDER BY description"); $filter_types = array(); while ($line = db_fetch_assoc($result)) { //array_push($filter_types, $line["description"]); $filter_types[$line["id"]] = $line["description"]; } $filter_search = db_escape_string($_REQUEST["search"]); if (array_key_exists("search", $_REQUEST)) { $_SESSION["prefs_filter_search"] = $filter_search; } else { $filter_search = $_SESSION["prefs_filter_search"]; } print "
 
"; print " "; print " "; print " "; if (defined('_ENABLE_FEED_DEBUGGING')) { print " "; } if ($filter_search) { $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 = ""; } $result = db_query($link, "SELECT ttrss_filters.id AS id,reg_exp, ttrss_filter_types.name AS filter_type_name, ttrss_filter_types.description AS filter_type_descr, enabled, inverse, feed_id, filter_param, filter_type, ttrss_filter_actions.description AS action_description, ttrss_feeds.title AS feed_title, ttrss_filter_actions.name AS action_name, ttrss_filters.action_param AS action_param FROM ttrss_filter_types,ttrss_filter_actions,ttrss_filters LEFT JOIN ttrss_feeds ON (ttrss_filters.feed_id = ttrss_feeds.id) WHERE filter_type = ttrss_filter_types.id AND $filter_search_query ttrss_filter_actions.id = action_id AND ttrss_filters.owner_uid = ".$_SESSION["uid"]." ORDER by action_description, $sort"); if (db_num_rows($result) != 0) { print "

"; print ""; print ""; $lnum = 0; } $class = ($lnum % 2) ? "even" : "odd"; print ""; $line["reg_exp"] = htmlspecialchars($line["reg_exp"]); if (!$line["feed_title"]) $line["feed_title"] = __("All feeds"); if (array_search($line["action_name"], array("score", "tag", "label")) === false) { $line["action_param"] = false; } if (!$line["action_param"]) { $line["action_param"] = "—"; } else if ($line["action_name"] == "score") { $score_pic = theme_image($link, "images/" . get_score_pic($line["action_param"])); $score_pic = ""; $line["action_param"] = "$score_pic " . $line["action_param"]; } $line["feed_title"] = htmlspecialchars($line["feed_title"]); print ""; $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 = "
α"; $tmp .= "
"; $line["action_param"] = "$tmp " . $line["action_param"]; } if ($line["filter_type"] == 5) { if (!strtotime($line["reg_exp"])) { $line["reg_exp"] = "" . $line["reg_exp"] . ""; } $line["reg_exp"] = __("Date") . " " . $filter_params[$line['filter_param']] . " " . $line["reg_exp"]; } if (!$enabled) { $line["reg_exp"] = "" . $line["reg_exp"] . " " . __("(Disabled)").""; $line["feed_title"] = "" . $line["feed_title"] . ""; $line["filter_type_descr"] = "" . $line["filter_type_descr"] . ""; $line["action_description"] = "" . $line["action_description"] . ""; $line["action_param"] = "" . $line["action_param"] . ""; } $onclick = "onclick='editFilter($filter_id, event)' title='".__('Click to edit')."'"; $inverse_label = ""; if ($inverse) { $inverse_label = " ".__('(Inverse)').""; } print ""; print ""; print ""; print ""; print ""; ++$lnum; } print "
".__('Select:')." ".__('All').", ".__('None')." "; $lnum = 0; $cur_action_description = ""; while ($line = db_fetch_assoc($result)) { $filter_id = $line["id"]; $edit_filter_id = $_REQUEST["id"]; $enabled = sql_bool_to_bool($line["enabled"]); $inverse = sql_bool_to_bool($line["inverse"]); $this_row_id = "id=\"FILRR-$filter_id\""; $line["filter_type_descr"] = __($line["filter_type_descr"]); $line["action_description"] = __($line["action_description"]); if ($line["action_description"] != $cur_action_description) { $cur_action_description = $line["action_description"]; print "
$cur_action_description
  ".__('Match')." ".__('Feed')." ".__('Field')." ".__('Params')."
" . $line["reg_exp"] . "$inverse_label" . $line["feed_title"] . "" . $line["filter_type_descr"] . "" . $line["action_param"] . "
"; } else { print "

"; if (!$filter_search) { print_warning(__('No filters defined.')); } else { print_warning(__('No matching filters found.')); } print "

"; } } ?>