]> git.wh0rd.org - tt-rss.git/blame - mobile/mobile-functions.php
Typo
[tt-rss.git] / mobile / mobile-functions.php
CommitLineData
e9e95dae 1<?php
88e8fb3a 2 set_include_path(dirname(__FILE__) . PATH_SEPARATOR .
107d0cf3 3 dirname(dirname(__FILE__)) . PATH_SEPARATOR .
88e8fb3a
AD
4 dirname(dirname(__FILE__)) . "/include" . PATH_SEPARATOR .
5 get_include_path());
107d0cf3 6
4046fc59
AD
7 require_once "functions.php";
8 require_once "sessions.php";
9 require_once "version.php";
10 require_once "db-prefs.php";
107d0cf3 11
3dd46f19 12 define('TTRSS_SESSION_NAME', 'ttrss_m_sid');
0d3adafe 13
f0a0c1ff
AD
14 /* TODO replace with interface to db-prefs */
15
16 function mobile_pref_toggled($link, $id) {
4308d33f 17 if (get_pref($link, "_MOBILE_$id"))
e9105eb5
AD
18 return "true";
19 else
20 return "";
f0a0c1ff
AD
21 }
22
23 function mobile_get_pref($link, $id) {
e9105eb5
AD
24 //return $_SESSION["mobile-prefs"][$id];
25 return get_pref($link, "_MOBILE_$id");
f0a0c1ff
AD
26 }
27
28 function mobile_set_pref($link, $id, $value) {
e9105eb5
AD
29 //$_SESSION["mobile-prefs"][$id] = $value;
30 return set_pref($link, "_MOBILE_$id", $value);
f0a0c1ff
AD
31 }
32
3518718b
AD
33 function mobile_feed_has_icon($id) {
34 $filename = "../".ICONS_DIR."/$id.ico";
42096f52 35
3518718b
AD
36 return file_exists($filename) && filesize($filename) > 0;
37 }
42096f52 38
95004daf 39 function render_flat_feed_list($link, $offset) {
b1bd222c 40 $owner_uid = $_SESSION["uid"];
af88c48a 41 $limit = 0;
95004daf
AD
42
43 if (!$offset) $offset = 0;
b1bd222c 44
f0a0c1ff
AD
45 if (mobile_get_pref($link, "SORT_FEEDS_UNREAD")) {
46 $order_by = "unread DESC, title";
47 } else {
48 $order_by = "title";
49 }
50
af88c48a
AD
51 if ($limit > 0) {
52 $limit_qpart = "LIMIT $limit OFFSET $offset";
53 } else {
54 $limit_qpart = "";
55 }
56
b1bd222c
AD
57 $result = db_query($link, "SELECT id,
58 title,
59 (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries
60 WHERE feed_id = ttrss_feeds.id AND unread = true
61 AND ttrss_user_entries.ref_id = ttrss_entries.id
af88c48a 62 AND owner_uid = '$owner_uid') AS unread
b1bd222c 63 FROM ttrss_feeds
4308d33f 64 WHERE
6e63a7c3 65 ttrss_feeds.owner_uid = '$owner_uid'
4308d33f
AD
66 ORDER BY $order_by $limit_qpart");
67
95004daf 68 if (!$offset) print '<ul id="home" title="'.__('Home').'" selected="true"
9ab798a5 69 myBackLabel="'.__('Logout').'" myBackHref="logout.php" myBackTarget="_self">';
b1bd222c 70
af88c48a 71
b1bd222c 72 // print "<li><a href='#cat-actions'>".__('Actions...')."</a></li>";
95004daf
AD
73
74 $num_feeds = 0;
75
b1bd222c
AD
76 while ($line = db_fetch_assoc($result)) {
77 $id = $line["id"];
78 $unread = $line["unread"];
79
80 // $unread = rand(0, 100);
4308d33f 81
b1bd222c
AD
82 if ($unread > 0) {
83 $line["title"] = $line["title"] . " ($unread)";
84 $class = '';
85 } else {
86 $class = 'oldItem';
87 }
4308d33f 88
b1bd222c
AD
89 if (mobile_feed_has_icon($id)) {
90 $icon_url = "../".ICONS_URL."/$id.ico";
91 } else {
92 $icon_url = "../images/blank_icon.gif";
93 }
f0a0c1ff
AD
94
95 if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
4308d33f
AD
96 print "<li class='$class'><a href='feed.php?id=$id'>" .
97 "<img class='tinyIcon' src='$icon_url'/>".
f0a0c1ff
AD
98 $line["title"] . "</a></li>";
99 }
af88c48a
AD
100
101 ++$num_feeds;
b1bd222c 102 }
b1bd222c 103
af88c48a 104/* $next_offset = $offset + $num_feeds;
95004daf 105
4308d33f 106 print "<li><a href=\"home.php?skip=$next_offset\"
af88c48a 107 target=\"_replace\">Show more feeds...</a></li>"; */
b1bd222c 108
95004daf 109 if (!$offset) print "</ul>";
b1bd222c
AD
110
111 }
112
cfad9259 113 function render_category($link, $cat_id, $offset) {
3518718b 114 $owner_uid = $_SESSION["uid"];
4308d33f 115
e2b7a855 116 if ($cat_id >= 0) {
85233b8e 117
e2b7a855
AD
118 if ($cat_id != 0) {
119 $cat_query = "cat_id = '$cat_id'";
3518718b 120 } else {
e2b7a855 121 $cat_query = "cat_id IS NULL";
0d3adafe 122 }
f0a0c1ff
AD
123
124 if (mobile_get_pref($link, "SORT_FEEDS_UNREAD")) {
125 $order_by = "unread DESC, title";
126 } else {
127 $order_by = "title";
128 }
129
e2b7a855
AD
130 $result = db_query($link, "SELECT id,
131 title,
132 (SELECT COUNT(id) FROM ttrss_entries,ttrss_user_entries
133 WHERE feed_id = ttrss_feeds.id AND unread = true
134 AND ttrss_user_entries.ref_id = ttrss_entries.id
135 AND owner_uid = '$owner_uid') as unread
136 FROM ttrss_feeds
4308d33f
AD
137 WHERE
138 ttrss_feeds.owner_uid = '$owner_uid' AND
e2b7a855 139 $cat_query
4308d33f
AD
140 ORDER BY $order_by");
141
e2b7a855 142 $title = getCategoryTitle($link, $cat_id);
4308d33f 143
9ab798a5 144 print "<ul id='cat-$cat_id' title='$title' myBackLabel='".__("Home")."'
bf974b02 145 myBackHref='home.php'>";
4308d33f 146
e2b7a855 147 // print "<li><a href='#cat-actions'>".__('Actions...')."</a></li>";
4308d33f 148
e2b7a855
AD
149 while ($line = db_fetch_assoc($result)) {
150 $id = $line["id"];
151 $unread = $line["unread"];
3e94601e 152
e2b7a855 153 // $unread = rand(0, 100);
4308d33f 154
e2b7a855
AD
155 if ($unread > 0) {
156 $line["title"] = $line["title"] . " ($unread)";
157 $class = '';
158 } else {
159 $class = 'oldItem';
160 }
4308d33f 161
e2b7a855
AD
162 if (mobile_feed_has_icon($id)) {
163 $icon_url = "../".ICONS_URL."/$id.ico";
164 } else {
165 $icon_url = "../images/blank_icon.gif";
166 }
f0a0c1ff
AD
167
168 if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
4308d33f
AD
169 print "<li class='$class'><a href='feed.php?id=$id&cat=$cat_id'>" .
170 "<img class='tinyIcon' src='$icon_url'/>".
f0a0c1ff
AD
171 $line["title"] . "</a></li>";
172 }
0d3adafe 173 }
4308d33f 174
e2b7a855
AD
175 print "</ul>";
176 } else if ($cat_id == -1) {
177
17fd15be
AD
178 $title = __('Special');
179
9ab798a5
AD
180 print "<ul id='cat--1' title='$title' myBackLabel='".__("Home")."'
181 myBackHref='home.php'>";
e2b7a855 182
87e3d2dd 183 foreach (array(-4, -3, -1, -2, 0) as $id) {
e2b7a855
AD
184 $title = getFeedTitle($link, $id);
185 $unread = getFeedUnread($link, $id, false);
af88c48a 186 $icon = getFeedIcon($id);
e2b7a855
AD
187
188 if ($unread > 0) {
189 $title = $title . " ($unread)";
190 $class = '';
191 } else {
192 $class = 'oldItem';
eead4d26 193 }
8e3f7217 194
f0a0c1ff
AD
195 if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
196 print "<li class='$class'>
af88c48a
AD
197 <a href='feed.php?id=$id&cat=-1'>
198 <img class='tinyIcon' src='../$icon'/>$title</a></li>";
f0a0c1ff 199 }
e2b7a855 200 }
8e3f7217 201
17fd15be
AD
202 print "</ul>";
203 } else if ($cat_id == -2) {
204
205 $title = __('Labels');
206
9ab798a5
AD
207 print "<ul id='cat--2' title='$title' myBackLabel='".__("Home")."'
208 myBackHref='home.php'>";
17fd15be
AD
209
210 $result = db_query($link, "SELECT id, caption FROM ttrss_labels2
211 WHERE owner_uid = '$owner_uid'");
212
213 $label_data = array();
214
215 while ($line = db_fetch_assoc($result)) {
216
217 $id = -$line["id"] - 11;
218
219 $unread = getFeedUnread($link, $id);
220 $title = $line["caption"];
221
222 if ($unread > 0) {
223 $title = $title . " ($unread)";
224 $class = '';
225 } else {
226 $class = 'oldItem';
227 }
228
f0a0c1ff
AD
229 if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
230 print "<li class='$class'>
231 <a href='feed.php?id=$id&cat=-2'>$title</a></li>";
232 }
17fd15be 233 }
e2b7a855
AD
234 print "</ul>";
235 }
0d3adafe
AD
236 }
237
3518718b
AD
238 function render_categories_list($link) {
239 $owner_uid = $_SESSION["uid"];
cfad9259
AD
240
241 $cat_browse = mobile_get_pref($link, "BROWSE_CATS");
242
9ab798a5
AD
243 print '<ul id="home" title="'.__('Home').'" selected="true"
244 myBackLabel="'.__('Logout').'" myBackHref="logout.php" myBackTarget="_self">';
4308d33f 245
3585a3c5
AD
246// print "<li><a href='#searchForm'>Search...</a></li>";
247
3518718b
AD
248 foreach (array(-1, -2) as $id) {
249 $title = getCategoryTitle($link, $id);
250 $unread = getFeedUnread($link, $id, true);
4308d33f 251 if ($unread > 0) {
3518718b
AD
252 $title = $title . " ($unread)";
253 $class = '';
eead4d26 254 } else {
3518718b 255 $class = 'oldItem';
c878bc01 256 }
2f468537 257
cfad9259
AD
258 if ($cat_browse)
259 print "<li class='$class'><a href='cat.php?id=$id'>$title</a></li>";
260 else
261 print "<li class='$class'><a href='feed.php?id=$id&is_cat=true'>$title</a></li>";
2f468537
AD
262 }
263
4308d33f
AD
264 $result = db_query($link, "SELECT
265 ttrss_feed_categories.id,
266 ttrss_feed_categories.title,
267 COUNT(ttrss_feeds.id) AS num_feeds
3518718b 268 FROM ttrss_feed_categories, ttrss_feeds
4308d33f
AD
269 WHERE ttrss_feed_categories.owner_uid = $owner_uid
270 AND ttrss_feed_categories.id = cat_id
271 GROUP BY ttrss_feed_categories.id,
3518718b
AD
272 ttrss_feed_categories.title
273 ORDER BY ttrss_feed_categories.title");
2f468537 274
3518718b 275 while ($line = db_fetch_assoc($result)) {
fc46ab83 276
3518718b 277 if ($line["num_feeds"] > 0) {
2f468537 278
3518718b 279 $unread = getFeedUnread($link, $line["id"], true);
2f468537 280 $id = $line["id"];
510ac75f 281
3518718b
AD
282 if ($unread > 0) {
283 $line["title"] = $line["title"] . " ($unread)";
284 $class = '';
510ac75f 285 } else {
3518718b 286 $class = 'oldItem';
510ac75f 287 }
2f468537 288
f0a0c1ff 289 if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
cfad9259 290
4308d33f
AD
291 if ($cat_browse)
292 print "<li class='$class'><a href='cat.php?id=$id'>" .
cfad9259
AD
293 $line["title"] . "</a></li>";
294 else
295 print "<li class='$class'><a href='feed.php?id=$id&is_cat=true'>".
296 $line["title"] . "</a></li>";
f0a0c1ff 297 }
2f468537 298 }
2f468537
AD
299 }
300
2f468537 301
3518718b
AD
302 $result = db_query($link, "SELECT COUNT(*) AS nf FROM ttrss_feeds WHERE
303 cat_id IS NULL and owner_uid = '$owner_uid'");
42096f52 304
3518718b 305 $num_feeds = db_fetch_result($result, 0, "nf");
42096f52 306
3518718b
AD
307 if ($num_feeds > 0) {
308 $unread = getFeedUnread($link, 0, true);
309 $title = "Uncategorized";
42096f52 310
3518718b
AD
311 if ($unread > 0) {
312 $title = "$title ($unread)";
313 $class = '';
42096f52 314 } else {
3518718b 315 $class = 'oldItem';
42096f52
AD
316 }
317
f0a0c1ff 318 if ($unread > 0 || !mobile_get_pref($link, "HIDE_READ")) {
4308d33f
AD
319 if ($cat_browse)
320 print "<li class='$class'><a href='cat.php?id=0'>$title</a></li>";
321 else
322 print "<li class='$class'><a href='feed.php?id=0&is_cat=true'>$title</a></li>";
323
f0a0c1ff 324 }
3518718b 325 }
42096f52 326
3518718b
AD
327 print "</ul>";
328 }
24ac6776 329
4308d33f 330 function render_headlines_list($link, $feed_id, $cat_id, $offset, $search,
cfad9259 331 $is_cat = false) {
24ac6776 332
3518718b 333 $feed_id = $feed_id;
78d7a965 334 $limit = 15;
3518718b 335 $filter = '';
2e2d0802
AD
336
337 if (!mobile_get_pref($link, "HIDE_READ"))
338 $view_mode = "all_articles";
339 else
340 $view_mode = 'adaptive';
d9aad400 341
3585a3c5
AD
342 if ($search) {
343 $search_mode = 'this_feed';
3585a3c5
AD
344 } else {
345 $search_mode = '';
3585a3c5 346 }
78d7a965 347
4308d33f 348 $qfh_ret = queryFeedHeadlines($link, $feed_id, $limit,
ca5d9be4 349 $view_mode, $is_cat, $search, $search_mode,
a6b45187 350 "score DESC, date_entered ".(mobile_get_pref($link, 'REVERSE_HEADLINES') ? 'ASC' : 'DESC'), $offset);
541890fb 351
3518718b
AD
352 $result = $qfh_ret[0];
353 $feed_title = $qfh_ret[1];
42096f52 354
78d7a965 355 if (!$offset) {
3585a3c5 356
4308d33f 357 print "<form id=\"searchForm-$feed_id-$cat_id\" class=\"dialog\" method=\"POST\"
3585a3c5
AD
358 action=\"feed.php\">
359
360 <input type=\"hidden\" name=\"id\" value=\"$feed_id\">
361 <input type=\"hidden\" name=\"cat\" value=\"$cat_id\">
362
363 <fieldset>
cb216e9d 364 <h1>Search</h1>
3585a3c5
AD
365 <a class=\"button leftButton\" type=\"cancel\">Cancel</a>
366 <a class=\"button blueButton\" type=\"submit\">Search</a>
367
368 <label>Search:</label>
369 <input id=\"search\" type=\"text\" name=\"search\"/>
370 </fieldset>
4308d33f 371 </form>";
3585a3c5 372
78d7a965
AD
373 if ($cat_id) {
374 $cat_title = getCategoryTitle($link, $cat_id);
3e092346 375
78d7a965
AD
376 print "<ul id=\"feed-$feed_id\" title=\"$feed_title\" selected=\"true\"
377 myBackLabel='$cat_title' myBackHref='cat.php?id=$cat_id'>";
378 } else {
379 print "<ul id=\"feed-$feed_id\" title=\"$feed_title\" selected=\"true\"
380 myBackLabel='".__("Home")."' myBackHref='home.php'>";
381 }
3585a3c5 382
cb216e9d 383 print "<li><a href='#searchForm-$feed_id-$cat_id'>Search...</a></li>";
b1bd222c 384 }
24ac6776 385
78d7a965
AD
386 $num_headlines = 0;
387
3518718b
AD
388 while ($line = db_fetch_assoc($result)) {
389 $id = $line["id"];
3e94601e 390 $real_feed_id = $line["feed_id"];
f70f7e28 391
3518718b
AD
392 if (sql_bool_to_bool($line["unread"])) {
393 $class = '';
f70f7e28 394 } else {
3518718b 395 $class = 'oldItem';
f70f7e28
AD
396 }
397
3e94601e
AD
398 if (mobile_feed_has_icon($real_feed_id)) {
399 $icon_url = "../".ICONS_URL."/$real_feed_id.ico";
400 } else {
401 $icon_url = "../images/blank_icon.gif";
402 }
403
9de6ced1 404 print "<li class='$class'><a href='article.php?id=$id&feed=$feed_id&cat=$cat_id&is_cat=$is_cat'>
3e94601e 405 <img class='tinyIcon' src='$icon_url'>";
3518718b
AD
406 print $line["title"];
407 print "</a></li>";
4a596be6 408
78d7a965
AD
409 ++$num_headlines;
410
42096f52
AD
411 }
412
3585a3c5
AD
413 if ($num_headlines == 0 && $search) {
414 $articles_url = "feed.php?id=$feed_id&cat=$cat_id&skip=$next_offset";
415
416 print "<li><a href=\"$articles_url\">" . __("Nothing found (click to reload feed).") . "</a></li>";
417
418 }
419
78d7a965
AD
420// print "<a target='_replace' href='feed.php?id=$feed_id&cat=$cat_id&skip=0'>Next $limit articles...</a>";
421
422 $next_offset = $offset + $num_headlines;
423 $num_unread = getFeedUnread($link, $feed_id, $is_cat);
424
425 /* FIXME needs normal implementation */
426
3585a3c5
AD
427 if ($num_headlines > 0 && ($num_unread == 0 || $num_unread > $next_offset)) {
428
c3ad0b75
AD
429 if ($is_cat) {
430 $articles_url = "feed.php?id=$feed_id&skip=$next_offset".
431 "&search=$search&is_cat=true";
432 } else {
433 $articles_url = "feed.php?id=$feed_id&cat=$cat_id&skip=$next_offset".
434 "&search=$search";
435 }
3585a3c5 436
4308d33f 437 print "<li><a href=\"$articles_url\"
78d7a965
AD
438 target=\"_replace\">Get more articles...</a></li>";
439 }
440
441 if (!$offset) print "</ul>";
3518718b 442
42096f52
AD
443 }
444
9de6ced1 445 function render_article($link, $id, $feed_id, $cat_id, $is_cat) {
0809065e 446
3518718b
AD
447 $query = "SELECT title,link,content,feed_id,comments,int_id,
448 marked,unread,published,
449 ".SUBSTRING_FOR_DATE."(updated,1,16) as updated,
450 author
451 FROM ttrss_entries,ttrss_user_entries
4308d33f 452 WHERE id = '$id' AND ref_id = id AND owner_uid = " .
3518718b 453 $_SESSION["uid"] ;
0809065e 454
3518718b 455 $result = db_query($link, $query);
0809065e 456
3e092346 457 if (db_num_rows($result) != 0) {
0809065e 458
3e092346 459 $line = db_fetch_assoc($result);
0809065e 460
4308d33f
AD
461 $tmp_result = db_query($link, "UPDATE ttrss_user_entries
462 SET unread = false,last_read = NOW()
3e092346
AD
463 WHERE ref_id = '$id'
464 AND owner_uid = " . $_SESSION["uid"]);
0809065e 465
324944f3
AD
466 $updated_fmt = make_local_datetime($link, $line['updated'], false);
467
3e092346
AD
468 $title = $line["title"];
469 $article_link = $line["link"];
4308d33f 470
9de6ced1
AD
471 if (!$is_cat)
472 $feed_title = getFeedTitle($link, $feed_id);
473 else
474 $feed_title = getCategoryTitle($link, $feed_id);
4308d33f
AD
475
476 print "<div class=\"panel\" id=\"article-$id\" title=\"$title\"
3e092346 477 selected=\"true\"
9de6ced1 478 myBackLabel='$feed_title' myBackHref='feed.php?id=$feed_id&cat=$cat_id&is_cat=$is_cat'>";
4308d33f 479
c4904f2b
AD
480 if ($line['feed_id'] != $feed_id) {
481 $real_feed_title = getFeedTitle($link, $line['feed_id']);
482 $real_feed_id = $line['feed_id'];
483 $feed_link = "(<a href=\"feed.php?id=$real_feed_id\">$real_feed_title</a>)";
484 }
485// print "<fieldset>";
486
487 print "<div style='float : right'>($updated_fmt)</div>";
488
489 print "<h2><a target='_blank' href='$article_link'>$title</a> $feed_link</h2>";
4308d33f 490
c4904f2b 491 print "<hr>";
4308d33f 492
bf974b02 493/* print "<div class=\"row\">";
3e092346 494 print "<label id='title'><a target='_blank' href='$article_link'>$title</a></label>";
bf974b02 495 print "</div>"; */
4308d33f 496
3e092346
AD
497 $is_starred = (sql_bool_to_bool($line["marked"])) ? "true" : "false";
498 $is_published = (sql_bool_to_bool($line["published"])) ? "true" : "false";
4308d33f 499
c4904f2b
AD
500 //print "<div class=\"row\">";
501 //print "<label id='updated'>Updated:</label>";
9abc6715 502 //print "<input type='text' enabled='false' name='updated' disabled value='$updated_fmt'/>";
c4904f2b 503 //print "</div>";
4308d33f 504
c4904f2b 505// print "</fieldset>";
3bac78a0 506
183ff16c 507 $content = sanitize($link, $line["content"]);
3bac78a0
AD
508 $content = preg_replace("/href=/i", "target=\"_blank\" href=", $content);
509
f0a0c1ff
AD
510 if (!mobile_get_pref($link, "SHOW_IMAGES")) {
511 $content = preg_replace('/<img[^>]+>/is', '', $content);
512 }
513
706fe949 514 print "<p>$content</p>";
6101b0e1 515
a6d56d81
AD
516 print "<div class='nav'>
517 <label>Navigation</label>
518 <div class='button left' onclick='goPrev($id, $feed_id, this)'>Prev</div>
519 <div class='button right' onclick='goNext($id, $feed_id, this)'>Next</div>
520 </div>";
521
6101b0e1
AD
522 print "<fieldset>";
523
524 print "<div class=\"row\">
525 <label>Starred</label>
526 <div class=\"toggle\" onclick=\"toggleMarked($id, this)\" toggled=\"$is_starred\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>
527 </div>";
4308d33f 528
6101b0e1
AD
529 print "<div class=\"row\">
530 <label>Published</label>
531 <div class=\"toggle\" onclick=\"togglePublished($id, this)\" toggled=\"$is_published\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>
532 </div>";
533
b9fca867
AD
534 print "<div class=\"row\">
535 <label>Unread</label>
536 <div class=\"toggle\" onclick=\"toggleUnread($id, this)\" toggled=\"$is_unread\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>
537 </div>";
538
539
6101b0e1
AD
540 print "</fieldset>";
541
3e092346 542 print "</div>";
f70f7e28 543
3e092346 544 }
4a596be6 545 }
0d3adafe 546?>