summaryrefslogtreecommitdiff
path: root/include/feedbrowser.php
blob: 4f37241ea177775c8f6932ea7a68b8164d10076b (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
	function make_feed_browser($search, $limit, $mode = 1) {

		if (defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER) return;

		$rv = '';

        $pdo = Db::pdo();

		if ($search) {
            $search = $pdo->quote($search);

            $search_qpart = "AND (UPPER(feed_url) LIKE UPPER('%$search%') OR
						UPPER(title) LIKE UPPER('%$search%'))";
		} else {
			$search_qpart = "";
		}

		if ($mode == 1) {
			$sth = $pdo->prepare("SELECT feed_url, site_url, title, SUM(subscribers) AS subscribers FROM
						(SELECT feed_url, site_url, title, subscribers FROM ttrss_feedbrowser_cache UNION ALL
							SELECT feed_url, site_url, title, subscribers FROM ttrss_linked_feeds) AS qqq
						WHERE
							(SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf
								WHERE tf.feed_url = qqq.feed_url
									AND owner_uid = ?) $search_qpart
						GROUP BY feed_url, site_url, title ORDER BY subscribers DESC LIMIT " . (int)$limit);
			$sth->execute([$_SESSION['uid']]);

		} else if ($mode == 2) {
			$sth = $pdo->prepare("SELECT *,
						(SELECT COUNT(*) FROM ttrss_user_entries WHERE
					 		orig_feed_id = ttrss_archived_feeds.id) AS articles_archived
						FROM
							ttrss_archived_feeds
						WHERE
						(SELECT COUNT(*) FROM ttrss_feeds
							WHERE ttrss_feeds.feed_url = ttrss_archived_feeds.feed_url AND
								owner_uid = :uid) = 0	AND
						owner_uid = :uid $search_qpart
						ORDER BY id DESC LIMIT " . (int)$limit);

			$sth->execute([":uid" => $_SESSION['uid']]);
		}

		$feedctr = 0;

		while ($line = $sth->fetch()) {

			if ($mode == 1) {

				$feed_url = htmlspecialchars($line["feed_url"]);
				$site_url = htmlspecialchars($line["site_url"]);
				$subscribers = $line["subscribers"];

				$check_box = "<input onclick='Lists.onRowChecked(this)'
							dojoType=\"dijit.form.CheckBox\"
							type=\"checkbox\" \">";

				$site_url = "<a target=\"_blank\" rel=\"noopener noreferrer\"
							href=\"$site_url\">
							<span class=\"fb_feedTitle\">".
				htmlspecialchars($line["title"])."</span></a>";

				$feed_url = "<a target=\"_blank\" rel=\"noopener noreferrer\" class=\"fb_feedUrl\"
							href=\"$feed_url\"><img src='images/pub_set.png'
							style='vertical-align : middle'></a>";

				$rv .= "<li>$check_box $feed_url $site_url".
							"&nbsp;<span class='subscribers'>($subscribers)</span></li>";

			} else if ($mode == 2) {
				$feed_url = htmlspecialchars($line["feed_url"]);
				$site_url = htmlspecialchars($line["site_url"]);

				$check_box = "<input onclick='Lists.onRowChecked(this)' dojoType=\"dijit.form.CheckBox\"
							type=\"checkbox\">";

				if ($line['articles_archived'] > 0) {
					$archived = sprintf(_ngettext("%d archived article", "%d archived articles", (int) $line['articles_archived']), $line['articles_archived']);
					$archived = "&nbsp;<span class='subscribers'>($archived)</span>";
				} else {
					$archived = '';
				}

				$site_url = "<a target=\"_blank\" rel=\"noopener noreferrer\"
							href=\"$site_url\">
							<span class=\"fb_feedTitle\">".
				htmlspecialchars($line["title"])."</span></a>";

				$feed_url = "<a target=\"_blank\" rel=\"noopener noreferrer\" class=\"fb_feedUrl\"
							href=\"$feed_url\"><img src='images/pub_set.png'
							style='vertical-align : middle'></a>";


				$rv .= "<li id=\"FBROW-".$line["id"]."\">".
							"$check_box $feed_url $site_url $archived</li>";
			}

			++$feedctr;
		}

		if ($feedctr == 0) {
			$rv .= "<li style=\"text-align : center\"><p>".__('No feeds found.')."</p></li>";
		}

		return $rv;
	}