support import and export of tt-rss preferences in OPML with DOMDocument OPML path
This commit is contained in:
parent
50e7dd7d01
commit
e955834551
3 changed files with 69 additions and 16 deletions
|
@ -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) {
|
||||
|
|
|
@ -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,28 +41,51 @@
|
|||
$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") {
|
||||
|
||||
$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, "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");
|
||||
}
|
||||
|
||||
db_query($link, "COMMIT");
|
||||
}
|
||||
|
||||
// print "$active_category : $feed_title : $feed_url<br>";
|
||||
|
||||
if ($pref_name) {
|
||||
$parent_node = $outline->parentNode;
|
||||
|
||||
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);
|
||||
|
||||
printf("<li>".
|
||||
__("Setting preference key %s to %s")."</li>",
|
||||
$pref_name, $pref_value);
|
||||
|
||||
set_pref($link, $pref_name, $pref_value);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$feed_title || !$feed_url) continue;
|
||||
|
||||
db_query($link, "BEGIN");
|
||||
|
|
29
opml.php
29
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>
|
||||
|
|
Loading…
Reference in a new issue