reimplement OPML filter export

This commit is contained in:
Andrew Dolgov 2012-09-01 23:33:56 +04:00
parent ff34bac2bf
commit fd994f1a48
2 changed files with 48 additions and 23 deletions

View File

@ -159,39 +159,62 @@ class Opml extends Handler_Protected {
$out .= "</outline>"; $out .= "</outline>";
/* $out .= "<outline title=\"tt-rss-filters\" schema-version=\"".SCHEMA_VERSION."\">"; $out .= "<outline title=\"tt-rss-filters\" schema-version=\"".SCHEMA_VERSION."\">";
$result = db_query($this->link, "SELECT filter_type, $result = db_query($this->link, "SELECT * FROM ttrss_filters2
reg_exp, WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY id");
action_id,
enabled,
action_param,
inverse,
filter_param,
cat_filter,
ttrss_feeds.feed_url AS feed_url,
ttrss_feed_categories.title AS cat_title
FROM ttrss_filters
LEFT JOIN ttrss_feeds ON (feed_id = ttrss_feeds.id)
LEFT JOIN ttrss_feed_categories ON (ttrss_filters.cat_id = ttrss_feed_categories.id)
WHERE
ttrss_filters.owner_uid = " . $_SESSION['uid']);
while ($line = db_fetch_assoc($result)) { while ($line = db_fetch_assoc($result)) {
$name = htmlspecialchars($line['reg_exp']);
foreach (array('enabled', 'inverse', 'cat_filter') as $b) { foreach (array('enabled', 'inverse', 'cat_filter') as $b) {
$line[$b] = sql_bool_to_bool($line[$b]); $line[$b] = sql_bool_to_bool($line[$b]);
} }
$line["rules"] = array();
$line["actions"] = array();
$tmp_result = db_query($this->link, "SELECT * FROM ttrss_filters2_rules
WHERE filter_id = ".$line["id"]);
while ($tmp_line = db_fetch_assoc($tmp_result)) {
unset($tmp_line["id"]);
unset($tmp_line["filter_id"]);
$cat_filter = sql_bool_to_bool($tmp_line["cat_filter"]);
if ($cat_filter && $tmp_line["cat_id"] || $tmp_line["feed_id"]) {
$tmp_line["feed"] = getFeedTitle($this->link,
$cat_filter ? $tmp_line["cat_id"] : $tmp_line["feed_id"],
$cat_filter);
} else {
$tmp_line["feed"] = "";
}
unset($tmp_line["feed_id"]);
unset($tmp_line["cat_id"]);
array_push($line["rules"], $tmp_line);
}
$tmp_result = db_query($this->link, "SELECT * FROM ttrss_filters2_actions
WHERE filter_id = ".$line["id"]);
while ($tmp_line = db_fetch_assoc($tmp_result)) {
unset($tmp_line["id"]);
unset($tmp_line["filter_id"]);
array_push($line["actions"], $tmp_line);
}
unset($line["id"]);
unset($line["owner_uid"]);
$filter = json_encode($line); $filter = json_encode($line);
$out .= "<outline filter-name=\"$name\">$filter</outline>"; $out .= "<outline filter-type=\"2\">$filter</outline>";
} }
$out .= "</outline>"; */ $out .= "</outline>";
} }
$out .= "</body></opml>"; $out .= "</body></opml>";

View File

@ -2015,7 +2015,7 @@
} }
function getFeedIcon($id) { function getFeedIcon($id, $cat) {
switch ($id) { switch ($id) {
case 0: case 0:
return "images/archive.png"; return "images/archive.png";
@ -2046,8 +2046,10 @@
} }
} }
function getFeedTitle($link, $id) { function getFeedTitle($link, $id, $cat = false) {
if ($id == -1) { if ($cat) {
return getFeedCatTitle($link, $id);
} else if ($id == -1) {
return __("Starred articles"); return __("Starred articles");
} else if ($id == -2) { } else if ($id == -2) {
return __("Published articles"); return __("Published articles");