summaryrefslogtreecommitdiff
path: root/xml-export.php
blob: 13ab65b9d1db7b3bf1029091ad80a777091f834f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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>