summaryrefslogtreecommitdiff
path: root/xml-export.php
diff options
context:
space:
mode:
Diffstat (limited to 'xml-export.php')
-rw-r--r--xml-export.php82
1 files changed, 82 insertions, 0 deletions
diff --git a/xml-export.php b/xml-export.php
new file mode 100644
index 000000000..13ab65b9d
--- /dev/null
+++ b/xml-export.php
@@ -0,0 +1,82 @@
+<?
+ /*
+ Exports your starred articles in schema-neutral XML format.
+ */
+
+ require_once "config.php";
+ require_once "functions.php";
+ require_once "db.php";
+
+ define('SCHEMA_VERSION', 1);
+
+ header("Content-Type: application/xml");
+?>
+
+<xmldb>
+
+<?
+ $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
+
+ if (!$link) {
+ if (DB_TYPE == "mysql") {
+ print mysql_error();
+ }
+ // PG seems to display its own errors just fine by default.
+ return;
+ }
+
+ if (DB_TYPE == "pgsql") {
+ pg_query("set client_encoding = 'utf-8'");
+ }
+
+ $result = db_query($link, "SELECT schema_version FROM ttrss_version");
+
+ $schema_version = db_fetch_result($result, 0, "schema_version");
+
+ if ($schema_version != SCHEMA_VERSION) {
+ print "Error: database schema is invalid
+ (got version $schema_version; expected ".SCHEMA_VERSION.")";
+ return;
+ }
+
+ print "<schema_version>$schema_version</schema_version>";
+
+?>
+
+<articles>
+
+<?
+ $result = db_query($link, "SELECT
+ ttrss_entries.title AS title,
+ content,
+ marked,
+ unread,
+ updated,
+ guid,
+ link,
+ date_entered,
+ last_read,
+ comments,
+ ttrss_feeds.feed_url AS feed_url,
+ ttrss_feeds.title AS feed_title
+ FROM
+ ttrss_entries,ttrss_feeds
+ WHERE
+ feed_id = ttrss_feeds.id AND marked = true");
+
+
+ while ($line = db_fetch_assoc($result)) {
+ print "<article>";
+
+ foreach (array_keys($line) as $key) {
+ print "<$key><![CDATA[".$line[$key]."]]></$key>";
+
+ }
+
+ print "</article>";
+ }
+
+?>
+</articles>
+
+</xmldb>