]> git.wh0rd.org - tt-rss.git/blame - classes/feeds.php
rename sanitize_rss to sanitize
[tt-rss.git] / classes / feeds.php
CommitLineData
3f363052 1<?php\r
46da73c2
AD
2class Feeds extends Protected_Handler {\r
3\r
3f363052
AD
4 function catchupAll() {\r
5 db_query($this->link, "UPDATE ttrss_user_entries SET\r
6 last_read = NOW(),unread = false WHERE owner_uid = " . $_SESSION["uid"]);\r
7 ccache_zero_all($this->link, $_SESSION["uid"]);\r
46da73c2 8 }\r
3f363052
AD
9\r
10 function collapse() {\r
11 $cat_id = db_escape_string($_REQUEST["cid"]);\r
12 $mode = (int) db_escape_string($_REQUEST['mode']);\r
13 toggle_collapse_cat($this->link, $cat_id, $mode);\r
14 }\r
15\r
16 function index() {\r
17 $root = (bool)$_REQUEST["root"];\r
46da73c2 18\r
3f363052
AD
19 if (!$root) {\r
20 print json_encode(outputFeedList($this->link));\r
21 } else {\r
46da73c2 22\r
3f363052 23 $feeds = outputFeedList($this->link, false);\r
46da73c2 24\r
3f363052
AD
25 $root = array();\r
26 $root['id'] = 'root';\r
27 $root['name'] = __('Feeds');\r
28 $root['items'] = $feeds['items'];\r
46da73c2 29\r
3f363052
AD
30 $fl = array();\r
31 $fl['identifier'] = 'id';\r
32 $fl['label'] = 'name';\r
33 $fl['items'] = array($root);\r
46da73c2 34\r
3f363052
AD
35 print json_encode($fl);\r
36 }\r
46da73c2
AD
37 }\r
38\r
3f363052
AD
39 function view() {\r
40 $timing_info = getmicrotime();\r
46da73c2 41\r
3f363052 42 $reply = array();\r
46da73c2 43\r
3f363052 44 if ($_REQUEST["debug"]) $timing_info = print_checkpoint("0", $timing_info);\r
46da73c2 45\r
3f363052 46 $omode = db_escape_string($_REQUEST["omode"]);\r
46da73c2 47\r
3f363052
AD
48 $feed = db_escape_string($_REQUEST["feed"]);\r
49 $method = db_escape_string($_REQUEST["m"]);\r
50 $view_mode = db_escape_string($_REQUEST["view_mode"]);\r
51 $limit = (int) get_pref($this->link, "DEFAULT_ARTICLE_LIMIT");\r
52 @$cat_view = db_escape_string($_REQUEST["cat"]) == "true";\r
53 @$next_unread_feed = db_escape_string($_REQUEST["nuf"]);\r
54 @$offset = db_escape_string($_REQUEST["skip"]);\r
55 @$vgroup_last_feed = db_escape_string($_REQUEST["vgrlf"]);\r
56 $order_by = db_escape_string($_REQUEST["order_by"]);\r
46da73c2 57\r
3f363052 58 if (is_numeric($feed)) $feed = (int) $feed;\r
46da73c2 59\r
3f363052
AD
60 /* Feed -5 is a special case: it is used to display auxiliary information\r
61 * when there's nothing to load - e.g. no stuff in fresh feed */\r
46da73c2 62\r
3f363052
AD
63 if ($feed == -5) {\r
64 print json_encode(generate_dashboard_feed($this->link));\r
65 return;\r
66 }\r
46da73c2 67\r
3f363052 68 $result = false;\r
46da73c2 69\r
3f363052
AD
70 if ($feed < -10) {\r
71 $label_feed = -11-$feed;\r
72 $result = db_query($this->link, "SELECT id FROM ttrss_labels2 WHERE\r
73 id = '$label_feed' AND owner_uid = " . $_SESSION['uid']);\r
74 } else if (!$cat_view && is_numeric($feed) && $feed > 0) {\r
75 $result = db_query($this->link, "SELECT id FROM ttrss_feeds WHERE\r
76 id = '$feed' AND owner_uid = " . $_SESSION['uid']);\r
77 } else if ($cat_view && is_numeric($feed) && $feed > 0) {\r
78 $result = db_query($this->link, "SELECT id FROM ttrss_feed_categories WHERE\r
79 id = '$feed' AND owner_uid = " . $_SESSION['uid']);\r
80 }\r
46da73c2 81\r
3f363052
AD
82 if ($result && db_num_rows($result) == 0) {\r
83 print json_encode(generate_error_feed($this->link, __("Feed not found.")));\r
84 return;\r
85 }\r
46da73c2 86\r
3f363052
AD
87 /* Updating a label ccache means recalculating all of the caches\r
88 * so for performance reasons we don't do that here */\r
46da73c2 89\r
3f363052
AD
90 if ($feed >= 0) {\r
91 ccache_update($this->link, $feed, $_SESSION["uid"], $cat_view);\r
92 }\r
46da73c2 93\r
3f363052
AD
94 set_pref($this->link, "_DEFAULT_VIEW_MODE", $view_mode);\r
95 set_pref($this->link, "_DEFAULT_VIEW_LIMIT", $limit);\r
96 set_pref($this->link, "_DEFAULT_VIEW_ORDER_BY", $order_by);\r
46da73c2 97\r
3f363052
AD
98 if (!$cat_view && preg_match("/^[0-9][0-9]*$/", $feed)) {\r
99 db_query($this->link, "UPDATE ttrss_feeds SET last_viewed = NOW()\r
100 WHERE id = '$feed' AND owner_uid = ".$_SESSION["uid"]);\r
101 }\r
46da73c2 102\r
3f363052 103 $reply['headlines'] = array();\r
46da73c2 104\r
3f363052
AD
105 if (!$next_unread_feed)\r
106 $reply['headlines']['id'] = $feed;\r
107 else\r
108 $reply['headlines']['id'] = $next_unread_feed;\r
46da73c2 109\r
3f363052 110 $reply['headlines']['is_cat'] = (bool) $cat_view;\r
46da73c2 111\r
3f363052 112 $override_order = false;\r
46da73c2 113\r
3f363052
AD
114 if (get_pref($this->link, "SORT_HEADLINES_BY_FEED_DATE", $owner_uid)) {\r
115 $date_sort_field = "updated";\r
116 } else {\r
117 $date_sort_field = "date_entered";\r
118 }\r
46da73c2 119\r
3f363052
AD
120 switch ($order_by) {\r
121 case "date":\r
122 if (get_pref($this->link, 'REVERSE_HEADLINES', $owner_uid)) {\r
123 $override_order = "$date_sort_field";\r
124 } else {\r
125 $override_order = "$date_sort_field DESC";\r
126 }\r
127 break;\r
46da73c2 128\r
3f363052
AD
129 case "title":\r
130 if (get_pref($this->link, 'REVERSE_HEADLINES', $owner_uid)) {\r
131 $override_order = "title DESC, $date_sort_field";\r
132 } else {\r
133 $override_order = "title, $date_sort_field DESC";\r
134 }\r
135 break;\r
46da73c2 136\r
3f363052
AD
137 case "score":\r
138 if (get_pref($this->link, 'REVERSE_HEADLINES', $owner_uid)) {\r
139 $override_order = "score, $date_sort_field";\r
140 } else {\r
141 $override_order = "score DESC, $date_sort_field DESC";\r
142 }\r
143 break;\r
144 }\r
46da73c2 145\r
3f363052 146 if ($_REQUEST["debug"]) $timing_info = print_checkpoint("04", $timing_info);\r
46da73c2 147\r
3f363052
AD
148 $ret = format_headlines_list($this->link, $feed, $method,\r
149 $view_mode, $limit, $cat_view, $next_unread_feed, $offset,\r
150 $vgroup_last_feed, $override_order);\r
46da73c2 151\r
3f363052
AD
152 $topmost_article_ids = $ret[0];\r
153 $headlines_count = $ret[1];\r
154 $returned_feed = $ret[2];\r
155 $disable_cache = $ret[3];\r
156 $vgroup_last_feed = $ret[4];\r
46da73c2 157\r
3f363052
AD
158 $reply['headlines']['content'] =& $ret[5]['content'];\r
159 $reply['headlines']['toolbar'] =& $ret[5]['toolbar'];\r
46da73c2 160\r
3f363052 161 if ($_REQUEST["debug"]) $timing_info = print_checkpoint("05", $timing_info);\r
46da73c2 162\r
3f363052
AD
163 $reply['headlines-info'] = array("count" => (int) $headlines_count,\r
164 "vgroup_last_feed" => $vgroup_last_feed,\r
165 "disable_cache" => (bool) $disable_cache);\r
46da73c2 166\r
3f363052 167 if ($_REQUEST["debug"]) $timing_info = print_checkpoint("20", $timing_info);\r
46da73c2 168\r
3f363052
AD
169 if (is_array($topmost_article_ids) && !get_pref($this->link, 'COMBINED_DISPLAY_MODE') && !$_SESSION["bw_limit"]) {\r
170 $articles = array();\r
46da73c2 171\r
3f363052
AD
172 foreach ($topmost_article_ids as $id) {\r
173 array_push($articles, format_article($this->link, $id, false));\r
174 }\r
46da73c2 175\r
3f363052
AD
176 $reply['articles'] = $articles;\r
177 }\r
46da73c2 178\r
3f363052 179 if ($_REQUEST["debug"]) $timing_info = print_checkpoint("30", $timing_info);\r
46da73c2 180\r
3f363052 181 $reply['runtime-info'] = make_runtime_info($this->link);\r
46da73c2 182\r
3f363052 183 print json_encode($reply);\r
46da73c2 184\r
3f363052
AD
185 }\r
186}\r
46da73c2 187?>\r