]>
git.wh0rd.org - tt-rss.git/blob - modules/pref-feeds.php
3 function module_pref_feeds ( $link ) {
5 global $update_intervals ;
6 global $purge_intervals ;
8 $subop = $_REQUEST [ "subop" ];
9 $quiet = $_REQUEST [ "quiet" ];
11 if ( $subop == "massSubscribe" ) {
12 $ids = split ( "," , db_escape_string ( $_GET [ "ids" ]));
14 $subscribed = array ();
16 foreach ( $ids as $id ) {
17 $result = db_query ( $link , "SELECT feed_url,title FROM ttrss_feeds
20 $feed_url = db_escape_string ( db_fetch_result ( $result , 0 , "feed_url" ));
21 $title = db_escape_string ( db_fetch_result ( $result , 0 , "title" ));
23 $title_orig = db_fetch_result ( $result , 0 , "title" );
25 $result = db_query ( $link , "SELECT id FROM ttrss_feeds WHERE
26 feed_url = ' $feed_url ' AND owner_uid = " . $_SESSION [ "uid" ]);
28 if ( db_num_rows ( $result ) == 0 ) {
29 $result = db_query ( $link ,
30 "INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id)
31 VALUES ('" . $_SESSION [ "uid" ]. "', ' $feed_url ', ' $title ', NULL)" );
33 array_push ( $subscribed , $title_orig );
37 if ( count ( $subscribed ) > 0 ) {
38 $msg = "<b>" . __ ( 'Subscribed to feeds:' ). "</b>" .
39 "<ul class= \" nomarks \" >" ;
41 foreach ( $subscribed as $title ) {
42 $msg .= "<li> $title </li>" ;
46 print format_notice ( $msg );
50 if ( $subop == "browse" ) {
52 if (! ENABLE_FEED_BROWSER
) {
53 print __ ( "Feed browser is administratively disabled." );
57 print "<div id= \" infoBoxTitle \" >" . __ ( 'Other feeds: Top 25' ). "</div>" ;
59 print "<div class= \" infoBoxContents \" >" ;
61 print "<p>" . __ ( "Showing top 25 registered feeds, sorted by popularity:" ). "</p>" ;
63 # $result = db_query($link, "SELECT feed_url,count(id) AS subscribers
65 # WHERE auth_login = '' AND auth_pass = '' AND private = false
66 # GROUP BY feed_url ORDER BY subscribers DESC LIMIT 25");
68 $owner_uid = $_SESSION [ "uid" ];
70 $result = db_query ( $link , "SELECT feed_url,COUNT(id) AS subscribers
71 FROM ttrss_feeds WHERE (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf
72 WHERE tf.feed_url = ttrss_feeds.feed_url
73 AND owner_uid = ' $owner_uid ') GROUP BY feed_url
74 ORDER BY subscribers DESC LIMIT 25" );
76 print "<ul class='browseFeedList' id='browseFeedList'>" ;
80 while ( $line = db_fetch_assoc ( $result )) {
81 $feed_url = $line [ "feed_url" ];
82 $subscribers = $line [ "subscribers" ];
84 $det_result = db_query ( $link , "SELECT site_url,title,id
85 FROM ttrss_feeds WHERE feed_url = ' $feed_url ' LIMIT 1" );
87 $details = db_fetch_assoc ( $det_result );
89 $icon_file = ICONS_DIR
. "/" . $details [ "id" ] . ".ico" ;
91 if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
92 $feed_icon = "<img class= \" tinyFeedIcon \" src= \" " . ICONS_URL
.
93 "/" . $details [ "id" ]. ".ico \" >" ;
95 $feed_icon = "<img class= \" tinyFeedIcon \" src= \" images/blank_icon.gif \" >" ;
98 $check_box = "<input onclick='toggleSelectListRow(this)' class='feedBrowseCB'
99 type= \" checkbox \" id= \" FBCHK-" . $details [ "id" ] . " \" >" ;
101 $class = ( $feedctr %
2 ) ?
"even" : "odd" ;
103 print "<li class=' $class ' id= \" FBROW-" . $details [ "id" ]. " \" > $check_box " .
104 " $feed_icon " . $details [ "title" ] .
105 " <span class='subscribers'>( $subscribers )</span></li>" ;
111 print "<li>" . __ ( 'No feeds found to subscribe.' ). "</li>" ;
116 print "<div align='center'>
117 <input type= \" submit \" class= \" button \"
118 onclick= \" feedBrowserSubscribe() \" value= \" " . __ ( 'Subscribe' ). " \" >
119 <input type='submit' class='button'
120 onclick= \" closeInfoBox() \" value= \" " . __ ( 'Cancel' ). " \" ></div>" ;
126 if ( $subop == "editfeed" ) {
127 $feed_id = db_escape_string ( $_REQUEST [ "id" ]);
129 $result = db_query ( $link ,
130 "SELECT * FROM ttrss_feeds WHERE id = ' $feed_id ' AND
131 owner_uid = " . $_SESSION [ "uid" ]);
133 $title = htmlspecialchars ( db_fetch_result ( $result ,
136 $icon_file = ICONS_DIR
. "/ $feed_id .ico" ;
138 if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
139 $feed_icon = "<img width= \" 16 \" height= \" 16 \"
140 src= \" " . ICONS_URL
. "/ $feed_id .ico \" >" ;
145 print "<div id= \" infoBoxTitle \" >" . __ ( 'Feed editor' ). "</div>" ;
147 print "<div class= \" infoBoxContents \" >" ;
149 print "<form id= \" edit_feed_form \" onsubmit= \" return false \" >" ;
151 print "<input type= \" hidden \" name= \" id \" value= \" $feed_id\" >" ;
152 print "<input type= \" hidden \" name= \" op \" value= \" pref-feeds \" >" ;
153 print "<input type= \" hidden \" name= \" subop \" value= \" editSave \" >" ;
155 print "<table width='100%'>" ;
157 print "<tr><td>" . __ ( 'Title:' ). "</td>" ;
158 print "<td><input class= \" iedit \" onkeypress= \" return filterCR(event, feedEditSave) \"
159 name= \" title \" value= \" $title\" ></td></tr>" ;
161 $feed_url = db_fetch_result ( $result , 0 , "feed_url" );
162 $feed_url = htmlspecialchars ( db_fetch_result ( $result ,
165 print "<tr><td>" . __ ( 'Feed URL:' ). "</td>" ;
166 print "<td><input class= \" iedit \" onkeypress= \" return filterCR(event, feedEditSave) \"
167 name= \" feed_url \" value= \" $feed_url\" ></td></tr>" ;
169 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
171 $cat_id = db_fetch_result ( $result , 0 , "cat_id" );
173 print "<tr><td>" . __ ( 'Category:' ). "</td>" ;
176 $parent_feed = db_fetch_result ( $result , 0 , "parent_feed" );
178 if ( sprintf ( " %d " , $parent_feed ) > 0 ) {
179 $disabled = "disabled" ;
184 print_feed_cat_select ( $link , "cat_id" , $cat_id , "class= \" iedit \" $disabled " );
191 $update_interval = db_fetch_result ( $result , 0 , "update_interval" );
193 print "<tr><td>" . __ ( 'Update Interval:' ). "</td>" ;
197 print_select_hash ( "update_interval" , $update_interval , $update_intervals ,
202 print "<tr><td>" . __ ( 'Link to:' ). "</td><td>" ;
204 $tmp_result = db_query ( $link , "SELECT COUNT(id) AS count
205 FROM ttrss_feeds WHERE parent_feed = ' $feed_id '" );
207 $linked_count = db_fetch_result ( $tmp_result , 0 , "count" );
209 $parent_feed = db_fetch_result ( $result , 0 , "parent_feed" );
211 if ( $linked_count > 0 ) {
212 $disabled = "disabled" ;
217 print "<select class= \" iedit \" $disabled name= \" parent_feed \" >" ;
219 print "<option value= \" 0 \" >" . __ ( 'Not linked' ). "</option>" ;
221 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
223 $cat_qpart = "AND cat_id = ' $cat_id '" ;
225 $cat_qpart = "AND cat_id IS NULL" ;
229 $tmp_result = db_query ( $link , "SELECT id,title FROM ttrss_feeds
230 WHERE id != ' $feed_id ' AND owner_uid = " . $_SESSION [ "uid" ]. " AND
231 (SELECT COUNT(id) FROM ttrss_feeds AS T2 WHERE T2.id = ttrss_feeds.parent_feed) = 0
232 $cat_qpart ORDER BY title" );
234 if ( db_num_rows ( $tmp_result ) > 0 ) {
235 print "<option disabled>--------</option>" ;
238 while ( $tmp_line = db_fetch_assoc ( $tmp_result )) {
239 if ( $tmp_line [ "id" ] == $parent_feed ) {
240 $is_selected = "selected" ;
244 printf ( "<option $is_selected value=' %d '> %s </option>" ,
245 $tmp_line [ "id" ], $tmp_line [ "title" ]);
251 $purge_interval = db_fetch_result ( $result , 0 , "purge_interval" );
253 print "<tr><td>" . __ ( 'Article purging:' ). "</td>" ;
257 print_select_hash ( "purge_interval" , $purge_interval , $purge_intervals ,
262 $auth_login = htmlspecialchars ( db_fetch_result ( $result , 0 , "auth_login" ));
264 print "<tr><td>" . __ ( 'Login:' ). "</td>" ;
265 print "<td><input class= \" iedit \" onkeypress= \" return filterCR(event, feedEditSave) \"
266 name= \" auth_login \" value= \" $auth_login\" ></td></tr>" ;
268 $auth_pass = htmlspecialchars ( db_fetch_result ( $result , 0 , "auth_pass" ));
270 print "<tr><td>" . __ ( 'Password:' ). "</td>" ;
271 print "<td><input class= \" iedit \" type= \" password \" name= \" auth_pass \"
272 onkeypress= \" return filterCR(event, feedEditSave) \"
273 value= \" $auth_pass\" ></td></tr>" ;
275 $private = sql_bool_to_bool ( db_fetch_result ( $result , 0 , "private" ));
278 $checked = "checked" ;
283 print "<tr><td valign='top'>" . __ ( 'Options:' ). "</td>" ;
284 print "<td><input type= \" checkbox \" name= \" private \" id= \" private \"
285 $checked ><label for= \" private \" >" . __ ( 'Hide from "Other Feeds"' ). "</label>" ;
287 $rtl_content = sql_bool_to_bool ( db_fetch_result ( $result , 0 , "rtl_content" ));
290 $checked = "checked" ;
295 print "<br><input type= \" checkbox \" id= \" rtl_content \" name= \" rtl_content \"
296 $checked ><label for= \" rtl_content \" >" . __ ( 'Right-to-left content' ). "</label>" ;
298 $hidden = sql_bool_to_bool ( db_fetch_result ( $result , 0 , "hidden" ));
301 $checked = "checked" ;
306 print "<br><input type= \" checkbox \" id= \" hidden \" name= \" hidden \"
307 $checked ><label for= \" hidden \" >" . __ ( 'Hide from my feed list' ). "</label>" ;
309 $include_in_digest = sql_bool_to_bool ( db_fetch_result ( $result , 0 , "include_in_digest" ));
311 if ( $include_in_digest ) {
312 $checked = "checked" ;
317 print "<br><input type= \" checkbox \" id= \" include_in_digest \"
318 name= \" include_in_digest \"
319 $checked ><label for= \" include_in_digest \" >" . __ ( 'Include in e-mail digest' ). "</label>" ;
327 print "<div align='right'>
328 <input type= \" submit \" class= \" button \"
329 onclick= \" return feedEditSave() \" value= \" " . __ ( 'Save' ). " \" >
330 <input type='submit' class='button'
331 onclick= \" return feedEditCancel() \" value= \" " . __ ( 'Cancel' ). " \" ></div>" ;
338 if ( $subop == "editSave" ) {
340 $feed_title = db_escape_string ( trim ( $_POST [ "title" ]));
341 $feed_link = db_escape_string ( trim ( $_POST [ "feed_url" ]));
342 $upd_intl = db_escape_string ( $_POST [ "update_interval" ]);
343 $purge_intl = db_escape_string ( $_POST [ "purge_interval" ]);
344 $feed_id = db_escape_string ( $_POST [ "id" ]);
345 $cat_id = db_escape_string ( $_POST [ "cat_id" ]);
346 $auth_login = db_escape_string ( trim ( $_POST [ "auth_login" ]));
347 $auth_pass = db_escape_string ( trim ( $_POST [ "auth_pass" ]));
348 $parent_feed = db_escape_string ( $_POST [ "parent_feed" ]);
349 $private = checkbox_to_sql_bool ( db_escape_string ( $_POST [ "private" ]));
350 $rtl_content = checkbox_to_sql_bool ( db_escape_string ( $_POST [ "rtl_content" ]));
351 $hidden = checkbox_to_sql_bool ( db_escape_string ( $_POST [ "hidden" ]));
352 $include_in_digest = checkbox_to_sql_bool (
353 db_escape_string ( $_POST [ "include_in_digest" ]));
355 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
356 if ( $cat_id && $cat_id != 0 ) {
357 $category_qpart = "cat_id = ' $cat_id '," ;
358 $category_qpart_nocomma = "cat_id = ' $cat_id '" ;
360 $category_qpart = 'cat_id = NULL,' ;
361 $category_qpart_nocomma = 'cat_id = NULL' ;
364 $category_qpart = "" ;
365 $category_qpart_nocomma = "" ;
368 if ( $parent_feed && $parent_feed != 0 ) {
369 $parent_qpart = "parent_feed = ' $parent_feed '" ;
371 $parent_qpart = 'parent_feed = NULL' ;
374 $result = db_query ( $link , "UPDATE ttrss_feeds SET
375 $category_qpart $parent_qpart ,
376 title = ' $feed_title ', feed_url = ' $feed_link ',
377 update_interval = ' $upd_intl ',
378 purge_interval = ' $purge_intl ',
379 auth_login = ' $auth_login ',
380 auth_pass = ' $auth_pass ',
382 rtl_content = $rtl_content ,
384 include_in_digest = $include_in_digest
385 WHERE id = ' $feed_id ' AND owner_uid = " . $_SESSION [ "uid" ]);
387 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
388 # update linked feed categories
389 $result = db_query ( $link , "UPDATE ttrss_feeds SET
390 $category_qpart_nocomma WHERE parent_feed = ' $feed_id ' AND
391 owner_uid = " . $_SESSION [ "uid" ]);
395 if ( $subop == "remove" ) {
397 if (! WEB_DEMO_MODE
) {
399 $ids = split ( "," , db_escape_string ( $_GET [ "ids" ]));
401 foreach ( $ids as $id ) {
405 db_query ( $link , "DELETE FROM ttrss_feeds
406 WHERE id = ' $id ' AND owner_uid = " . $_SESSION [ "uid" ]);
408 $icons_dir = ICONS_DIR
;
410 if ( file_exists ( $icons_dir . "/ $id .ico" )) {
411 unlink ( $icons_dir . "/ $id .ico" );
413 } else if ( $id < - 10 ) {
415 $label_id = - $id - 11 ;
417 db_query ( $link , "DELETE FROM ttrss_labels
418 WHERE id = ' $label_id ' AND owner_uid = " . $_SESSION [ "uid" ]);
424 if ( $subop == "add" ) {
426 if (! WEB_DEMO_MODE
) {
428 $feed_url = db_escape_string ( trim ( $_REQUEST [ "feed_url" ]));
429 $cat_id = db_escape_string ( $_REQUEST [ "cat_id" ]);
430 $p_from = db_escape_string ( $_REQUEST [ "from" ]);
432 /* only read authentication information from POST */
434 $auth_login = db_escape_string ( trim ( $_POST [ "auth_login" ]));
435 $auth_pass = db_escape_string ( trim ( $_POST [ "auth_pass" ]));
437 if ( $p_from != 'tt-rss' ) {
440 <title>Tiny Tiny RSS - Subscribe to feed...</title>
441 <link rel= \" stylesheet \" type= \" text/css \" href= \" quicksub.css \" >
444 <img class= \" logo \" src= \" images/ttrss_logo.png \"
445 alt= \" Tiny Tiny RSS \" />
446 <h1>Subscribe to feed...</h1>
447 <div class= \" content \" >" ;
450 if ( subscribe_to_feed ( $link , $feed_url , $cat_id , $auth_login , $auth_pass )) {
451 print_notice ( T_sprintf ( "Subscribed to <b> %s </b>." , $feed_url ));
453 print_warning ( T_sprintf ( "Already subscribed to <b> %s </b>." , $feed_url ));
456 if ( $p_from != 'tt-rss' ) {
457 $tt_uri = 'http://' . $_SERVER [ 'SERVER_NAME' ] .
458 preg_replace ( '/backend\.php.*$/' ,
459 'tt-rss.php' , $_SERVER [ "REQUEST_URI" ]);
461 $tp_uri = 'http://' . $_SERVER [ 'SERVER_NAME' ] .
462 preg_replace ( '/backend\.php.*$/' ,
463 'prefs.php' , $_SERVER [ "REQUEST_URI" ]);
465 print "<p><a href=' $tt_uri '>Return to Tiny Tiny RSS</a> |" ;
467 $result = db_query ( $link , "SELECT id FROM ttrss_feeds WHERE
468 feed_url = ' $feed_url ' AND owner_uid = " . $_SESSION [ "uid" ]);
470 $feed_id = db_fetch_result ( $result , 0 , "id" );
473 print "<a href=' $tp_uri ?tab=feedConfig&subop=editFeed: $feed_id '>
474 Edit subscription options</a> | " ;
477 print "<a href='javascript:window.close()'>Close this window</a>.</p>" ;
479 print "</div></body></html>" ;
486 if ( $subop == "categorize" ) {
488 if (! WEB_DEMO_MODE
) {
490 $ids = split ( "," , db_escape_string ( $_GET [ "ids" ]));
492 $cat_id = db_escape_string ( $_GET [ "cat_id" ]);
495 $cat_id_qpart = 'NULL' ;
497 $cat_id_qpart = "' $cat_id '" ;
500 db_query ( $link , "BEGIN" );
502 foreach ( $ids as $id ) {
504 db_query ( $link , "UPDATE ttrss_feeds SET cat_id = $cat_id_qpart
505 WHERE id = ' $id ' AND parent_feed IS NULL
506 AND owner_uid = " . $_SESSION [ "uid" ]);
508 # update linked feed categories
509 db_query ( $link , "UPDATE ttrss_feeds SET
510 cat_id = $cat_id_qpart WHERE parent_feed = ' $id ' AND
511 owner_uid = " . $_SESSION [ "uid" ]);
515 db_query ( $link , "COMMIT" );
520 if ( $subop == "editCats" ) {
522 $action = $_REQUEST [ "action" ];
524 if ( $action == "save" ) {
526 $cat_title = db_escape_string ( trim ( $_REQUEST [ "value" ]));
527 $cat_id = db_escape_string ( $_GET [ "cid" ]);
529 $result = db_query ( $link , "UPDATE ttrss_feed_categories SET
530 title = ' $cat_title ' WHERE id = ' $cat_id ' AND owner_uid = " . $_SESSION [ "uid" ]);
532 print $_REQUEST [ "value" ];
538 print "<div id= \" infoBoxTitle \" >" . __ ( 'Category editor' ). "</div>" ;
540 print "<div class= \" infoBoxContents \" >" ;
543 if ( $action == "add" ) {
545 if (! WEB_DEMO_MODE
) {
547 $feed_cat = db_escape_string ( trim ( $_GET [ "cat" ]));
549 $result = db_query ( $link ,
550 "SELECT id FROM ttrss_feed_categories
551 WHERE title = ' $feed_cat ' AND owner_uid = " . $_SESSION [ "uid" ]);
553 if ( db_num_rows ( $result ) == 0 ) {
555 $result = db_query ( $link ,
556 "INSERT INTO ttrss_feed_categories (owner_uid,title)
557 VALUES ('" . $_SESSION [ "uid" ]. "', ' $feed_cat ')" );
561 print_warning ( T_sprintf ( "Category <b>$ %s </b> already exists in the database." ,
568 if ( $action == "remove" ) {
570 if (! WEB_DEMO_MODE
) {
572 $ids = split ( "," , db_escape_string ( $_GET [ "ids" ]));
574 foreach ( $ids as $id ) {
576 db_query ( $link , "BEGIN" );
578 $result = db_query ( $link ,
579 "SELECT count(id) as num_feeds FROM ttrss_feeds
580 WHERE cat_id = ' $id '" );
582 $num_feeds = db_fetch_result ( $result , 0 , "num_feeds" );
584 if ( $num_feeds == 0 ) {
585 db_query ( $link , "DELETE FROM ttrss_feed_categories
586 WHERE id = ' $id ' AND owner_uid = " . $_SESSION [ "uid" ]);
589 print format_warning ( __ ( "Unable to delete non empty feed categories." ));
593 db_query ( $link , "COMMIT" );
598 print "<div class= \" prefGenericAddBox \" >
599 <input id= \" fadd_cat \"
600 onkeypress= \" return filterCR(event, addFeedCat) \"
601 onkeyup= \" toggleSubmitNotEmpty(this, 'catadd_submit_btn') \"
602 onchange= \" toggleSubmitNotEmpty(this, 'catadd_submit_btn') \"
605 type= \" submit \" class= \" button \" disabled= \" true \" id= \" catadd_submit_btn \"
606 onclick= \" javascript:addFeedCat() \" value= \" " . __ ( 'Create category' ). " \" ></div>" ;
608 $result = db_query ( $link , "SELECT title,id FROM ttrss_feed_categories
609 WHERE owner_uid = " . $_SESSION [ "uid" ]. "
614 if ( db_num_rows ( $result ) != 0 ) {
616 print "<table width= \" 100% \" class= \" prefFeedCatList \"
619 print "<tr><td class= \" selectPrompt \" colspan= \" 8 \" >
621 <a href= \" javascript:selectPrefRows('fcat', true) \" >" . __ ( 'All' ). "</a>,
622 <a href= \" javascript:selectPrefRows('fcat', false) \" >" . __ ( 'None' ). "</a>
627 print "<div class= \" prefFeedCatHolder \" >" ;
629 print "<form id= \" feed_cat_edit_form \" onsubmit= \" return false \" >" ;
631 print "<table width= \" 100% \" class= \" prefFeedCatList \"
632 cellspacing= \" 0 \" id= \" prefFeedCatList \" >" ;
636 while ( $line = db_fetch_assoc ( $result )) {
638 $class = ( $lnum %
2 ) ?
"even" : "odd" ;
640 $cat_id = $line [ "id" ];
641 $this_row_id = "id= \" FCATR- $cat_id\" " ;
643 print "<tr class= \" $class\" $this_row_id >" ;
645 $edit_title = htmlspecialchars ( $line [ "title" ]);
647 print "<td width='5%' align='center'><input
648 onclick='toggleSelectPrefRow(this, \" fcat \" );'
649 type= \" checkbox \" id= \" FCCHK- $cat_id\" ></td>" ;
651 print "<td><span id= \" FCATT- $cat_id\" >" .
652 $edit_title . "</span></td>" ;
666 print "<p>" . __ ( 'No feed categories defined.' ). "</p>" ;
669 print "<div style='float : right'>
670 <input type='submit' class='button'
671 onclick= \" selectTab('feedConfig') \" value= \" " . __ ( 'Close this window' ). " \" ></div>" ;
673 print "<div id= \" catOpToolbar \" >" ;
676 <input type= \" submit \" class= \" button \" disabled= \" true \"
677 onclick= \" return removeSelectedFeedCats() \" value= \" " . __ ( 'Remove' ). " \" >" ;
689 set_pref ( $link , "_PREFS_ACTIVE_TAB" , "feedConfig" );
691 $result = db_query ( $link , "SELECT COUNT(id) AS num_errors
692 FROM ttrss_feeds WHERE last_error != '' AND owner_uid = " . $_SESSION [ "uid" ]);
694 $num_errors = db_fetch_result ( $result , 0 , "num_errors" );
696 if ( $num_errors > 0 ) {
698 print format_notice ( "<a href= \" javascript:showFeedsWithErrors() \" >" .
699 __ ( 'Some feeds have update errors (click for details)' ). "</a>" );
702 $feed_search = db_escape_string ( $_GET [ "search" ]);
704 if ( array_key_exists ( "search" , $_GET )) {
705 $_SESSION [ "prefs_feed_search" ] = $feed_search ;
707 $feed_search = $_SESSION [ "prefs_feed_search" ];
710 print "<div class= \" feedEditSearch \" >
711 <input id= \" feed_search \" size= \" 20 \"
712 onchange= \" javascript:updateFeedList() \" value= \" $feed_search\" >
713 <input type= \" submit \" class= \" button \"
714 onclick= \" javascript:updateFeedList() \" value= \" " . __ ( 'Search' ). " \" >
717 /* print "<input id=\"fadd_link\"
718 onkeyup=\"toggleSubmitNotEmpty(this, 'fadd_submit_btn')\"
719 onchange=\"toggleSubmitNotEmpty(this, 'fadd_submit_btn')\"
721 <input type=\"submit\" class=\"button\"
722 disabled=\"true\" id=\"fadd_submit_btn\"
723 onclick=\"addFeed()\" value=\"".__('Subscribe')."\">"; */
725 print "<input onclick= \" javascript:displayDlg('quickAddFeed') \"
726 type= \" submit \" id= \" subscribe_to_feed_btn \"
727 class= \" button \" value= \" " . __ ( 'Subscribe to feed' ). " \" >" ;
729 if ( ENABLE_FEED_BROWSER
&& ! SINGLE_USER_MODE
) {
730 print " <input type= \" submit \" class= \" button \"
731 id= \" top25_feeds_btn \"
732 onclick= \" javascript:browseFeeds() \" value= \" " . __ ( 'Top 25' ). " \" >" ;
735 $feeds_sort = db_escape_string ( $_GET [ "sort" ]);
737 if (! $feeds_sort ||
$feeds_sort == "undefined" ) {
738 $feeds_sort = $_SESSION [ "pref_sort_feeds" ];
739 if (! $feeds_sort ) $feeds_sort = "title" ;
742 $_SESSION [ "pref_sort_feeds" ] = $feeds_sort ;
745 $search_qpart = "(UPPER(F1.title) LIKE UPPER('% $feed_search %') OR
746 UPPER(F1.feed_url) LIKE UPPER('% $feed_search %')) AND" ;
751 $show_last_article_info = false ;
752 $show_last_article_checked = "" ;
753 $show_last_article_qpart = "" ;
755 if ( $_GET [ "slat" ] == "true" ) {
756 $show_last_article_info = true ;
757 $show_last_article_checked = "checked" ;
758 $show_last_article_qpart = ", (SELECT SUBSTRING(MAX(updated),1,16) FROM ttrss_user_entries,
759 ttrss_entries WHERE ref_id = ttrss_entries.id
760 AND feed_id = F1.id) AS last_article" ;
761 } else if ( $feeds_sort == "last_article" ) {
762 $feeds_sort = "title" ;
765 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
766 $order_by_qpart = "category, $feeds_sort ,title" ;
768 $order_by_qpart = " $feeds_sort ,title" ;
771 $result = db_query ( $link , "SELECT
775 substring(F1.last_updated,1,16) AS last_updated,
781 F2.title AS parent_title,
782 C1.title AS category,
785 $show_last_article_qpart
788 LEFT JOIN ttrss_feeds AS F2
789 ON (F1.parent_feed = F2.id)
790 LEFT JOIN ttrss_feed_categories AS C1
791 ON (F1.cat_id = C1.id)
793 $search_qpart F1.owner_uid = '" . $_SESSION [ "uid" ]. "'
794 ORDER by $order_by_qpart " );
796 if ( db_num_rows ( $result ) != 0 ) {
798 // print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>";
800 print "<p><table width= \" 100% \" cellspacing= \" 0 \"
801 class= \" prefFeedList \" id= \" prefFeedList \" >" ;
802 print "<tr><td class= \" selectPrompt \" colspan= \" 8 \" >" .
803 "<div style='float : right'>" .
804 "<input id='show_last_article_times' type='checkbox' onchange='feedlistToggleSLAT()'
805 $show_last_article_checked ><label
806 for='show_last_article_times'>" . __ ( 'Show last article times' ). "</label></div>" .
808 <a href= \" javascript:selectPrefRows('feed', true) \" >" . __ ( 'All' ). "</a>,
809 <a href= \" javascript:selectPrefRows('feed', false) \" >" . __ ( 'None' ). "</a>
812 if (! get_pref ( $link , 'ENABLE_FEED_CATS' )) {
813 print "<tr class= \" title \" >
814 <td width='5%' align='center'> </td>" ;
816 if ( get_pref ( $link , 'ENABLE_FEED_ICONS' )) {
817 print "<td width='3%'> </td>" ;
820 print "<td width='60%'><a href= \" javascript:updateFeedList('title') \" >" . __ ( 'Title' ). "</a></td>" ;
822 if ( $show_last_article_info ) {
823 print "<td width='20%' align='right'><a href= \" javascript:updateFeedList('last_article') \" >" . __ ( 'Last Article' ). "</a></td>" ;
826 print "<td width='20%' align='right'><a href= \" javascript:updateFeedList('last_updated') \" >" . __ ( 'Updated' ). "</a></td>" ;
833 while ( $line = db_fetch_assoc ( $result )) {
835 $feed_id = $line [ "id" ];
836 $cat_id = $line [ "cat_id" ];
838 $edit_title = htmlspecialchars ( $line [ "title" ]);
839 $edit_cat = htmlspecialchars ( $line [ "category" ]);
841 $hidden = sql_bool_to_bool ( $line [ "hidden" ]);
843 $last_error = $line [ "last_error" ];
845 if (! $edit_cat ) $edit_cat = __ ( "Uncategorized" );
847 $last_updated = $line [ "last_updated" ];
849 if (! $last_updated ) {
850 $last_updated = "—" ;
851 } else if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
852 $last_updated = smart_date_time ( strtotime ( $last_updated ));
854 $short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
855 $last_updated = date ( $short_date , strtotime ( $last_updated ));
858 $last_article = $line [ "last_article" ];
860 if (! $last_article ) {
861 $last_article = "—" ;
862 } else if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
863 $last_article = smart_date_time ( strtotime ( $last_article ));
865 $short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
866 $last_article = date ( $short_date , strtotime ( $last_article ));
869 if ( get_pref ( $link , 'ENABLE_FEED_CATS' ) && $cur_cat_id != $cat_id ) {
872 print "<tr><td colspan= \" 6 \" class= \" feedEditCat \" > $edit_cat </td></tr>" ;
874 print "<tr class= \" title \" >
875 <td width='5%'> </td>" ;
877 if ( get_pref ( $link , 'ENABLE_FEED_ICONS' )) {
878 print "<td width='3%'> </td>" ;
881 print "<td width='60%'><a href= \" javascript:updateFeedList('title') \" >" . __ ( 'Title' ). "</a></td>" ;
883 if ( $show_last_article_info ) {
884 print "<td width='20%' align='right'>
885 <a href= \" javascript:updateFeedList('last_article') \" >" . __ ( 'Last Article' ). "</a></td>" ;
888 print "<td width='20%' align='right'>
889 <a href= \" javascript:updateFeedList('last_updated') \" >" . __ ( 'Updated' ). "</a></td>" ;
891 $cur_cat_id = $cat_id ;
894 $class = ( $lnum %
2 ) ?
"even" : "odd" ;
895 $this_row_id = "id= \" FEEDR- $feed_id\" " ;
897 print "<tr class= \" $class\" $this_row_id >" ;
899 $icon_file = ICONS_DIR
. "/ $feed_id .ico" ;
901 if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
902 $feed_icon = "<img class= \" tinyFeedIcon \" src= \" " . ICONS_URL
. "/ $feed_id .ico \" >" ;
904 $feed_icon = "<img class= \" tinyFeedIcon \" src= \" images/blank_icon.gif \" >" ;
907 print "<td class='feedSelect'><input onclick='toggleSelectPrefRow(this, \" feed \" );'
908 type= \" checkbox \" id= \" FRCHK-" . $line [ "id" ]. " \" ></td>" ;
910 if ( get_pref ( $link , 'ENABLE_FEED_ICONS' )) {
911 print "<td class='feedIcon'> $feed_icon </td>" ;
915 $edit_title = "<span class= \" insensitive \" > $edit_title (Hidden)</span>" ;
916 $last_updated = "<span class= \" insensitive \" > $last_updated </span>" ;
917 $last_article = "<span class= \" insensitive \" > $last_article </span>" ;
921 $edit_title = "<span class= \" feed_error \" > $edit_title </span>" ;
922 $last_updated = "<span class= \" feed_error \" > $last_updated </span>" ;
923 $last_article = "<span class= \" feed_error \" > $last_article </span>" ;
926 $parent_title = $line [ "parent_title" ];
928 $parent_title = "<span class='groupPrompt'>(linked to
929 $parent_title )</span>" ;
932 print "<td><a href= \" javascript:editFeed( $feed_id ); \" >" .
933 " $edit_title $parent_title " . "</a></td>" ;
935 if ( $show_last_article_info ) {
936 print "<td align='right'><a href= \" javascript:editFeed( $feed_id ); \" >" .
937 " $last_article </a></td>" ;
940 print "<td align='right'><a href= \" javascript:editFeed( $feed_id ); \" >" .
941 " $last_updated </a></td>" ;
950 print "<p><span id= \" feedOpToolbar \" >" ;
952 print "<input type= \" submit \" class= \" button \" disabled= \" true \"
953 onclick= \" javascript:editSelectedFeed() \" value= \" " . __ ( 'Edit' ). " \" >
954 <input type= \" submit \" class= \" button \" disabled= \" true \"
955 onclick= \" javascript:removeSelectedFeeds() \"
956 value= \" " . __ ( 'Unsubscribe' ). " \" >" ;
958 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
960 print " | " ;
962 print_feed_cat_select ( $link , "sfeed_set_fcat" , "" , "disabled" );
964 print " <input type= \" submit \" class= \" button \" disabled= \" true \"
965 onclick= \" javascript:categorizeSelectedFeeds() \" value= \" " .
966 __ ( 'Recategorize' ). " \" >" ;
971 if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
973 print " <input type= \" submit \" class= \" button \"
974 onclick= \" javascript:editFeedCats() \" value= \" " .
975 __ ( "Edit categories" ). " \" >" ;
977 # print " | ";
982 // print "<p>No feeds defined.</p>";
986 print "<h3>" . __ ( 'OPML' ). "</h3>
988 <div style='float : left'>
989 <form enctype= \" multipart/form-data \" method= \" POST \" action= \" opml.php \" >
990 File: <input id= \" opml_file \" name= \" opml_file \" type= \" file \" >
991 <input class= \" button \" name= \" op \" onclick= \" return validateOpmlImport(); \"
992 type= \" submit \" value= \" " . __ ( 'Import' ). " \" >
997 print "<input type= \" submit \"
998 class= \" button \" onclick= \" gotoExportOpml() \"
999 value= \" " . __ ( 'Export OPML' ). " \" >" ;
1002 print "<h3>" . __ ( "Published articles" ). "</h3>" ;
1004 if (! get_pref ( $link , "_PREFS_PUBLISH_KEY" )) {
1005 set_pref ( $link , "_PREFS_PUBLISH_KEY" , generate_publish_key ());
1008 print "<p>" . __ ( 'Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the address specified below.' ). "</p>" ;
1010 $url_path = article_publish_url ( $link );
1012 print "<p class= \" small \" ><a id= \" pubGenAddress \" target= \" _new \" href= \" $url_path\" > $url_path </a></p>" ;
1014 print "<p><input type= \" submit \" onclick= \" return pubRegenKey() \"
1015 value= \" " . __ ( 'Generate another address' ). " \" ></p>" ;