summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-06-29 14:26:10 +0400
committerAndrew Dolgov <[email protected]>2010-06-29 14:26:10 +0400
commite955834551d3ef496bd05c76826363d40b730ea4 (patch)
tree689b523cfcad597d51d5c3c350b42683806c000a
parent50e7dd7d01de742006ebbac9322bc775d0f564a3 (diff)
support import and export of tt-rss preferences in OPML with DOMDocument OPML path
-rw-r--r--functions.php3
-rw-r--r--modules/opml_domdoc.php51
-rw-r--r--opml.php29
3 files changed, 68 insertions, 15 deletions
diff --git a/functions.php b/functions.php
index 7320f0fac..4bf9cee4c 100644
--- a/functions.php
+++ b/functions.php
@@ -824,10 +824,11 @@
$rss_1_date = $item['dc']['date'];
$atom_date = $item['issued'];
if (!$atom_date) $atom_date = $item['updated'];
-
+
if ($atom_date != "") $entry_timestamp = parse_w3cdtf($atom_date);
if ($rss_1_date != "") $entry_timestamp = parse_w3cdtf($rss_1_date);
if ($rss_2_date != "") $entry_timestamp = strtotime($rss_2_date);
+
}
if ($entry_timestamp == "" || $entry_timestamp == -1 || !$entry_timestamp) {
diff --git a/modules/opml_domdoc.php b/modules/opml_domdoc.php
index 51b771337..72eeeb1d6 100644
--- a/modules/opml_domdoc.php
+++ b/modules/opml_domdoc.php
@@ -1,6 +1,8 @@
<?php
function opml_import_domdoc($link, $owner_uid) {
+ $_FILES['opml_file']['tmp_name'] = '/home/fox/opml.php';
+
if (is_file($_FILES['opml_file']['tmp_name'])) {
$doc = DOMDocument::load($_FILES['opml_file']['tmp_name']);
@@ -39,27 +41,50 @@
$feed_url = db_escape_string($outline->attributes->getNamedItem('xmlUrl')->nodeValue);
$site_url = db_escape_string($outline->attributes->getNamedItem('htmlUrl')->nodeValue);
+ $pref_name = db_escape_string($outline->attributes->getNamedItem('pref-name')->nodeValue);
+
if ($cat_title && !$feed_url) {
- db_query($link, "BEGIN");
+ if ($cat_title != "tt-rss-prefs") {
+
+ db_query($link, "BEGIN");
+
+ $result = db_query($link, "SELECT id FROM
+ ttrss_feed_categories WHERE title = '$cat_title' AND
+ owner_uid = '$owner_uid' LIMIT 1");
+
+ if (db_num_rows($result) == 0) {
+
+ printf(__("<li>Adding category <b>%s</b>.</li>"), $cat_title);
+
+ db_query($link, "INSERT INTO ttrss_feed_categories
+ (title,owner_uid)
+ VALUES ('$cat_title', '$owner_uid')");
+ }
+
+ db_query($link, "COMMIT");
+ }
+ }
- $result = db_query($link, "SELECT id FROM
- ttrss_feed_categories WHERE title = '$cat_title' AND
- owner_uid = '$owner_uid' LIMIT 1");
+ // print "$active_category : $feed_title : $feed_url<br>";
- if (db_num_rows($result) == 0) {
+ if ($pref_name) {
+ $parent_node = $outline->parentNode;
- printf(__("<li>Adding category <b>%s</b>.</li>"), $cat_title);
+ if ($parent_node && $parent_node->nodeName == "outline") {
+ $cat_check = $parent_node->attributes->getNamedItem('title')->nodeValue;
+ if ($cat_check == "tt-rss-prefs") {
+ $pref_value = db_escape_string($outline->attributes->getNamedItem('value')->nodeValue);
- db_query($link, "INSERT INTO ttrss_feed_categories
- (title,owner_uid)
- VALUES ('$cat_title', '$owner_uid')");
- }
+ printf("<li>".
+ __("Setting preference key %s to %s")."</li>",
+ $pref_name, $pref_value);
- db_query($link, "COMMIT");
- }
+ set_pref($link, $pref_name, $pref_value);
- // print "$active_category : $feed_title : $feed_url<br>";
+ }
+ }
+ }
if (!$feed_title || !$feed_url) continue;
diff --git a/opml.php b/opml.php
index d808c8f9e..d3a352fa2 100644
--- a/opml.php
+++ b/opml.php
@@ -13,7 +13,11 @@
init_connection($link);
function opml_export($link, $owner_uid, $hide_private_feeds=False) {
- header("Content-type: application/xml+opml");
+ if (!$_REQUEST["debug"]) {
+ header("Content-type: application/xml+opml");
+ } else {
+ header("Content-type: text/xml");
+ }
print "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
print "<opml version=\"1.0\">";
@@ -88,6 +92,26 @@
print "</outline>\n";
}
+ # export tt-rss settings
+
+ print "<outline title=\"tt-rss-prefs\" schema-version=\"".SCHEMA_VERSION."\">";
+
+ $result = db_query($link, "SELECT pref_name, value FROM ttrss_user_prefs WHERE
+ profile IS NULL AND owner_uid = " . $_SESSION["uid"]);
+
+ while ($line = db_fetch_assoc($result)) {
+
+ $name = $line["pref_name"];
+ $value = htmlspecialchars($line["value"]);
+
+ print "<outline pref-name=\"$name\" value=\"$value\">";
+
+ print "</outline>";
+
+ }
+
+ print "</outline>";
+
print "</body></opml>";
}
@@ -125,10 +149,13 @@
login_sequence($link);
$owner_uid = $_SESSION["uid"];
+ header('Content-Type: text/html; charset=utf-8');
+
print "<html>
<head>
<link rel=\"stylesheet\" href=\"utility.css\" type=\"text/css\">
<title>".__("OPML Utility")."</title>
+ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
</head>
<body>
<div class=\"floatingLogo\"><img src=\"images/ttrss_logo.png\"></div>