From 34aa9e20c7ff7d80094bef88b16299cd277a5c07 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 27 Dec 2011 18:37:07 +0400 Subject: [PATCH] implement filter import --- classes/dlg.php | 5 ++-- js/prefs.js | 8 ++++++ opml.php | 65 +++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 71 insertions(+), 7 deletions(-) diff --git a/classes/dlg.php b/classes/dlg.php index 9565dff8..bd18f54d 100644 --- a/classes/dlg.php +++ b/classes/dlg.php @@ -19,6 +19,8 @@ class Dlg extends Protected_Handler { function importOpml() { header("Content-Type: text/html"); # required for iframe + print __("If you have imported labels and/or filters, you might need to reload preferences to see your new data.") . "

"; + print "
"; $owner_uid = $_SESSION["uid"]; @@ -41,7 +43,6 @@ class Dlg extends Protected_Handler { /* Handle OPML import by DOMXML/DOMDocument */ print ""; @@ -49,7 +50,7 @@ class Dlg extends Protected_Handler { print "
"; print ""; print "
"; diff --git a/js/prefs.js b/js/prefs.js index bd386699..27598285 100644 --- a/js/prefs.js +++ b/js/prefs.js @@ -767,6 +767,14 @@ function opmlImportComplete(iframe) { style: "width: 600px", onCancel: function() { updateFeedList(); + updateFilterList(); + updateLabelList(); + }, + execute: function() { + updateFeedList(); + updateFilterList(); + updateLabelList(); + this.hide(); }, content: content}); diff --git a/opml.php b/opml.php index 2190b565..9f4fd97a 100644 --- a/opml.php +++ b/opml.php @@ -109,10 +109,11 @@ $bg_color = db_escape_string($attributes->getNamedItem('label-bg-color')->nodeValue); if (!label_find_id($link, $label_name, $_SESSION['uid'])) { - printf("
  • ".__("Adding label %s")."
  • ", $label_name); + printf("
  • ".__("Adding label %s")."
  • ", htmlspecialchars($label_name)); label_create($link, $label_name, $fg_color, $bg_color); } else { - printf("
  • ".__("Duplicate label: %s")."
  • ", $label_name); + printf("
  • ".__("Duplicate label: %s")."
  • ", + htmlspecialchars($label_name)); } } } @@ -127,9 +128,63 @@ $filter = json_decode($outline->nodeValue, true); if ($filter) { - ///// - - + $reg_exp = db_escape_string($filter['reg_exp']); + $filter_type = (int)$filter['filter_type']; + $action_id = (int)$filter['action_id']; + + $result = db_query($link, "SELECT id FROM ttrss_filters WHERE + reg_exp = '$reg_exp' AND + filter_type = '$filter_type' AND + action_id = '$action_id' AND + owner_uid = " .$_SESSION['uid']); + + if (db_num_rows($result) == 0) { + $enabled = bool_to_sql_bool($filter['enabled']); + $action_param = db_escape_string($filter['action_param']); + $inverse = bool_to_sql_bool($filter['inverse']); + $filter_param = db_escape_string($filter['filter_param']); + $cat_filter = bool_to_sql_bool($filter['cat_filter']); + + $feed_url = db_escape_string($filter['feed_url']); + $cat_title = db_escape_string($filter['cat_title']); + + $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE + feed_url = '$feed_url' AND owner_uid = ".$_SESSION['uid']); + + if (db_num_rows($result) != 0) { + $feed_id = db_fetch_result($result, 0, "id"); + } else { + $feed_id = "NULL"; + } + + $result = db_query($link, "SELECT id FROM ttrss_feed_categories WHERE + title = '$cat_title' AND owner_uid = ".$_SESSION['uid']); + + if (db_num_rows($result) != 0) { + $cat_id = db_fetch_result($result, 0, "id"); + } else { + $cat_id = "NULL"; + } + + printf("
  • ".__("Adding filter %s")."
  • ", htmlspecialchars($reg_exp)); + + $query = "INSERT INTO ttrss_filters (filter_type, action_id, + enabled, inverse, action_param, filter_param, + cat_filter, feed_id, + cat_id, reg_exp, + owner_uid) + VALUES ($filter_type, $action_id, + $enabled, $inverse, '$action_param', '$filter_param', + $cat_filter, $feed_id, + $cat_id, '$reg_exp', ". + $_SESSION['uid'].")"; + + db_query($link, $query); + + } else { + printf("
  • ".__("Duplicate filter %s")."
  • ", htmlspecialchars($reg_exp)); + + } } } } -- 2.39.5