implement import/export of labels using OPML

This commit is contained in:
Andrew Dolgov 2011-12-27 16:41:49 +04:00
parent 5ee7470ddf
commit bbefea90a7
3 changed files with 45 additions and 22 deletions

View file

@ -1400,7 +1400,7 @@ class Pref_Feeds extends Protected_Handler {
print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('OPML')."\">";
print "<p>" . __("Using OPML you can export and import your feeds and Tiny Tiny RSS settings.") . " ";
print "<p>" . __("Using OPML you can export and import your feeds, labels and Tiny Tiny RSS settings.") . " ";
print "<span class=\"insensitive\">" . __("Note: Only main settings profile can be migrated using OPML.") . "</span>";

View file

@ -3972,7 +3972,7 @@
db_query($link, "COMMIT");
}
function label_create($link, $caption) {
function label_create($link, $caption, $fg_color = '', $bg_color = '') {
db_query($link, "BEGIN");
@ -3983,8 +3983,8 @@
if (db_num_rows($result) == 0) {
$result = db_query($link,
"INSERT INTO ttrss_labels2 (caption,owner_uid)
VALUES ('$caption', '".$_SESSION["uid"]."')");
"INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color)
VALUES ('$caption', '".$_SESSION["uid"]."', '$fg_color', '$bg_color')");
$result = db_affected_rows($link, $result) != 0;
}

View file

@ -1,5 +1,5 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR .
set_include_path(get_include_path() . PATH_SEPARATOR .
dirname(__FILE__) . "/include");
require_once "functions.php";
@ -38,30 +38,25 @@
foreach ($outlines as $outline) {
$feed_title = db_escape_string($outline->attributes->getNamedItem('text')->nodeValue);
$attributes = $outline->attributes;
if (!$feed_title) {
$feed_title = db_escape_string($outline->attributes->getNamedItem('title')->nodeValue);
}
$feed_title = db_escape_string($attributes->getNamedItem('text')->nodeValue);
if (!$feed_title) $feed_title = db_escape_string($attributes->getNamedItem('title')->nodeValue);
$cat_title = db_escape_string($outline->attributes->getNamedItem('title')->nodeValue);
$cat_title = db_escape_string($attributes->getNamedItem('title')->nodeValue);
if (!$cat_title) $cat_title = db_escape_string($attributes->getNamedItem('text')->nodeValue);
if (!$cat_title) {
$cat_title = db_escape_string($outline->attributes->getNamedItem('text')->nodeValue);
}
$feed_url = db_escape_string($attributes->getNamedItem('xmlUrl')->nodeValue);
if (!$feed_url) $feed_url = db_escape_string($attributes->getNamedItem('xmlURL')->nodeValue);
$feed_url = db_escape_string($outline->attributes->getNamedItem('xmlUrl')->nodeValue);
$site_url = db_escape_string($attributes->getNamedItem('htmlUrl')->nodeValue);
if (!$feed_url)
$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);
$pref_name = db_escape_string($attributes->getNamedItem('pref-name')->nodeValue);
$label_name = db_escape_string($attributes->getNamedItem('label-name')->nodeValue);
if ($cat_title && !$feed_url) {
if ($cat_title != "tt-rss-prefs") {
if ($cat_title != "tt-rss-prefs" && $cat_title != 'tt-rss-labels') {
db_query($link, "BEGIN");
@ -102,6 +97,18 @@
}
}
if ($label_name) {
$fg_color = db_escape_string($attributes->getNamedItem('label-fg-color')->nodeValue);
$bg_color = db_escape_string($attributes->getNamedItem('label-bg-color')->nodeValue);
if (!label_find_id($link, $label_name, $_SESSION['uid'])) {
printf("<li>".__("Adding label %s")."</li>", $label_name);
label_create($link, $label_name, $fg_color, $bg_color);
}
}
if (!$feed_title || !$feed_url) continue;
db_query($link, "BEGIN");
@ -181,10 +188,10 @@
function opml_export($link, $name, $owner_uid, $hide_private_feeds=false, $include_settings=true) {
if (!$_REQUEST["debug"]) {
header("Content-type: application/xml+opml");
header("Content-Disposition: attachment; filename=" . $name );
} else {
header("Content-type: text/xml");
}
header("Content-Disposition: attachment; filename=" . $name );
print "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
@ -281,6 +288,22 @@
}
print "</outline>";
print "<outline title=\"tt-rss-labels\">";
$result = db_query($link, "SELECT * FROM ttrss_labels2 WHERE
owner_uid = " . $_SESSION['uid']);
while ($line = db_fetch_assoc($result)) {
$name = htmlspecialchars($line['caption']);
$fg_color = htmlspecialchars($line['fg_color']);
$bg_color = htmlspecialchars($line['bg_color']);
print "<outline label-name=\"$name\" label-fg-color=\"$fg_color\" label-bg-color=\"$bg_color\"/>";
}
print "</outline>";
}
print "</body></opml>";