aboutsummaryrefslogtreecommitdiff
path: root/app/views/helpers/export/opml.phtml
blob: 30512b96afe208a723fd68cbe47b5a5396f69781 (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
<?php
/** @var FreshRSS_View $this */

$opml_array = array(
	'head' => array(
		'title' => FreshRSS_Context::$system_conf->title,
		'dateCreated' => date('D, d M Y H:i:s')
	),
	'body' => array()
);

foreach ($this->categories as $key => $cat) {
	$opml_array['body'][$key] = array(
		'text' => $cat->name(),
		'@outlines' => array()
	);

	foreach ($cat->feeds() as $feed) {
		$outline = [
			'text' => htmlspecialchars_decode($feed->name(), ENT_QUOTES),
			'type' => FreshRSS_Export_Service::TYPE_RSS_ATOM,
			'xmlUrl' => htmlspecialchars_decode($feed->url(), ENT_QUOTES),
			'htmlUrl' => htmlspecialchars_decode($feed->website(), ENT_QUOTES),
			'description' => htmlspecialchars_decode($feed->description(), ENT_QUOTES),
		];
		if ($feed->kind() === FreshRSS_Feed::KIND_HTML_XPATH) {
			$outline['type'] = FreshRSS_Export_Service::TYPE_HTML_XPATH;
			/** @var array<string,string> */
			$xPathSettings = $feed->attributes('xpath');
			$outline['frss:xPathItem'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['item'] ?? null];
			$outline['frss:xPathItemTitle'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemTitle'] ?? null];
			$outline['frss:xPathItemContent'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemContent'] ?? null];
			$outline['frss:xPathItemUri'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemUri'] ?? null];
			$outline['frss:xPathItemAuthor'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemAuthor'] ?? null];
			$outline['frss:xPathItemTimestamp'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemTimestamp'] ?? null];
			$outline['frss:xPathItemThumbnail'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemThumbnail'] ?? null];
			$outline['frss:xPathItemCategories'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $xPathSettings['itemCategories'] ?? null];
		}
		if (!empty($feed->filtersAction('read'))) {
			$filters = '';
			foreach ($feed->filtersAction('read') as $filterRead) {
				$filters .= $filterRead->getRawInput() . "\n";
			}
			$filters = trim($filters);
			$outline['frss:filtersActionRead'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $filters];
		}
		if ($feed->pathEntries() != '') {
			$outline['frss:cssFullContent'] = ['namespace' => FreshRSS_Export_Service::FRSS_NAMESPACE, 'value' => $feed->pathEntries()];
		}
		$opml_array['body'][$key]['@outlines'][] = $outline;
	}
}

echo libopml_render($opml_array);