]> git.wh0rd.org - tt-rss.git/blame - mobile/mobile-functions.php
modify include path order (closes #514)
[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';
344 $match_on = 'both';
345 } else {
346 $search_mode = '';
347 $match_on = '';
348 }
78d7a965 349
4308d33f 350 $qfh_ret = queryFeedHeadlines($link, $feed_id, $limit,
2e2d0802 351 $view_mode, $is_cat, $search, $search_mode, $match_on,
b9fca867 352 "score DESC, date_entered DESC", $offset);
541890fb 353
3518718b
AD
354 $result = $qfh_ret[0];
355 $feed_title = $qfh_ret[1];
42096f52 356
78d7a965 357 if (!$offset) {
3585a3c5 358
4308d33f 359 print "<form id=\"searchForm-$feed_id-$cat_id\" class=\"dialog\" method=\"POST\"
3585a3c5
AD
360 action=\"feed.php\">
361
362 <input type=\"hidden\" name=\"id\" value=\"$feed_id\">
363 <input type=\"hidden\" name=\"cat\" value=\"$cat_id\">
364
365 <fieldset>
cb216e9d 366 <h1>Search</h1>
3585a3c5
AD
367 <a class=\"button leftButton\" type=\"cancel\">Cancel</a>
368 <a class=\"button blueButton\" type=\"submit\">Search</a>
369
370 <label>Search:</label>
371 <input id=\"search\" type=\"text\" name=\"search\"/>
372 </fieldset>
4308d33f 373 </form>";
3585a3c5 374
78d7a965
AD
375 if ($cat_id) {
376 $cat_title = getCategoryTitle($link, $cat_id);
3e092346 377
78d7a965
AD
378 print "<ul id=\"feed-$feed_id\" title=\"$feed_title\" selected=\"true\"
379 myBackLabel='$cat_title' myBackHref='cat.php?id=$cat_id'>";
380 } else {
381 print "<ul id=\"feed-$feed_id\" title=\"$feed_title\" selected=\"true\"
382 myBackLabel='".__("Home")."' myBackHref='home.php'>";
383 }
3585a3c5 384
cb216e9d 385 print "<li><a href='#searchForm-$feed_id-$cat_id'>Search...</a></li>";
b1bd222c 386 }
24ac6776 387
78d7a965
AD
388 $num_headlines = 0;
389
3518718b
AD
390 while ($line = db_fetch_assoc($result)) {
391 $id = $line["id"];
3e94601e 392 $real_feed_id = $line["feed_id"];
f70f7e28 393
3518718b
AD
394 if (sql_bool_to_bool($line["unread"])) {
395 $class = '';
f70f7e28 396 } else {
3518718b 397 $class = 'oldItem';
f70f7e28
AD
398 }
399
3e94601e
AD
400 if (mobile_feed_has_icon($real_feed_id)) {
401 $icon_url = "../".ICONS_URL."/$real_feed_id.ico";
402 } else {
403 $icon_url = "../images/blank_icon.gif";
404 }
405
9de6ced1 406 print "<li class='$class'><a href='article.php?id=$id&feed=$feed_id&cat=$cat_id&is_cat=$is_cat'>
3e94601e 407 <img class='tinyIcon' src='$icon_url'>";
3518718b
AD
408 print $line["title"];
409 print "</a></li>";
4a596be6 410
78d7a965
AD
411 ++$num_headlines;
412
42096f52
AD
413 }
414
3585a3c5
AD
415 if ($num_headlines == 0 && $search) {
416 $articles_url = "feed.php?id=$feed_id&cat=$cat_id&skip=$next_offset";
417
418 print "<li><a href=\"$articles_url\">" . __("Nothing found (click to reload feed).") . "</a></li>";
419
420 }
421
78d7a965
AD
422// print "<a target='_replace' href='feed.php?id=$feed_id&cat=$cat_id&skip=0'>Next $limit articles...</a>";
423
424 $next_offset = $offset + $num_headlines;
425 $num_unread = getFeedUnread($link, $feed_id, $is_cat);
426
427 /* FIXME needs normal implementation */
428
3585a3c5
AD
429 if ($num_headlines > 0 && ($num_unread == 0 || $num_unread > $next_offset)) {
430
c3ad0b75
AD
431 if ($is_cat) {
432 $articles_url = "feed.php?id=$feed_id&skip=$next_offset".
433 "&search=$search&is_cat=true";
434 } else {
435 $articles_url = "feed.php?id=$feed_id&cat=$cat_id&skip=$next_offset".
436 "&search=$search";
437 }
3585a3c5 438
4308d33f 439 print "<li><a href=\"$articles_url\"
78d7a965
AD
440 target=\"_replace\">Get more articles...</a></li>";
441 }
442
443 if (!$offset) print "</ul>";
3518718b 444
42096f52
AD
445 }
446
9de6ced1 447 function render_article($link, $id, $feed_id, $cat_id, $is_cat) {
0809065e 448
3518718b
AD
449 $query = "SELECT title,link,content,feed_id,comments,int_id,
450 marked,unread,published,
451 ".SUBSTRING_FOR_DATE."(updated,1,16) as updated,
452 author
453 FROM ttrss_entries,ttrss_user_entries
4308d33f 454 WHERE id = '$id' AND ref_id = id AND owner_uid = " .
3518718b 455 $_SESSION["uid"] ;
0809065e 456
3518718b 457 $result = db_query($link, $query);
0809065e 458
3e092346 459 if (db_num_rows($result) != 0) {
0809065e 460
3e092346 461 $line = db_fetch_assoc($result);
0809065e 462
4308d33f
AD
463 $tmp_result = db_query($link, "UPDATE ttrss_user_entries
464 SET unread = false,last_read = NOW()
3e092346
AD
465 WHERE ref_id = '$id'
466 AND owner_uid = " . $_SESSION["uid"]);
0809065e 467
324944f3
AD
468 $updated_fmt = make_local_datetime($link, $line['updated'], false);
469
3e092346
AD
470 $title = $line["title"];
471 $article_link = $line["link"];
4308d33f 472
9de6ced1
AD
473 if (!$is_cat)
474 $feed_title = getFeedTitle($link, $feed_id);
475 else
476 $feed_title = getCategoryTitle($link, $feed_id);
4308d33f
AD
477
478 print "<div class=\"panel\" id=\"article-$id\" title=\"$title\"
3e092346 479 selected=\"true\"
9de6ced1 480 myBackLabel='$feed_title' myBackHref='feed.php?id=$feed_id&cat=$cat_id&is_cat=$is_cat'>";
4308d33f 481
c4904f2b
AD
482 if ($line['feed_id'] != $feed_id) {
483 $real_feed_title = getFeedTitle($link, $line['feed_id']);
484 $real_feed_id = $line['feed_id'];
485 $feed_link = "(<a href=\"feed.php?id=$real_feed_id\">$real_feed_title</a>)";
486 }
487// print "<fieldset>";
488
489 print "<div style='float : right'>($updated_fmt)</div>";
490
491 print "<h2><a target='_blank' href='$article_link'>$title</a> $feed_link</h2>";
4308d33f 492
c4904f2b 493 print "<hr>";
4308d33f 494
bf974b02 495/* print "<div class=\"row\">";
3e092346 496 print "<label id='title'><a target='_blank' href='$article_link'>$title</a></label>";
bf974b02 497 print "</div>"; */
4308d33f 498
3e092346
AD
499 $is_starred = (sql_bool_to_bool($line["marked"])) ? "true" : "false";
500 $is_published = (sql_bool_to_bool($line["published"])) ? "true" : "false";
4308d33f 501
c4904f2b
AD
502 //print "<div class=\"row\">";
503 //print "<label id='updated'>Updated:</label>";
9abc6715 504 //print "<input type='text' enabled='false' name='updated' disabled value='$updated_fmt'/>";
c4904f2b 505 //print "</div>";
4308d33f 506
c4904f2b 507// print "</fieldset>";
3bac78a0 508
183ff16c 509 $content = sanitize($link, $line["content"]);
3bac78a0
AD
510 $content = preg_replace("/href=/i", "target=\"_blank\" href=", $content);
511
f0a0c1ff
AD
512 if (!mobile_get_pref($link, "SHOW_IMAGES")) {
513 $content = preg_replace('/<img[^>]+>/is', '', $content);
514 }
515
706fe949 516 print "<p>$content</p>";
6101b0e1 517
a6d56d81
AD
518 print "<div class='nav'>
519 <label>Navigation</label>
520 <div class='button left' onclick='goPrev($id, $feed_id, this)'>Prev</div>
521 <div class='button right' onclick='goNext($id, $feed_id, this)'>Next</div>
522 </div>";
523
6101b0e1
AD
524 print "<fieldset>";
525
526 print "<div class=\"row\">
527 <label>Starred</label>
528 <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>
529 </div>";
4308d33f 530
6101b0e1
AD
531 print "<div class=\"row\">
532 <label>Published</label>
533 <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>
534 </div>";
535
b9fca867
AD
536 print "<div class=\"row\">
537 <label>Unread</label>
538 <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>
539 </div>";
540
541
6101b0e1
AD
542 print "</fieldset>";
543
3e092346 544 print "</div>";
f70f7e28 545
3e092346 546 }
4a596be6 547 }
0d3adafe 548?>