summaryrefslogtreecommitdiff
path: root/functions.php
blob: 3da349f1d58a2161ff31a9016818bde26b947c55 (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?
	require_once 'config.php';

	function update_all_feeds($link) {

		$result = pg_query($link, "SELECT feed_url,id FROM ttrss_feeds WHERE
			last_updated is null OR title = '' OR
			EXTRACT(EPOCH FROM NOW()) - EXTRACT(EPOCH FROM last_updated) > " . 
			MIN_UPDATE_TIME);

		while ($line = pg_fetch_assoc($result)) {
			update_rss_feed($link, $line["feed_url"], $line["id"]);
		}

	}

	function update_rss_feed($link, $feed_url, $feed) {

		$rss = fetch_rss($feed_url);
	
		if ($rss) {
	
			$result = pg_query("SELECT title FROM ttrss_feeds WHERE id = '$feed'");

			$registered_title = pg_fetch_result($result, 0, "title");

			if (!$registered_title) {

				$feed_title = $rss->channel["title"];
				pg_query("UPDATE ttrss_feeds SET title = '$feed_title' WHERE id = '$feed'");
			}

			foreach ($rss->items as $item) {
	
				$entry_guid = $item["id"];
	
				if (!$entry_guid) $entry_guid = $item["guid"];
				if (!$entry_guid) $entry_guid = $item["link"];
	
				$entry_timestamp = $item["pubdate"];
				if (!$entry_timestamp) $entry_timestamp = $item["modified"];
				if (!$entry_timestamp) $entry_timestamp = $item["updated"];

				if (!$entry_timestamp) continue;

				$entry_timestamp = strtotime($entry_timestamp);

				if (!$entry_timestamp) continue;

				$entry_title = $item["title"];
				$entry_link = $item["link"];

				if (!$entry_title) continue;
				if (!$entry_link) continue;

				$entry_content = $item["description"];
				if (!$entry_content) $entry_content = $item["content"];
	
				$entry_content = pg_escape_string($entry_content);
				$entry_title = pg_escape_string($entry_title);
	
				$content_md5 = md5($entry_content);
	
				$result = pg_query($link, "
					SELECT 
						id,unread,md5_hash
					FROM
						ttrss_entries 
					WHERE
						guid = '$entry_guid' OR md5_hash = '$content_md5'");
				
				if (pg_num_rows($result) == 0) {
	
					$entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp);
	
					$query = "INSERT INTO ttrss_entries 
							(title, guid, link, updated, content, feed_id, md5_hash) 
						VALUES
							('$entry_title', '$entry_guid', '$entry_link', 
								'$entry_timestamp', '$entry_content', '$feed', 
								'$content_md5')";
	
					pg_query($link, $query);
	
				} else {
	
					$entry_id = pg_fetch_result($result, 0, "id");
					$entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp);
	
					$unread = pg_fetch_result($result, 0, "unread");
					$md5_hash = pg_fetch_result($result, 0, "md5_hash");
					
					if ($md5_hash != $content_md5 && CONTENT_CHECK_MD5) 
						$unread = "true";
				
					if ($unread || !CONTENT_CHECK_MD5) {
						$updated_query_part = "updated = '$entry_timestamp',";
					}
				
					$query = "UPDATE ttrss_entries 
						SET 
							title ='$entry_title', 
							link = '$entry_link', 
							$updated_query_part
							content = '$entry_content',
							md5_hash = '$content_md5',
							unread = '$unread'
						WHERE
							id = '$entry_id'";
	
					$result = pg_query($link, $query);
	

//						print "$entry_guid - $entry_timestamp - $entry_title - 
//							$entry_link - $entry_id<br>";
	
				}
	
			}

			$result = pg_query($link, "UPDATE ttrss_feeds SET last_updated = NOW()");

		}

	}




?>