2006-08-19 07:04:45 +00:00
< ? php
2006-03-02 08:10:43 +00:00
require_once " sessions.php " ;
2006-03-29 03:11:48 +00:00
require_once " backend-rpc.php " ;
2006-03-02 08:10:43 +00:00
2006-02-26 14:07:22 +00:00
header ( " Cache-Control: no-cache, must-revalidate " );
2006-02-24 17:57:14 +00:00
header ( " Pragma: no-cache " );
header ( " Expires: -1 " );
2006-02-11 13:52:17 +00:00
2006-03-21 07:09:18 +00:00
/* if ( $_GET [ " debug " ]) {
2005-11-23 18:08:01 +00:00
define ( 'DEFAULT_ERROR_LEVEL' , E_ALL );
} else {
define ( 'DEFAULT_ERROR_LEVEL' , E_ERROR | E_WARNING | E_PARSE );
}
2006-03-21 07:09:18 +00:00
error_reporting ( DEFAULT_ERROR_LEVEL ); */
2005-11-23 18:08:01 +00:00
2005-11-19 14:46:23 +00:00
$op = $_REQUEST [ " op " ];
2006-07-25 08:11:13 +00:00
define ( 'SCHEMA_VERSION' , 9 );
2006-03-27 16:08:51 +00:00
require_once " sanity_check.php " ;
require_once " config.php " ;
2006-03-31 05:18:55 +00:00
require_once " db.php " ;
require_once " db-prefs.php " ;
require_once " functions.php " ;
2006-03-27 16:08:51 +00:00
$err_msg = check_configuration_variables ();
2006-08-20 12:33:37 +00:00
$print_exec_time = true ;
2006-03-27 16:08:51 +00:00
if ( $err_msg ) {
2006-03-31 05:18:55 +00:00
header ( " Content-Type: application/xml " );
print_error_xml ( 9 , $err_msg ); die ;
2006-03-27 16:08:51 +00:00
}
2006-07-31 11:35:50 +00:00
if (( ! $op || $op == " rpc " || $op == " rss " ||
$op == " globalUpdateFeeds " ) && ! $_REQUEST [ " noxml " ]) {
2005-11-19 14:46:23 +00:00
header ( " Content-Type: application/xml " );
}
2006-08-20 03:35:47 +00:00
if ( ! $op ) {
header ( " Content-Type: application/xml " );
print_error_xml ( 7 ); exit ;
}
if ( ! $_SESSION [ " uid " ] && $op != " globalUpdateFeeds " && $op != " rss " && $op != " getUnread " ) {
2005-11-19 14:46:23 +00:00
2005-11-21 07:11:21 +00:00
if ( $op == " rpc " ) {
2006-03-31 05:18:55 +00:00
print_error_xml ( 6 ); die ;
2006-02-28 11:02:57 +00:00
} else {
print "
< html >< body >
< p > Error : Not logged in .</ p >
< script type = \ " text/javascript \" >
if ( parent . window != 'undefined' ) {
parent . window . location = \ " login.php \" ;
} else {
window . location = \ " login.php \" ;
}
</ script >
</ body ></ html >
" ;
2005-11-19 14:46:23 +00:00
}
exit ;
}
2005-11-18 06:04:32 +00:00
2006-03-20 14:30:51 +00:00
$purge_intervals = array (
2006-05-20 09:50:24 +00:00
0 => " Use default " ,
2006-03-20 14:30:51 +00:00
- 1 => " Never purge " ,
2006-05-20 09:50:24 +00:00
5 => " 1 week old " ,
14 => " 2 weeks old " ,
31 => " 1 month old " ,
60 => " 2 months old " ,
90 => " 3 months old " );
2006-03-20 14:30:51 +00:00
$update_intervals = array (
2006-05-20 09:50:24 +00:00
0 => " Use default " ,
2006-03-20 14:30:51 +00:00
- 1 => " Disable updates " ,
2006-05-20 09:50:24 +00:00
30 => " Each 30 minutes " ,
60 => " Hourly " ,
240 => " Each 4 hours " ,
720 => " Each 12 hours " ,
2006-03-20 14:30:51 +00:00
1440 => " Daily " ,
10080 => " Weekly " );
2006-05-20 14:26:00 +00:00
$access_level_names = array (
0 => " User " ,
10 => " Administrator " );
2005-10-23 15:48:58 +00:00
$script_started = getmicrotime ();
2005-09-07 12:17:16 +00:00
$link = db_connect ( DB_HOST , DB_USER , DB_PASS , DB_NAME );
2005-08-21 13:46:43 +00:00
2005-09-14 13:40:26 +00:00
if ( ! $link ) {
if ( DB_TYPE == " mysql " ) {
print mysql_error ();
}
// PG seems to display its own errors just fine by default.
return ;
}
2005-09-07 12:17:16 +00:00
if ( DB_TYPE == " pgsql " ) {
pg_query ( " set client_encoding = 'utf-8' " );
}
2005-11-10 04:35:39 +00:00
2006-01-21 06:19:42 +00:00
if ( $_SESSION [ " uid " ]) {
2006-02-03 08:35:30 +00:00
2006-05-23 05:34:50 +00:00
// setcookie('ttrss_vf_refresh', FEEDS_FRAME_REFRESH);
// setcookie('ttrss_vf_daemon', ENABLE_UPDATE_DAEMON);
2006-05-17 13:26:10 +00:00
2006-05-23 05:34:50 +00:00
/* if ( get_pref ( $link , " ON_CATCHUP_SHOW_NEXT_FEED " )) {
2006-05-17 13:26:10 +00:00
setcookie ( 'ttrss_vf_catchupnext' , 1 );
} else {
setcookie ( 'ttrss_vf_catchupnext' , 0 );
2006-05-23 05:34:50 +00:00
} */
2006-01-21 06:19:42 +00:00
}
2006-01-05 15:12:40 +00:00
2005-08-22 04:56:40 +00:00
$fetch = $_GET [ " fetch " ];
2005-08-22 11:43:07 +00:00
2006-03-20 16:53:11 +00:00
// setcookie("ttrss_icons_url", ICONS_URL);
2005-12-22 12:53:28 +00:00
if ( ! sanity_check ( $link )) { return ; }
2005-12-16 17:35:04 +00:00
2005-09-09 07:45:54 +00:00
function outputFeedList ( $link , $tags = false ) {
2005-08-22 11:43:07 +00:00
2005-09-07 03:53:29 +00:00
print " <html><head>
< title > Tiny Tiny RSS : Feedlist </ title >
2005-11-16 09:20:11 +00:00
< link rel = \ " stylesheet \" href= \" tt-rss.css \" type= \" text/css \" > " ;
2005-11-26 06:48:37 +00:00
$user_theme = $_SESSION [ " theme " ];
if ( $user_theme ) {
print " <link rel= \" stylesheet \" type= \" text/css \"
href = \ " themes/ $user_theme /theme.css \" > " ;
}
2005-11-16 17:37:45 +00:00
if ( get_pref ( $link , 'USE_COMPACT_STYLESHEET' )) {
2005-11-16 09:20:11 +00:00
print " <link rel= \" stylesheet \" type= \" text/css \"
href = \ " tt-rss_compact.css \" /> " ;
} else {
print " <link title= \" Compact Stylesheet \" rel= \" alternate stylesheet \"
type = \ " text/css \" href= \" tt-rss_compact.css \" /> " ;
}
2006-03-31 05:24:22 +00:00
$script_dt_add = get_script_dt_add ();
2006-05-21 04:28:51 +00:00
print "
< script type = \ " text/javascript \" src= \" prototype.js \" ></script>
< script type = \ " text/javascript \" src= \" functions.js? $script_dt_add\ " ></ script >
2006-03-30 06:43:35 +00:00
< script type = \ " text/javascript \" src= \" feedlist.js? $script_dt_add\ " ></ script >
2005-09-07 03:53:29 +00:00
< meta http - equiv = \ " Content-Type \" content= \" text/html; charset=utf-8 \" >
2005-12-20 15:48:19 +00:00
<!-- [ if gte IE 5.5000 ] >
< script type = \ " text/javascript \" src= \" pngfix.js \" ></script>
2005-12-20 16:01:38 +00:00
< link rel = \ " stylesheet \" type= \" text/css \" href= \" tt-rss-ie.css \" >
2005-12-20 15:48:19 +00:00
<! [ endif ] -->
2006-02-24 10:15:30 +00:00
</ head >< body >
< script type = \ " text/javascript \" >
if ( document . addEventListener ) {
document . addEventListener ( \ " DOMContentLoaded \" , init, null);
}
window . onload = init ;
</ script > " ;
2005-09-08 06:31:16 +00:00
2006-02-24 10:20:58 +00:00
print " <ul class= \" feedList \" id= \" feedList \" > \n " ;
2005-09-08 06:31:16 +00:00
2005-11-17 18:04:38 +00:00
$owner_uid = $_SESSION [ " uid " ];
2005-09-09 07:45:54 +00:00
if ( ! $tags ) {
2005-09-08 06:31:16 +00:00
2005-09-09 07:45:54 +00:00
/* virtual feeds */
2005-09-08 06:31:16 +00:00
2005-11-23 07:07:04 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-02-24 10:22:59 +00:00
print " <li class= \" feedCat \" >Special</li> " ;
print " <li id= \" feedCatHolder \" ><ul class= \" feedCatList \" > " ;
2005-11-23 07:07:04 +00:00
}
2006-08-16 13:13:33 +00:00
$num_starred = getFeedUnread ( $link , - 1 );
2005-09-08 06:31:16 +00:00
2005-11-15 09:13:49 +00:00
$class = " virt " ;
2005-09-09 07:58:21 +00:00
if ( $num_starred > 0 ) $class .= " Unread " ;
printFeedEntry ( - 1 , $class , " Starred articles " , $num_starred ,
2005-11-16 17:47:58 +00:00
" images/mark_set.png " , $link );
2005-09-08 07:43:44 +00:00
2005-11-23 07:07:04 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-02-24 10:20:58 +00:00
print " </ul> \n " ;
2005-11-23 07:07:04 +00:00
}
2005-12-02 20:07:47 +00:00
if ( GLOBAL_ENABLE_LABELS && get_pref ( $link , 'ENABLE_LABELS' )) {
2005-09-09 07:45:54 +00:00
$result = db_query ( $link , " SELECT id,sql_exp,description FROM
2005-11-17 18:04:38 +00:00
ttrss_labels WHERE owner_uid = '$owner_uid' ORDER by description " );
2005-09-09 07:45:54 +00:00
if ( db_num_rows ( $result ) > 0 ) {
2005-11-23 07:07:04 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-02-24 10:22:59 +00:00
print " <li class= \" feedCat \" >Labels</li> " ;
print " <li id= \" feedCatHolder \" ><ul class= \" feedCatList \" > " ;
2005-11-23 07:07:04 +00:00
} else {
2006-02-24 10:22:59 +00:00
print " <li><hr></li> " ;
2005-11-23 07:07:04 +00:00
}
2005-09-09 07:45:54 +00:00
}
while ( $line = db_fetch_assoc ( $result )) {
2005-09-08 07:43:44 +00:00
2005-09-09 07:45:54 +00:00
error_reporting ( 0 );
2006-08-16 13:13:33 +00:00
$label_id = - $line [ 'id' ] - 11 ;
$count = getFeedUnread ( $link , $label_id );
2005-11-15 09:13:49 +00:00
$class = " label " ;
2005-09-09 07:45:54 +00:00
if ( $count > 0 ) {
$class .= " Unread " ;
}
2005-11-23 18:08:01 +00:00
error_reporting ( DEFAULT_ERROR_LEVEL );
2005-09-09 07:45:54 +00:00
2006-08-16 13:13:33 +00:00
printFeedEntry ( $label_id ,
2006-08-01 08:11:57 +00:00
$class , db_unescape_string ( $line [ " description " ]),
$count , " images/label.png " , $link );
2005-09-09 07:45:54 +00:00
}
2005-11-23 07:07:04 +00:00
if ( db_num_rows ( $result ) > 0 ) {
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-02-24 10:20:58 +00:00
print " </ul> " ;
2005-11-23 07:07:04 +00:00
}
}
}
// if (!get_pref($link, 'ENABLE_FEED_CATS')) {
print " <li><hr></li> " ;
// }
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-06-05 08:33:19 +00:00
if ( get_pref ( $link , " FEEDS_SORT_BY_UNREAD " )) {
$order_by_qpart = " category,unread DESC,title " ;
} else {
$order_by_qpart = " category,title " ;
}
2005-11-23 07:07:04 +00:00
} else {
2006-06-05 08:33:19 +00:00
if ( get_pref ( $link , " FEEDS_SORT_BY_UNREAD " )) {
$order_by_qpart = " unread DESC,title " ;
} else {
$order_by_qpart = " title " ;
}
2005-09-08 07:43:44 +00:00
}
2005-09-09 07:45:54 +00:00
2005-12-29 06:19:27 +00:00
$result = db_query ( $link , " SELECT ttrss_feeds.*,
2006-03-28 06:12:45 +00:00
SUBSTRING ( last_updated , 1 , 19 ) AS last_updated_noms ,
2005-12-29 06:19:27 +00:00
( SELECT COUNT ( id ) FROM ttrss_entries , ttrss_user_entries
2005-11-19 05:48:02 +00:00
WHERE feed_id = ttrss_feeds . id AND
ttrss_user_entries . ref_id = ttrss_entries . id AND
owner_uid = '$owner_uid' ) AS total ,
2005-12-29 06:19:27 +00:00
( SELECT COUNT ( id ) FROM ttrss_entries , ttrss_user_entries
2005-11-18 13:37:16 +00:00
WHERE feed_id = ttrss_feeds . id AND unread = true
2005-11-19 05:48:02 +00:00
AND ttrss_user_entries . ref_id = ttrss_entries . id
2005-11-23 07:07:04 +00:00
AND owner_uid = '$owner_uid' ) as unread ,
2005-12-16 17:35:04 +00:00
cat_id , last_error ,
2005-12-29 06:19:27 +00:00
ttrss_feed_categories . title AS category ,
ttrss_feed_categories . collapsed
FROM ttrss_feeds LEFT JOIN ttrss_feed_categories
ON ( ttrss_feed_categories . id = cat_id )
WHERE
2006-08-13 12:01:10 +00:00
ttrss_feeds . hidden = false AND
2005-12-29 06:19:27 +00:00
ttrss_feeds . owner_uid = '$owner_uid' AND parent_feed IS NULL
ORDER BY $order_by_qpart " );
2005-09-09 07:45:54 +00:00
$actid = $_GET [ " actid " ];
/* real feeds */
$lnum = 0 ;
$total_unread = 0 ;
2005-11-23 07:07:04 +00:00
$category = " " ;
2006-03-28 06:12:45 +00:00
$short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
2005-09-09 07:45:54 +00:00
2005-09-08 07:43:44 +00:00
while ( $line = db_fetch_assoc ( $result )) {
2005-09-09 07:45:54 +00:00
2005-12-11 07:56:57 +00:00
$feed = db_unescape_string ( $line [ " title " ]);
2005-09-09 07:45:54 +00:00
$feed_id = $line [ " id " ];
$subop = $_GET [ " subop " ];
$total = $line [ " total " ];
$unread = $line [ " unread " ];
2005-11-23 07:07:04 +00:00
2006-03-28 06:12:45 +00:00
if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
$last_updated = smart_date_time ( strtotime ( $line [ " last_updated_noms " ]));
} else {
$last_updated = date ( $short_date , strtotime ( $line [ " last_updated_noms " ]));
}
2006-03-22 07:41:20 +00:00
$rtl_content = sql_bool_to_bool ( $line [ " rtl_content " ]);
if ( $rtl_content ) {
$rtl_tag = " dir= \" RTL \" " ;
} else {
$rtl_tag = " " ;
}
2005-12-29 06:19:27 +00:00
$tmp_result = db_query ( $link ,
" SELECT id,COUNT(unread) AS unread
FROM ttrss_feeds LEFT JOIN ttrss_user_entries
ON ( ttrss_feeds . id = ttrss_user_entries . feed_id )
WHERE parent_feed = '$feed_id' AND unread = true
GROUP BY ttrss_feeds . id " );
if ( db_num_rows ( $tmp_result ) > 0 ) {
while ( $l = db_fetch_assoc ( $tmp_result )) {
$unread += $l [ " unread " ];
}
}
2005-12-13 08:53:56 +00:00
$cat_id = $line [ " cat_id " ];
2005-11-23 07:07:04 +00:00
$tmp_category = $line [ " category " ];
if ( ! $tmp_category ) {
$tmp_category = " Uncategorized " ;
}
2005-09-09 07:45:54 +00:00
// $class = ($lnum % 2) ? "even" : "odd";
2005-12-16 17:35:04 +00:00
if ( $line [ " last_error " ]) {
$class = " error " ;
} else {
$class = " feed " ;
}
2005-09-09 07:45:54 +00:00
if ( $unread > 0 ) $class .= " Unread " ;
if ( $actid == $feed_id ) {
$class .= " Selected " ;
2005-09-09 01:21:30 +00:00
}
2005-09-08 07:43:44 +00:00
2005-09-09 07:45:54 +00:00
$total_unread += $unread ;
2005-11-23 07:07:04 +00:00
if ( $category != $tmp_category && get_pref ( $link , 'ENABLE_FEED_CATS' )) {
if ( $category ) {
2006-02-24 10:20:58 +00:00
print " </ul></li> " ;
2005-11-23 07:07:04 +00:00
}
$category = $tmp_category ;
2005-12-13 08:53:56 +00:00
$collapsed = $line [ " collapsed " ];
2005-12-16 05:37:18 +00:00
// workaround for NULL category
if ( $category == " Uncategorized " ) {
if ( $_COOKIE [ " ttrss_vf_uclps " ] == 1 ) {
$collapsed = " t " ;
}
}
2005-12-13 08:53:56 +00:00
if ( $collapsed == " t " || $collapsed == " 1 " ) {
$holder_class = " invisible " ;
2005-12-16 05:37:18 +00:00
$ellipsis = " ... " ;
2005-12-13 08:53:56 +00:00
} else {
$holder_class = " " ;
2005-12-16 05:37:18 +00:00
$ellipsis = " " ;
2005-12-13 09:27:41 +00:00
}
$cat_id = sprintf ( " %d " , $cat_id );
2006-08-16 13:19:24 +00:00
$cat_unread = getCategoryUnread ( $link , $cat_id );
2005-11-23 07:07:04 +00:00
2005-12-13 08:53:56 +00:00
print " <li class= \" feedCat \" id= \" FCAT- $cat_id\ " >
2006-08-01 04:59:21 +00:00
< a id = \ " FCATN- $cat_id\ " href = \ " javascript:toggleCollapseCat( $cat_id ) \" > $tmp_category </a>
2006-03-04 13:58:15 +00:00
< a href = \ " javascript:viewCategory( $cat_id ) \" id= \" FCAP- $cat_id\ " >
2005-12-13 09:27:41 +00:00
< span id = \ " FCATCTR- $cat_id\ "
2006-03-28 06:12:45 +00:00
class = \ " $catctr_class\ " > ( $cat_unread unread ) $ellipsis </ span >
</ a ></ li > " ;
2005-12-13 09:36:27 +00:00
// !!! NO SPACE before <ul...feedCatList - breaks firstChild DOM function
// -> keyboard navigation, etc.
2005-12-20 16:14:09 +00:00
print " <li id= \" feedCatHolder \" class= \" $holder_class\ " >< ul class = \ " feedCatList \" id= \" FCATLIST- $cat_id\ " > " ;
2005-11-23 07:07:04 +00:00
}
2005-09-09 07:45:54 +00:00
2005-11-23 07:07:04 +00:00
printFeedEntry ( $feed_id , $class , $feed , $unread ,
2006-03-28 06:12:45 +00:00
" icons/ $feed_id .ico " , $link , $rtl_content ,
$last_updated , $line [ " last_error " ]);
2005-09-09 07:45:54 +00:00
++ $lnum ;
2005-09-08 07:43:44 +00:00
}
2005-11-23 07:07:04 +00:00
2005-09-09 07:45:54 +00:00
} else {
2005-08-21 15:01:18 +00:00
2005-09-09 07:45:54 +00:00
// tags
2005-08-21 15:01:18 +00:00
2005-12-13 15:25:54 +00:00
/* $result = db_query ( $link , " SELECT tag_name,count(ttrss_entries.id) AS count
2005-11-19 08:18:34 +00:00
FROM ttrss_tags , ttrss_entries , ttrss_user_entries WHERE
post_int_id = ttrss_user_entries . int_id AND
unread = true AND ref_id = ttrss_entries . id
2005-11-18 12:59:26 +00:00
AND ttrss_tags . owner_uid = '$owner_uid' GROUP BY tag_name
2005-09-09 07:45:54 +00:00
UNION
2005-11-18 12:59:26 +00:00
select tag_name , 0 as count FROM ttrss_tags WHERE owner_uid = '$owner_uid'
2005-12-13 15:25:54 +00:00
ORDER BY tag_name " ); */
$result = db_query ( $link , " SELECT tag_name,SUM((SELECT COUNT(int_id)
FROM ttrss_user_entries WHERE int_id = post_int_id
AND unread = true )) AS count FROM ttrss_tags
WHERE owner_uid = 2 GROUP BY tag_name ORDER BY tag_name " );
2005-09-09 07:45:54 +00:00
$tags = array ();
while ( $line = db_fetch_assoc ( $result )) {
$tags [ $line [ " tag_name " ]] += $line [ " count " ];
2005-09-07 03:53:29 +00:00
}
2005-09-09 07:45:54 +00:00
foreach ( array_keys ( $tags ) as $tag ) {
$unread = $tags [ $tag ];
2005-11-25 15:42:22 +00:00
$class = " tag " ;
2005-09-09 07:45:54 +00:00
if ( $unread > 0 ) {
$class .= " Unread " ;
}
2005-11-16 17:47:58 +00:00
printFeedEntry ( $tag , $class , $tag , $unread , " images/tag.png " , $link );
2005-09-09 07:45:54 +00:00
}
2005-09-07 03:53:29 +00:00
2005-09-07 07:19:14 +00:00
}
2005-08-21 15:23:44 +00:00
2005-10-16 08:04:17 +00:00
if ( db_num_rows ( $result ) == 0 ) {
2005-11-23 17:06:51 +00:00
if ( $tags ) {
$what = " tags " ;
} else {
$what = " feeds " ;
}
print " <li>No $what to display.</li> " ;
2005-10-16 08:04:17 +00:00
}
2005-09-09 07:45:54 +00:00
print " </ul> " ;
2005-08-21 10:13:10 +00:00
2006-02-24 10:15:30 +00:00
print '
< script type = " text/javascript " >
/* for IE */
function statechange () {
if ( document . readyState == " interactive " ) init ();
}
if ( document . readyState ) {
if ( document . readyState == " interactive " || document . readyState == " complete " ) {
init ();
} else {
document . onreadystatechange = statechange ;
}
}
</ script ></ body ></ html > ' ;
2005-08-23 06:43:20 +00:00
}
if ( $op == " rpc " ) {
2006-03-29 03:11:48 +00:00
handle_rpc_request ( $link );
2005-08-23 06:43:20 +00:00
}
if ( $op == " feeds " ) {
2005-09-09 07:45:54 +00:00
$tags = $_GET [ " tags " ];
2005-08-23 06:43:20 +00:00
$subop = $_GET [ " subop " ];
if ( $subop == " catchupAll " ) {
2005-11-19 17:38:44 +00:00
db_query ( $link , " UPDATE ttrss_user_entries SET
2005-11-18 09:28:27 +00:00
last_read = NOW (), unread = false WHERE owner_uid = " . $_SESSION["uid"] );
2005-08-23 06:43:20 +00:00
}
2005-12-13 08:53:56 +00:00
if ( $subop == " collapse " ) {
$cat_id = db_escape_string ( $_GET [ " cid " ]);
2005-12-13 09:27:41 +00:00
2005-12-13 08:53:56 +00:00
db_query ( $link , " UPDATE ttrss_feed_categories SET
collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " .
$_SESSION [ " uid " ]);
return ;
}
2005-09-09 07:45:54 +00:00
outputFeedList ( $link , $tags );
2005-08-23 06:43:20 +00:00
2005-08-21 10:13:10 +00:00
}
if ( $op == " view " ) {
2006-03-20 10:28:14 +00:00
$id = db_escape_string ( $_GET [ " id " ]);
$feed_id = db_escape_string ( $_GET [ " feed " ]);
$result = db_query ( $link , " SELECT rtl_content FROM ttrss_feeds
WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) == 1 ) {
$rtl_content = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " rtl_content " ));
} else {
$rtl_content = false ;
}
if ( $rtl_content ) {
$rtl_tag = " dir= \" RTL \" " ;
2006-03-23 07:24:06 +00:00
$rtl_class = " RTL " ;
2006-03-20 10:28:14 +00:00
} else {
$rtl_tag = " " ;
2006-03-23 07:24:06 +00:00
$rtl_class = " " ;
2006-03-20 10:28:14 +00:00
}
2005-08-21 13:46:43 +00:00
2005-11-19 05:48:02 +00:00
$result = db_query ( $link , " UPDATE ttrss_user_entries
SET unread = false , last_read = NOW ()
WHERE ref_id = '$id' AND feed_id = '$feed_id' AND owner_uid = " . $_SESSION["uid"] );
2005-08-21 15:01:18 +00:00
2005-11-25 08:20:32 +00:00
$result = db_query ( $link , " SELECT title,link,content,feed_id,comments,int_id,
2005-11-27 19:57:59 +00:00
SUBSTRING ( updated , 1 , 16 ) as updated ,
2005-12-10 07:28:55 +00:00
( SELECT icon_url FROM ttrss_feeds WHERE id = feed_id ) as icon_url ,
2006-02-26 07:09:48 +00:00
num_comments ,
author
2005-11-19 05:48:02 +00:00
FROM ttrss_entries , ttrss_user_entries
2006-05-16 11:48:07 +00:00
WHERE id = '$id' AND ref_id = id AND owner_uid = " . $_SESSION["uid"] );
2005-08-21 10:13:10 +00:00
2006-02-26 14:07:22 +00:00
print " <html><head>
< title > Tiny Tiny RSS : Article $id </ title >
< link rel = \ " stylesheet \" href= \" tt-rss.css \" type= \" text/css \" > " ;
2005-11-26 06:48:37 +00:00
2006-02-26 14:07:22 +00:00
$user_theme = $_SESSION [ " theme " ];
if ( $user_theme ) {
print " <link rel= \" stylesheet \" type= \" text/css \"
href = \ " themes/ $user_theme /theme.css \" > " ;
}
2005-11-26 06:48:37 +00:00
2006-02-26 14:07:22 +00:00
if ( get_pref ( $link , 'USE_COMPACT_STYLESHEET' )) {
print " <link rel= \" stylesheet \" type= \" text/css \"
href = \ " tt-rss_compact.css \" /> " ;
} else {
print " <link title= \" Compact Stylesheet \" rel= \" alternate stylesheet \"
type = \ " text/css \" href= \" tt-rss_compact.css \" /> " ;
2005-09-05 09:09:10 +00:00
}
2006-03-31 05:24:22 +00:00
$script_dt_add = get_script_dt_add ();
2006-05-21 04:28:51 +00:00
print "
< script type = \ " text/javascript \" src= \" prototype.js \" ></script>
< script type = \ " text/javascript \" src= \" functions.js? $script_dt_add\ " ></ script >
2006-02-26 14:07:22 +00:00
< meta http - equiv = \ " Content-Type \" content= \" text/html; charset=utf-8 \" >
2006-03-20 10:28:14 +00:00
</ head >< body $rtl_tag > " ;
2006-02-26 14:07:22 +00:00
2005-08-21 13:46:43 +00:00
if ( $result ) {
2005-08-21 10:13:10 +00:00
2006-07-07 03:56:47 +00:00
$link_target = " " ;
if ( get_pref ( $link , 'OPEN_LINKS_IN_NEW_WINDOW' )) {
$link_target = " target= \" _new \" " ;
}
2005-09-07 12:17:16 +00:00
$line = db_fetch_assoc ( $result );
2005-08-21 10:13:10 +00:00
2005-08-26 03:11:37 +00:00
if ( $line [ " icon_url " ]) {
$feed_icon = " <img class= \" feedIcon \" src= \" " . $line [ " icon_url " ] . " \" > " ;
} else {
$feed_icon = " " ;
}
2005-08-21 13:46:43 +00:00
2005-12-10 07:28:55 +00:00
/* if ( $line [ " comments " ] && $line [ " link " ] != $line [ " comments " ]) {
2005-09-07 08:46:30 +00:00
$entry_comments = " (<a href= \" " . $line [ " comments " ] . " \" >Comments</a>) " ;
} else {
$entry_comments = " " ;
2005-12-10 07:28:55 +00:00
} */
$num_comments = $line [ " num_comments " ];
$entry_comments = " " ;
if ( $num_comments > 0 ) {
if ( $line [ " comments " ]) {
$comments_url = $line [ " comments " ];
} else {
$comments_url = $line [ " link " ];
}
2006-07-07 03:56:47 +00:00
$entry_comments = " <a $link_target href= \" $comments_url\ " > $num_comments comments </ a > " ;
2005-12-10 07:28:55 +00:00
} else {
if ( $line [ " comments " ] && $line [ " link " ] != $line [ " comments " ]) {
2006-07-07 03:56:47 +00:00
$entry_comments = " <a $link_target href= \" " . $line [ " comments " ] . " \" >comments</a> " ;
2005-12-10 07:28:55 +00:00
}
2005-09-07 08:46:30 +00:00
}
2005-09-07 07:19:14 +00:00
print " <div class= \" postReply \" > " ;
2005-11-25 08:20:32 +00:00
print " <div class= \" postHeader \" ><table width= \" 100% \" > " ;
2006-02-26 07:09:48 +00:00
$entry_author = $line [ " author " ];
if ( $entry_author ) {
$entry_author = " - by $entry_author " ;
}
2006-07-07 03:56:47 +00:00
print " <tr><td><a $link_target href= \" " . $line [ " link " ] . " \" > " . $line [ " title " ] .
2006-02-26 07:09:48 +00:00
" </a> $entry_author </td> " ;
2005-11-27 19:57:59 +00:00
$parsed_updated = date ( get_pref ( $link , 'LONG_DATE_FORMAT' ),
strtotime ( $line [ " updated " ]));
2006-03-23 07:24:06 +00:00
print " <td class= \" postDate $rtl_class\ " > $parsed_updated </ td > " ;
2005-11-27 19:57:59 +00:00
print " </tr> " ;
2005-11-25 08:20:32 +00:00
$tmp_result = db_query ( $link , " SELECT DISTINCT tag_name FROM
ttrss_tags WHERE post_int_id = " . $line["int_id"] . "
ORDER BY tag_name " );
$tags_str = " " ;
2005-11-29 10:33:00 +00:00
$f_tags_str = " " ;
$num_tags = 0 ;
2005-11-25 08:20:32 +00:00
while ( $tmp_line = db_fetch_assoc ( $tmp_result )) {
2005-11-29 10:33:00 +00:00
$num_tags ++ ;
$tag = $tmp_line [ " tag_name " ];
$tag_str = " <a href= \" javascript:parent.viewfeed(' $tag ') \" > $tag </a>, " ;
if ( $num_tags == 5 ) {
$tags_str .= " <a href= \" javascript:showBlockElement('allEntryTags') \" >...</a> " ;
} else if ( $num_tags < 5 ) {
$tags_str .= $tag_str ;
}
$f_tags_str .= $tag_str ;
}
2005-11-25 08:20:32 +00:00
2005-11-29 10:33:00 +00:00
$tags_str = preg_replace ( " /, $ / " , " " , $tags_str );
$f_tags_str = preg_replace ( " /, $ / " , " " , $f_tags_str );
2005-09-07 07:19:14 +00:00
2005-12-12 12:58:21 +00:00
// $truncated_link = truncate_string($line["link"], 60);
2005-11-25 08:20:32 +00:00
2005-12-12 12:58:21 +00:00
if ( $tags_str || $entry_comments ) {
print " <tr><td width='50%'>
$entry_comments </ td >
< td align = \ " right \" > $tags_str </td></tr> " ;
}
2005-11-25 08:20:32 +00:00
2005-09-07 07:19:14 +00:00
print " </table></div> " ;
print " <div class= \" postIcon \" > " . $feed_icon . " </div> " ;
2005-11-29 10:33:00 +00:00
print " <div class= \" postContent \" > " ;
if ( db_num_rows ( $tmp_result ) > 5 ) {
print " <div id= \" allEntryTags \" >Tags: $f_tags_str </div> " ;
}
2006-03-06 04:45:54 +00:00
if ( get_pref ( $link , 'OPEN_LINKS_IN_NEW_WINDOW' )) {
$line [ " content " ] = preg_replace ( " /href=/i " , " target= \" _new \" href= " , $line [ " content " ]);
}
2005-11-29 10:33:00 +00:00
print $line [ " content " ] . " </div> " ;
2005-09-07 07:19:14 +00:00
print " </div> " ;
2005-09-08 12:10:07 +00:00
print " <script type= \" text/javascript \" >
2006-05-21 01:48:17 +00:00
try {
parent . update_all_counters ( '$feed_id' );
} catch ( e ) {
exception_error ( 'view/footer' , e );
}
2005-09-08 12:10:07 +00:00
</ script > " ;
2005-08-21 13:46:43 +00:00
}
2005-09-05 09:09:10 +00:00
2006-02-26 14:07:22 +00:00
print " </body></html> " ;
2005-08-21 10:13:10 +00:00
}
if ( $op == " viewfeed " ) {
2006-03-27 03:14:35 +00:00
$feed = db_escape_string ( $_GET [ " feed " ]);
$subop = db_escape_string ( $_GET [ " subop " ]);
2006-05-21 04:28:51 +00:00
$view_mode = db_escape_string ( $_GET [ " view_mode " ]);
2006-03-27 03:14:35 +00:00
$limit = db_escape_string ( $_GET [ " limit " ]);
$cat_view = db_escape_string ( $_GET [ " cat " ]);
2006-05-17 13:20:00 +00:00
$next_unread_feed = db_escape_string ( $_GET [ " nuf " ]);
2005-08-21 15:01:18 +00:00
2005-08-22 09:23:30 +00:00
if ( $subop == " undefined " ) $subop = " " ;
2005-08-21 10:13:10 +00:00
2006-02-26 14:07:22 +00:00
print " <html><head>
< title > Tiny Tiny RSS : Feed $feed </ title >
< link rel = \ " stylesheet \" href= \" tt-rss.css \" type= \" text/css \" > " ;
2005-11-26 06:48:37 +00:00
2006-02-26 14:07:22 +00:00
$user_theme = $_SESSION [ " theme " ];
if ( $user_theme ) {
print " <link rel= \" stylesheet \" type= \" text/css \"
href = \ " themes/ $user_theme /theme.css \" > " ;
}
2005-11-16 09:20:11 +00:00
2006-02-26 14:07:22 +00:00
if ( get_pref ( $link , 'USE_COMPACT_STYLESHEET' )) {
print " <link rel= \" stylesheet \"
type = \ " text/css \" href= \" tt-rss_compact.css \" /> " ;
2005-11-26 06:48:37 +00:00
2006-02-26 14:07:22 +00:00
} else {
print " <link title= \" Compact Stylesheet \" rel= \" alternate stylesheet \"
type = \ " text/css \" href= \" tt-rss_compact.css \" /> " ;
2005-09-05 12:02:00 +00:00
}
2006-05-17 13:20:00 +00:00
if ( $subop == " ForceUpdate " && sprintf ( " %d " , $feed ) > 0 ) {
update_generic_feed ( $link , $feed , $cat_view );
}
if ( $subop == " MarkAllRead " ) {
catchup_feed ( $link , $feed , $cat_view );
if ( get_pref ( $link , 'ON_CATCHUP_SHOW_NEXT_FEED' )) {
2006-05-17 13:57:46 +00:00
if ( $next_unread_feed ) {
$feed = $next_unread_feed ;
}
2006-05-17 13:20:00 +00:00
}
}
2006-06-15 03:01:28 +00:00
if ( $feed_id > 0 ) {
$result = db_query ( $link ,
" SELECT id FROM ttrss_feeds WHERE id = ' $feed ' LIMIT 1 " );
2006-06-15 02:55:54 +00:00
2006-06-15 03:01:28 +00:00
if ( db_num_rows ( $result ) == 0 ) {
print " <div align='center'>
Feed not found .</ div > " ;
return ;
}
2006-06-15 02:55:54 +00:00
}
2006-03-27 06:03:47 +00:00
if ( preg_match ( " /^-?[0-9][0-9]* $ / " , $feed ) != false ) {
$result = db_query ( $link , " SELECT rtl_content FROM ttrss_feeds
WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"] );
2006-03-20 10:28:14 +00:00
2006-03-27 06:03:47 +00:00
if ( db_num_rows ( $result ) == 1 ) {
$rtl_content = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " rtl_content " ));
} else {
$rtl_content = false ;
}
if ( $rtl_content ) {
$rtl_tag = " dir= \" RTL \" " ;
} else {
$rtl_tag = " " ;
}
2006-03-20 10:28:14 +00:00
} else {
$rtl_tag = " " ;
2006-03-27 06:03:47 +00:00
$rtl_content = false ;
2006-03-20 10:28:14 +00:00
}
2006-03-31 05:24:22 +00:00
$script_dt_add = get_script_dt_add ();
2006-02-26 14:07:22 +00:00
print " <meta http-equiv= \" Content-Type \" content= \" text/html; charset=utf-8 \" >
2006-05-21 04:28:51 +00:00
< script type = \ " text/javascript \" src= \" prototype.js \" ></script>
2006-03-30 06:43:35 +00:00
< script type = \ " text/javascript \" src= \" functions.js? $script_dt_add\ " ></ script >
< script type = \ " text/javascript \" src= \" viewfeed.js? $script_dt_add\ " ></ script >
2006-02-26 14:07:22 +00:00
<!-- [ if gte IE 5.5000 ] >
< script type = \ " text/javascript \" src= \" pngfix.js \" ></script>
< link rel = \ " stylesheet \" type= \" text/css \" href= \" tt-rss-ie.css \" >
<! [ endif ] -->
2006-03-21 08:04:29 +00:00
</ head >< body $rtl_tag >
2006-02-26 14:07:22 +00:00
< script type = \ " text/javascript \" >
if ( document . addEventListener ) {
document . addEventListener ( \ " DOMContentLoaded \" , init, null);
}
window . onload = init ;
</ script > " ;
2006-06-19 08:59:24 +00:00
/// START /////////////////////////////////////////////////////////////////////////////////
2006-05-21 04:28:51 +00:00
$search = db_escape_string ( $_GET [ " query " ]);
$search_mode = db_escape_string ( $_GET [ " search_mode " ]);
$match_on = db_escape_string ( $_GET [ " match_on " ]);
2005-10-16 16:16:34 +00:00
2006-05-21 04:28:51 +00:00
if ( ! $match_on ) {
$match_on = " both " ;
}
2006-08-01 13:18:05 +00:00
2006-06-19 08:59:24 +00:00
$qfh_ret = queryFeedHeadlines ( $link , $feed , $limit , $view_mode , $cat_view , $search , $search_mode , $match_on );
2006-02-25 19:41:27 +00:00
2006-06-19 08:59:24 +00:00
$result = $qfh_ret [ 0 ];
$feed_title = $qfh_ret [ 1 ];
2006-06-22 05:35:29 +00:00
$feed_site_url = $qfh_ret [ 2 ];
$last_error = $qfh_ret [ 3 ];
2005-09-08 07:43:44 +00:00
2006-06-19 08:59:24 +00:00
/// STOP //////////////////////////////////////////////////////////////////////////////////
2005-09-08 07:43:44 +00:00
2005-12-13 05:52:32 +00:00
print " <div id= \" headlinesContainer \" > " ;
2005-09-08 07:43:44 +00:00
if ( ! $result ) {
2005-12-13 05:52:32 +00:00
print " <div align='center'>
Could not display feed ( query failed ) . Please check label match syntax or local configuration .</ div > " ;
return ;
2005-11-28 13:19:54 +00:00
}
2006-02-24 09:33:09 +00:00
2006-02-25 06:15:05 +00:00
function print_headline_subtoolbar ( $link , $feed_site_url , $feed_title ,
2006-07-31 11:35:50 +00:00
$bottom = false , $rtl_content = false , $feed_id = 0 ,
2006-07-31 11:55:15 +00:00
$is_cat = false , $search = false , $match_on = false ,
$search_mode = false ) {
2005-11-28 09:57:47 +00:00
2006-02-25 06:15:05 +00:00
if ( ! $bottom ) {
$class = " headlinesSubToolbar " ;
$tid = " headlineActionsTop " ;
} else {
$class = " invisible " ;
$tid = " headlineActionsBottom " ;
}
print " <table class= \" $class\ " id = \ " $tid\ "
2005-12-13 05:52:32 +00:00
width = \ " 100% \" cellspacing= \" 0 \" cellpadding= \" 0 \" ><tr> " ;
2006-03-22 07:49:21 +00:00
if ( $rtl_content ) {
$rtl_cpart = " RTL " ;
} else {
$rtl_cpart = " " ;
}
2005-12-13 05:52:32 +00:00
if ( ! get_pref ( $link , 'COMBINED_DISPLAY_MODE' )) {
2005-11-28 13:19:54 +00:00
2006-03-22 07:49:21 +00:00
print " <td class= \" headlineActions $rtl_cpart\ " >
2005-11-28 13:19:54 +00:00
Select :
2006-08-02 08:47:34 +00:00
< a href = \ " javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, '', true) \" >All</a>,
< a href = \ " javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, 'Unread', true) \" >Unread</a>,
< a href = \ " javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false) \" >None</a>
2005-12-13 05:52:32 +00:00
& nbsp ; & nbsp ;
2006-08-02 08:47:34 +00:00
Toggle : < a href = \ " javascript:selectionToggleUnread() \" >Unread</a>,
< a href = \ " javascript:selectionToggleMarked() \" >Starred</a> " ;
2006-08-01 07:54:46 +00:00
2005-11-28 13:19:54 +00:00
print " </td> " ;
2005-12-13 05:52:32 +00:00
2006-08-01 07:54:46 +00:00
if ( $search && $feed_id > 0 && get_pref ( $link , 'ENABLE_LABELS' ) && GLOBAL_ENABLE_LABELS ) {
print " <td class= \" headlineActions $rtl_cpart\ " >
< a href = \ " javascript:labelFromSearch(' $search ', ' $search_mode ',
'$match_on' , '$feed_id' , '$is_cat' ); \ " >
Convert this search to label </ a ></ td > " ;
}
2005-12-13 05:52:32 +00:00
} else {
2006-03-22 07:49:21 +00:00
print " <td class= \" headlineActions $rtl_cpart\ " >
2005-12-13 05:52:32 +00:00
Select :
2006-08-02 08:47:34 +00:00
< a href = \ " javascript:cdmSelectArticles('all') \" >All</a>,
< a href = \ " javascript:cdmSelectArticles('unread') \" >Unread</a>,
< a href = \ " javascript:cdmSelectArticles('none') \" >None</a>
2005-12-13 05:52:32 +00:00
& nbsp ; & nbsp ;
2006-08-02 08:47:34 +00:00
Toggle : < a href = \ " javascript:selectionToggleUnread(true) \" >Unread</a>,
< a href = \ " javascript:selectionToggleMarked(true) \" >Starred</a> " ;
2005-12-13 05:52:32 +00:00
2005-11-28 13:19:54 +00:00
print " </td> " ;
2005-12-13 05:52:32 +00:00
}
2006-03-22 07:49:21 +00:00
print " <td class= \" headlineTitle $rtl_cpart\ " > " ;
2005-11-28 13:19:54 +00:00
2005-12-13 05:52:32 +00:00
if ( $feed_site_url ) {
2006-02-27 08:41:32 +00:00
if ( ! $bottom ) {
$target = " target= \" _blank \" " ;
}
print " <a $target href= \" $feed_site_url\ " > $feed_title </ a > " ;
2005-12-13 05:52:32 +00:00
} else {
print $feed_title ;
}
2006-07-31 11:35:50 +00:00
2006-07-31 11:55:15 +00:00
if ( $search ) {
$search_q = " &q= $search &m= $match_on &smode= $search_mode " ;
}
2006-08-01 05:04:31 +00:00
if ( ! $bottom ) {
print "
< a target = \ " _new \"
2006-08-20 14:42:33 +00:00
href = \ " backend.php?op=rss&id= $feed_id &is_cat= $is_cat $search_q\ " >
2006-08-01 05:04:31 +00:00
< img class = \ " noborder \"
alt = \ " Generated feed \" src= \" images/feed-icon-12x12.png \" >
</ a > " ;
}
2005-12-13 05:52:32 +00:00
print " </td> " ;
print " </tr></table> " ;
2006-02-24 09:33:09 +00:00
}
if ( db_num_rows ( $result ) > 0 ) {
2006-03-22 07:49:21 +00:00
print_headline_subtoolbar ( $link , $feed_site_url , $feed_title , false ,
2006-07-31 11:55:15 +00:00
$rtl_content , $feed , $cat_view , $search , $match_on , $search_mode );
2006-02-24 09:33:09 +00:00
2005-12-13 05:52:32 +00:00
if ( ! get_pref ( $link , 'COMBINED_DISPLAY_MODE' )) {
2005-11-28 13:19:54 +00:00
print " <table class= \" headlinesList \" id= \" headlinesList \"
2006-03-21 08:04:29 +00:00
cellspacing = \ " 0 \" width= \" 100% \" > " ;
2005-09-05 04:04:31 +00:00
}
2005-12-13 05:52:32 +00:00
2005-11-28 12:54:43 +00:00
$lnum = 0 ;
error_reporting ( DEFAULT_ERROR_LEVEL );
$num_unread = 0 ;
while ( $line = db_fetch_assoc ( $result )) {
2005-11-28 13:19:54 +00:00
2005-11-28 12:54:43 +00:00
$class = ( $lnum % 2 ) ? " even " : " odd " ;
$id = $line [ " id " ];
$feed_id = $line [ " feed_id " ];
if ( $line [ " last_read " ] == " " &&
( $line [ " unread " ] != " t " && $line [ " unread " ] != " 1 " )) {
$update_pic = " <img id='FUPDPIC- $id ' src= \" images/updated.png \"
alt = \ " Updated \" > " ;
} else {
$update_pic = " <img id='FUPDPIC- $id ' src= \" images/blank_icon.gif \"
alt = \ " Updated \" > " ;
}
if ( $line [ " unread " ] == " t " || $line [ " unread " ] == " 1 " ) {
$class .= " Unread " ;
++ $num_unread ;
2005-12-13 05:52:32 +00:00
$is_unread = true ;
2005-11-28 13:19:54 +00:00
} else {
2005-12-13 05:52:32 +00:00
$is_unread = false ;
2005-11-28 12:54:43 +00:00
}
if ( $line [ " marked " ] == " t " || $line [ " marked " ] == " 1 " ) {
$marked_pic = " <img id= \" FMARKPIC- $id\ " src = \ " images/mark_set.png \"
2005-12-01 12:43:13 +00:00
alt = \ " Reset mark \" onclick='javascript:toggleMark( $id )'> " ;
2005-11-28 12:54:43 +00:00
} else {
$marked_pic = " <img id= \" FMARKPIC- $id\ " src = \ " images/mark_unset.png \"
2005-12-01 12:43:13 +00:00
alt = \ " Set mark \" onclick='javascript:toggleMark( $id )'> " ;
2005-11-28 12:54:43 +00:00
}
2005-11-28 14:42:20 +00:00
$content_link = " <a href= \" javascript:view( $id , $feed_id ); \" > " .
2005-11-28 12:54:43 +00:00
$line [ " title " ] . " </a> " ;
2005-11-28 13:19:54 +00:00
2005-11-28 12:54:43 +00:00
if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
$updated_fmt = smart_date_time ( strtotime ( $line [ " updated " ]));
} else {
$short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
$updated_fmt = date ( $short_date , strtotime ( $line [ " updated " ]));
}
2005-11-28 13:19:54 +00:00
if ( get_pref ( $link , 'SHOW_CONTENT_PREVIEW' )) {
2005-11-30 11:09:22 +00:00
$content_preview = truncate_string ( strip_tags ( $line [ " content_preview " ]),
2005-12-30 20:05:26 +00:00
100 );
2005-11-28 13:19:54 +00:00
}
2005-12-13 05:52:32 +00:00
if ( ! get_pref ( $link , 'COMBINED_DISPLAY_MODE' )) {
2005-11-28 13:19:54 +00:00
print " <tr class=' $class ' id='RROW- $id '> " ;
print " <td class='hlUpdatePic'> $update_pic </td> " ;
print " <td class='hlSelectRow'>
< input type = \ " checkbox \" onclick= \" toggleSelectRow(this) \"
class = \ " feedCheckBox \" id= \" RCHK- $id\ " >
</ td > " ;
print " <td class='hlMarkedPic'> $marked_pic </td> " ;
if ( $line [ " feed_title " ]) {
print " <td class='hlContent'> $content_link </td> " ;
print " <td class='hlFeed'>
2005-12-30 20:10:58 +00:00
< a href = 'javascript:viewfeed($feed_id)' > " .
$line [ " feed_title " ] . " </a> </td> " ;
2005-11-28 13:19:54 +00:00
} else {
2005-12-10 16:13:59 +00:00
print " <td class='hlContent' valign='middle'> " ;
2005-11-28 13:19:54 +00:00
2005-11-28 14:42:20 +00:00
print " <a href= \" javascript:view( $id , $feed_id ); \" > " .
2005-11-28 13:19:54 +00:00
$line [ " title " ];
2006-03-20 10:28:14 +00:00
if ( get_pref ( $link , 'SHOW_CONTENT_PREVIEW' ) && ! $rtl_tag ) {
2005-11-28 13:19:54 +00:00
if ( $content_preview ) {
print " <span class= \" contentPreview \" > - $content_preview </span> " ;
}
}
print " </a> " ;
print " </td> " ;
}
print " <td class= \" hlUpdated \" ><nobr> $updated_fmt </nobr></td> " ;
print " </tr> " ;
} else {
2005-12-13 05:52:32 +00:00
if ( $is_unread ) {
$add_class = " Unread " ;
} else {
$add_class = " " ;
}
print " <div class= \" cdmArticle $add_class\ " id = \ " RROW- $id\ " > " ;
print " <div class= \" cdmHeader \" > " ;
2005-11-28 13:19:54 +00:00
2006-05-16 13:41:57 +00:00
print " <div style= \" float : right \" > $updated_fmt ,
< a class = \ " cdmToggleLink \"
href = \ " javascript:toggleUnread( $id ) \" >Toggle unread</a>
</ div > " ;
2005-12-13 05:52:32 +00:00
2006-05-16 13:41:57 +00:00
print " <a class= \" title \"
onclick = \ " javascript:toggleUnread( $id , 0) \"
target = \ " new \" href= \" " . $line [ " link " ] . " \" > " . $line [ " title " ] . " </a> " ;
2005-11-28 13:19:54 +00:00
2005-12-13 05:52:32 +00:00
if ( $line [ " feed_title " ]) {
print " (<a href='javascript:viewfeed( $feed_id )'> " . $line [ " feed_title " ] . " </a>) " ;
2005-11-28 13:19:54 +00:00
}
2005-12-13 05:52:32 +00:00
print " </div> " ;
2006-06-18 04:14:44 +00:00
print " <div class= \" cdmContent \" > " . $line [ " content_preview " ] . " </div><br clear= \" all \" > " ;
2006-05-16 13:41:57 +00:00
2005-12-13 05:52:32 +00:00
print " <div style= \" float : right \" > $marked_pic </div>
2006-05-16 13:41:57 +00:00
< div lass = \ " cdmFooter \" >
2005-12-13 05:52:32 +00:00
< input type = \ " checkbox \" onclick= \" toggleSelectRowById(this,
'RROW-$id' ) \ " class= \" feedCheckBox \" id= \" RCHK- $id\ " ></ div > " ;
2006-05-16 13:41:57 +00:00
# print "<div align=\"center\"><a class=\"cdmToggleLink\"
# href=\"javascript:toggleUnread($id)\">
# Toggle unread</a></div>";
2005-12-13 05:52:32 +00:00
print " </div> " ;
}
2005-11-28 12:54:43 +00:00
++ $lnum ;
2005-09-08 06:31:16 +00:00
}
2005-11-28 13:19:54 +00:00
2005-12-13 05:52:32 +00:00
if ( ! get_pref ( $link , 'COMBINED_DISPLAY_MODE' )) {
2005-11-28 13:19:54 +00:00
print " </table> " ;
}
2005-08-21 13:46:43 +00:00
2006-02-25 06:15:05 +00:00
print_headline_subtoolbar ( $link ,
2006-03-22 07:57:05 +00:00
" javascript:catchupPage() " , " Mark page as read " , true , $rtl_content );
2006-02-24 09:33:09 +00:00
2005-11-28 12:54:43 +00:00
} else {
print " <div width='100%' align='center'>No articles found.</div> " ;
2005-08-21 15:01:18 +00:00
}
2005-08-21 13:46:43 +00:00
2005-12-13 05:52:32 +00:00
print " </div> " ;
2005-08-21 13:46:43 +00:00
2006-05-21 01:48:17 +00:00
print "
< script type = \ " text/javascript \" >
try {
document . onkeydown = hotkey_handler ;
2006-06-18 15:46:32 +00:00
try {
parent . update_all_counters ( \ " $feed\ " );
} catch ( e ) {
// this is workaround against mysterious permission
// denied feature/bug of firefox (ticket #73)
// if call from this context failed - ignore silently
exception_error ( \ " viewfeed/footer1/counters \" , e, true);
}
2006-05-21 01:48:17 +00:00
} catch ( e ) {
exception_error ( \ " viewfeed/footer1 \" , e);
}
2006-02-24 10:15:30 +00:00
/* for IE */
function statechange () {
2006-05-21 01:48:17 +00:00
if ( document . readyState == \ " interactive \" ) init();
2006-02-24 10:15:30 +00:00
}
2006-05-21 01:48:17 +00:00
2006-02-24 10:15:30 +00:00
if ( document . readyState ) {
2006-05-21 01:48:17 +00:00
if ( document . readyState == \ " interactive \" || document.readyState == \" complete \" ) {
2006-02-24 10:15:30 +00:00
init ();
} else {
document . onreadystatechange = statechange ;
}
}
2006-05-21 01:48:17 +00:00
</ script > " ;
2006-02-24 10:15:30 +00:00
2006-02-26 14:07:22 +00:00
print " </body></html> " ;
2005-08-21 10:13:10 +00:00
}
2005-08-22 05:38:07 +00:00
if ( $op == " pref-feeds " ) {
2005-12-16 07:15:18 +00:00
$subop = $_REQUEST [ " subop " ];
$quiet = $_REQUEST [ " quiet " ];
2005-08-22 05:38:07 +00:00
2005-12-29 18:25:07 +00:00
if ( $subop == " massSubscribe " ) {
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
2005-12-30 05:29:24 +00:00
$subscribed = array ();
2005-12-29 18:25:07 +00:00
foreach ( $ids as $id ) {
$result = db_query ( $link , " SELECT feed_url,title FROM ttrss_feeds
WHERE id = '$id' " );
$feed_url = db_fetch_result ( $result , 0 , " feed_url " );
$title = db_fetch_result ( $result , 0 , " title " );
$result = db_query ( $link , " SELECT id FROM ttrss_feeds WHERE
feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) == 0 ) {
$result = db_query ( $link ,
" INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id)
VALUES ( '".$_SESSION["uid"]."' , '$feed_url' , '$title' , NULL ) " );
2005-12-30 05:29:24 +00:00
array_push ( $subscribed , $title );
}
}
if ( count ( $subscribed ) > 0 ) {
print " <div class= \" notice \" > " ;
print " <b>Subscribed to feeds:</b> " ;
print " <ul class= \" nomarks \" > " ;
foreach ( $subscribed as $title ) {
print " <li> $title </li> " ;
2005-12-29 18:25:07 +00:00
}
2005-12-30 05:29:24 +00:00
print " </ul> " ;
print " </div> " ;
2005-12-29 18:25:07 +00:00
}
}
2005-12-29 16:36:41 +00:00
if ( $subop == " browse " ) {
2006-01-12 13:50:53 +00:00
if ( ! ENABLE_FEED_BROWSER ) {
print " Feed browser is administratively disabled. " ;
return ;
}
2006-05-18 04:58:31 +00:00
2006-05-18 06:23:00 +00:00
print " <div id= \" infoBoxTitle \" >Other feeds: Top 25</div> " ;
2005-12-29 16:36:41 +00:00
print " <div class= \" infoBoxContents \" > " ;
2006-05-18 06:23:00 +00:00
print " <p>Showing top 25 registered feeds, sorted by popularity:</p> " ;
2005-12-29 16:36:41 +00:00
2006-06-14 03:21:19 +00:00
# $result = db_query($link, "SELECT feed_url,count(id) AS subscribers
# FROM ttrss_feeds
# WHERE auth_login = '' AND auth_pass = '' AND private = false
# GROUP BY feed_url ORDER BY subscribers DESC LIMIT 25");
$owner_uid = $_SESSION [ " uid " ];
$result = db_query ( $link , " SELECT feed_url,COUNT(id) AS subscribers
FROM ttrss_feeds WHERE ( SELECT COUNT ( id ) = 0 FROM ttrss_feeds AS tf
WHERE tf . feed_url = ttrss_feeds . feed_url
AND owner_uid = '$owner_uid' ) GROUP BY feed_url
ORDER BY subscribers DESC LIMIT 25 " );
2005-12-29 16:36:41 +00:00
print " <ul class='browseFeedList' id='browseFeedList'> " ;
2005-12-29 18:29:45 +00:00
$feedctr = 0 ;
2005-12-29 16:36:41 +00:00
while ( $line = db_fetch_assoc ( $result )) {
$feed_url = $line [ " feed_url " ];
$subscribers = $line [ " subscribers " ];
2005-12-29 18:29:45 +00:00
2005-12-29 16:36:41 +00:00
$det_result = db_query ( $link , " SELECT site_url,title,id
FROM ttrss_feeds WHERE feed_url = '$feed_url' LIMIT 1 " );
$details = db_fetch_assoc ( $det_result );
$icon_file = ICONS_DIR . " / " . $details [ " id " ] . " .ico " ;
if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" " . ICONS_URL .
" / " . $details [ " id " ] . " .ico \" > " ;
} else {
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" images/blank_icon.gif \" > " ;
}
2005-12-30 04:22:07 +00:00
$check_box = " <input onclick='toggleSelectListRow(this)' class='feedBrowseCB'
type = \ " checkbox \" id= \" FBCHK- " . $details [ " id " ] . " \" > " ;
2005-12-29 16:36:41 +00:00
2005-12-30 04:22:07 +00:00
$class = ( $feedctr % 2 ) ? " even " : " odd " ;
print " <li class=' $class ' id= \" FBROW- " . $details [ " id " ] . " \" > $check_box " .
" $feed_icon " . db_unescape_string ( $details [ " title " ]) .
2005-12-29 16:36:41 +00:00
" <span class='subscribers'>( $subscribers )</span></li> " ;
2005-12-29 18:29:45 +00:00
++ $feedctr ;
}
if ( $feedctr == 0 ) {
print " <li>No feeds found to subscribe.</li> " ;
}
2005-12-29 16:36:41 +00:00
print " </ul> " ;
print " <div align='center'>
< input type = \ " submit \" class= \" button \"
2005-12-29 17:38:24 +00:00
onclick = \ " feedBrowserSubscribe() \" value= \" Subscribe \" >
< input type = 'submit' class = 'button'
onclick = \ " closeInfoBox() \" value= \" Cancel \" ></div> " ;
2005-12-29 16:36:41 +00:00
print " </div> " ;
return ;
}
2005-12-10 19:35:09 +00:00
if ( $subop == " editfeed " ) {
2006-05-21 04:28:51 +00:00
$feed_id = db_escape_string ( $_REQUEST [ " id " ]);
2005-12-10 19:35:09 +00:00
$result = db_query ( $link ,
" SELECT * FROM ttrss_feeds WHERE id = ' $feed_id ' AND
owner_uid = " . $_SESSION["uid"] );
$title = htmlspecialchars ( db_unescape_string ( db_fetch_result ( $result ,
0 , " title " )));
$icon_file = ICONS_DIR . " / $feed_id .ico " ;
if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
$feed_icon = " <img width= \" 16 \" height= \" 16 \"
src = \ " " . ICONS_URL . " / $feed_id .ico \" > " ;
} else {
$feed_icon = " " ;
}
2006-05-18 04:58:31 +00:00
print " <div id= \" infoBoxTitle \" >Feed editor</div> " ;
print " <div class= \" infoBoxContents \" > " ;
2006-05-20 11:16:16 +00:00
print " <form id= \" edit_feed_form \" > " ;
2005-12-10 19:35:09 +00:00
2006-05-20 11:16:16 +00:00
print " <input type= \" hidden \" name= \" id \" value= \" $feed_id\ " > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-feeds \" > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" editSave \" > " ;
2005-12-10 19:35:09 +00:00
2006-05-20 11:16:16 +00:00
print " <table width='100%'> " ;
2005-12-10 19:35:09 +00:00
2006-05-20 11:16:16 +00:00
print " <tr><td>Title:</td> " ;
2006-05-21 12:17:00 +00:00
print " <td><input class= \" iedit \" onkeypress= \" return filterCR(event) \"
name = \ " title \" value= \" $title\ " ></ td ></ tr > " ;
2005-12-10 19:35:09 +00:00
$feed_url = db_fetch_result ( $result , 0 , " feed_url " );
$feed_url = htmlspecialchars ( db_unescape_string ( db_fetch_result ( $result ,
0 , " feed_url " )));
2006-05-20 11:16:16 +00:00
print " <tr><td>Feed URL:</td> " ;
2006-05-21 12:17:00 +00:00
print " <td><input class= \" iedit \" onkeypress= \" return filterCR(event) \"
name = \ " feed_url \" value= \" $feed_url\ " ></ td ></ tr > " ;
2006-03-20 14:30:51 +00:00
2005-12-10 19:35:09 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
$cat_id = db_fetch_result ( $result , 0 , " cat_id " );
2006-05-20 11:16:16 +00:00
print " <tr><td>Category:</td> " ;
2005-12-10 19:35:09 +00:00
print " <td> " ;
2006-05-20 12:43:50 +00:00
print_feed_cat_select ( $link , " cat_id " , $cat_id , " class= \" iedit \" " );
2005-12-10 19:35:09 +00:00
2006-05-20 09:41:47 +00:00
print " </td> " ;
2005-12-10 19:35:09 +00:00
print " </td></tr> " ;
}
$update_interval = db_fetch_result ( $result , 0 , " update_interval " );
2006-05-20 11:16:16 +00:00
print " <tr><td>Update Interval:</td> " ;
2006-03-20 14:30:51 +00:00
print " <td> " ;
2006-05-20 12:43:50 +00:00
print_select_hash ( " update_interval " , $update_interval , $update_intervals ,
" class= \" iedit \" " );
2006-03-20 14:30:51 +00:00
print " </td> " ;
2005-12-10 19:35:09 +00:00
2006-05-20 11:16:16 +00:00
print " <tr><td>Link to:</td><td> " ;
2005-12-28 19:17:26 +00:00
2005-12-29 17:46:11 +00:00
$tmp_result = db_query ( $link , " SELECT COUNT(id) AS count
FROM ttrss_feeds WHERE parent_feed = '$feed_id' " );
$linked_count = db_fetch_result ( $tmp_result , 0 , " count " );
2005-12-28 19:17:26 +00:00
$parent_feed = db_fetch_result ( $result , 0 , " parent_feed " );
2005-12-29 17:46:11 +00:00
if ( $linked_count > 0 ) {
$disabled = " disabled " ;
}
2006-05-20 12:43:50 +00:00
print " <select class= \" iedit \" $disabled name= \" parent_feed \" > " ;
2005-12-29 17:46:11 +00:00
2006-05-20 11:16:16 +00:00
print " <option value= \" 0 \" >Not linked</option> " ;
2005-12-28 19:17:26 +00:00
2005-12-28 19:57:25 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
if ( $cat_id ) {
$cat_qpart = " AND cat_id = ' $cat_id ' " ;
} else {
$cat_qpart = " AND cat_id IS NULL " ;
}
}
2005-12-28 19:17:26 +00:00
$tmp_result = db_query ( $link , " SELECT id,title FROM ttrss_feeds
2005-12-30 20:31:34 +00:00
WHERE id != '$feed_id' AND owner_uid = " . $_SESSION["uid"] . "
$cat_qpart ORDER BY title " );
2005-12-28 19:17:26 +00:00
if ( db_num_rows ( $tmp_result ) > 0 ) {
print " <option disabled>--------</option> " ;
}
while ( $tmp_line = db_fetch_assoc ( $tmp_result )) {
if ( $tmp_line [ " id " ] == $parent_feed ) {
$is_selected = " selected " ;
} else {
$is_selected = " " ;
}
2006-05-20 11:16:16 +00:00
printf ( " <option $is_selected value='%d'>%s</option> " ,
2005-12-28 19:17:26 +00:00
$tmp_line [ " id " ], $tmp_line [ " title " ]);
}
2006-05-18 06:02:18 +00:00
print " </select> " ;
print " </td></tr> " ;
2005-12-28 19:17:26 +00:00
2005-12-10 19:35:09 +00:00
$purge_interval = db_fetch_result ( $result , 0 , " purge_interval " );
2006-05-20 11:16:16 +00:00
print " <tr><td>Article purging:</td> " ;
2006-03-20 14:30:51 +00:00
print " <td> " ;
2006-05-20 12:43:50 +00:00
print_select_hash ( " purge_interval " , $purge_interval , $purge_intervals ,
" class= \" iedit \" " );
2006-03-20 14:30:51 +00:00
print " </td> " ;
2005-12-10 19:35:09 +00:00
2005-12-16 07:15:18 +00:00
$auth_login = db_fetch_result ( $result , 0 , " auth_login " );
2006-05-20 11:16:16 +00:00
print " <tr><td>Login:</td> " ;
2006-05-21 12:17:00 +00:00
print " <td><input class= \" iedit \" onkeypress= \" return filterCR(event) \"
name = \ " auth_login \" value= \" $auth_login\ " ></ td ></ tr > " ;
2005-12-16 07:15:18 +00:00
$auth_pass = db_fetch_result ( $result , 0 , " auth_pass " );
2006-05-20 11:16:16 +00:00
print " <tr><td>Password:</td> " ;
print " <td><input class= \" iedit \" type= \" password \" name= \" auth_pass \"
2006-05-21 12:17:00 +00:00
onkeypress = \ " return filterCR(event) \"
2005-12-16 07:15:18 +00:00
value = \ " $auth_pass\ " ></ td ></ tr > " ;
2005-12-30 04:11:48 +00:00
$private = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " private " ));
if ( $private ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
2006-05-20 11:16:16 +00:00
print " <tr><td valign='top'>Options:</td> " ;
print " <td><input type= \" checkbox \" name= \" private \" id= \" private \"
2006-08-16 16:34:18 +00:00
$checked >< label for = \ " private \" >Hide from \" Other Feeds \" </label> " ;
2006-03-20 10:28:14 +00:00
$rtl_content = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " rtl_content " ));
if ( $rtl_content ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
2006-05-20 11:16:16 +00:00
print " <br><input type= \" checkbox \" id= \" rtl_content \" name= \" rtl_content \"
$checked >< label for = \ " rtl_content \" >Right-to-left content</label> " ;
2006-08-13 12:01:10 +00:00
$hidden = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " hidden " ));
if ( $hidden ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
print " <br><input type= \" checkbox \" id= \" hidden \" name= \" hidden \"
2006-08-16 16:34:18 +00:00
$checked >< label for = \ " hidden \" >Hide from my feed list</label> " ;
2006-08-13 12:01:10 +00:00
2006-03-20 10:28:14 +00:00
print " </td></tr> " ;
2005-12-30 04:11:48 +00:00
2005-12-10 19:35:09 +00:00
print " </table> " ;
2006-05-20 11:16:16 +00:00
print " </form> " ;
2006-08-16 07:55:25 +00:00
print " <div align='right'>
2005-12-10 19:35:09 +00:00
< input type = \ " submit \" class= \" button \"
2006-05-20 12:09:33 +00:00
onclick = \ " return feedEditSave() \" value= \" Save \" >
2005-12-29 17:38:24 +00:00
< input type = 'submit' class = 'button'
2006-05-20 12:09:33 +00:00
onclick = \ " return feedEditCancel() \" value= \" Cancel \" ></div> " ;
2006-08-16 07:55:25 +00:00
print " </div> " ;
2005-12-10 19:35:09 +00:00
return ;
}
2005-08-24 08:02:58 +00:00
if ( $subop == " editSave " ) {
2005-11-29 09:26:09 +00:00
2006-05-20 11:16:16 +00:00
$feed_title = db_escape_string ( trim ( $_POST [ " title " ]));
$feed_link = db_escape_string ( trim ( $_POST [ " feed_url " ]));
$upd_intl = db_escape_string ( $_POST [ " update_interval " ]);
$purge_intl = db_escape_string ( $_POST [ " purge_interval " ]);
$feed_id = db_escape_string ( $_POST [ " id " ]);
$cat_id = db_escape_string ( $_POST [ " cat_id " ]);
$auth_login = db_escape_string ( trim ( $_POST [ " auth_login " ]));
$auth_pass = db_escape_string ( trim ( $_POST [ " auth_pass " ]));
$parent_feed = db_escape_string ( $_POST [ " parent_feed " ]);
$private = checkbox_to_sql_bool ( db_escape_string ( $_POST [ " private " ]));
$rtl_content = checkbox_to_sql_bool ( db_escape_string ( $_POST [ " rtl_content " ]));
2006-08-13 12:01:10 +00:00
$hidden = checkbox_to_sql_bool ( db_escape_string ( $_POST [ " hidden " ]));
2006-05-20 11:16:16 +00:00
2006-06-08 05:30:42 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
if ( $cat_id && $cat_id != 0 ) {
$category_qpart = " cat_id = ' $cat_id ', " ;
} else {
$category_qpart = 'cat_id = NULL,' ;
}
2005-11-23 07:07:04 +00:00
} else {
2006-06-08 05:30:42 +00:00
$category_qpart = " " ;
2005-11-23 07:07:04 +00:00
}
2006-05-20 11:16:16 +00:00
if ( $parent_feed && $parent_feed != 0 ) {
2006-06-08 05:30:42 +00:00
$parent_qpart = " parent_feed = ' $parent_feed ', " ;
2005-12-28 19:17:26 +00:00
} else {
2006-06-08 05:30:42 +00:00
$parent_qpart = 'parent_feed = NULL,' ;
2005-12-28 19:17:26 +00:00
}
2005-09-07 12:17:16 +00:00
$result = db_query ( $link , " UPDATE ttrss_feeds SET
2006-06-08 05:30:42 +00:00
$category_qpart
$parent_qpart
2005-10-13 03:15:09 +00:00
title = '$feed_title' , feed_url = '$feed_link' ,
2005-11-16 09:37:50 +00:00
update_interval = '$upd_intl' ,
2005-12-16 07:15:18 +00:00
purge_interval = '$purge_intl' ,
auth_login = '$auth_login' ,
2005-12-30 04:11:48 +00:00
auth_pass = '$auth_pass' ,
2006-03-21 07:02:06 +00:00
private = $private ,
2006-08-13 12:01:10 +00:00
rtl_content = $rtl_content ,
hidden = $hidden
2006-03-21 07:02:06 +00:00
WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"] );
2005-12-11 04:55:37 +00:00
}
if ( $subop == " saveCat " ) {
2006-05-19 03:10:58 +00:00
$cat_title = db_escape_string ( trim ( $_GET [ " title " ]));
2005-12-11 04:55:37 +00:00
$cat_id = db_escape_string ( $_GET [ " id " ]);
$result = db_query ( $link , " UPDATE ttrss_feed_categories SET
title = '$cat_title' WHERE id = '$cat_id' AND owner_uid = " . $_SESSION["uid"] );
2005-08-24 08:02:58 +00:00
2005-08-22 05:23:49 +00:00
}
2005-08-22 04:56:40 +00:00
if ( $subop == " remove " ) {
2005-08-23 11:34:07 +00:00
if ( ! WEB_DEMO_MODE ) {
2005-08-22 04:56:40 +00:00
2005-11-29 09:11:43 +00:00
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
2005-08-23 11:34:07 +00:00
foreach ( $ids as $id ) {
2005-11-16 17:37:45 +00:00
2006-08-01 07:54:46 +00:00
if ( $id > 0 ) {
db_query ( $link , " DELETE FROM ttrss_feeds
WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"] );
$icons_dir = ICONS_DIR ;
2005-08-26 03:41:45 +00:00
2006-08-01 07:54:46 +00:00
if ( file_exists ( $icons_dir . " / $id .ico " )) {
unlink ( $icons_dir . " / $id .ico " );
}
} else if ( $id < - 10 ) {
$label_id = - $id - 11 ;
db_query ( $link , " DELETE FROM ttrss_labels
WHERE id = '$label_id' AND owner_uid = " . $_SESSION["uid"] );
2005-08-26 03:41:45 +00:00
}
2005-08-23 11:34:07 +00:00
}
2005-08-22 04:56:40 +00:00
}
}
if ( $subop == " add " ) {
2005-08-23 11:34:07 +00:00
if ( ! WEB_DEMO_MODE ) {
2005-08-22 04:56:40 +00:00
2006-05-20 14:53:41 +00:00
$feed_url = db_escape_string ( trim ( $_GET [ " feed_url " ]));
$cat_id = db_escape_string ( $_GET [ " cat_id " ]);
2005-12-20 08:00:11 +00:00
2006-05-20 14:53:41 +00:00
if ( subscribe_to_feed ( $link , $feed_url , $cat_id )) {
2006-05-16 07:33:51 +00:00
print " Added feed. " ;
2005-12-20 08:00:11 +00:00
} else {
2005-11-19 17:57:14 +00:00
print " <div class= \" warning \" >
2006-05-20 14:53:41 +00:00
Feed < b > $feed_url </ b > already exists in the database .
2005-11-19 17:57:14 +00:00
</ div > " ;
2005-08-23 11:34:07 +00:00
}
}
2005-08-22 04:56:40 +00:00
}
2005-09-03 07:22:29 +00:00
2005-11-23 07:07:04 +00:00
if ( $subop == " addCat " ) {
if ( ! WEB_DEMO_MODE ) {
$feed_cat = db_escape_string ( trim ( $_GET [ " cat " ]));
$result = db_query ( $link ,
" SELECT id FROM ttrss_feed_categories
WHERE title = '$feed_cat' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) == 0 ) {
$result = db_query ( $link ,
" INSERT INTO ttrss_feed_categories (owner_uid,title)
VALUES ( '".$_SESSION["uid"]."' , '$feed_cat' ) " );
} else {
print " <div class= \" warning \" >
Category < b > $feed_cat </ b > already exists in the database .
</ div > " ;
}
}
}
if ( $subop == " removeCats " ) {
if ( ! WEB_DEMO_MODE ) {
2005-11-29 09:11:43 +00:00
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
2005-11-23 07:07:04 +00:00
foreach ( $ids as $id ) {
db_query ( $link , " BEGIN " );
$result = db_query ( $link ,
" SELECT count(id) as num_feeds FROM ttrss_feeds
WHERE cat_id = '$id' " );
$num_feeds = db_fetch_result ( $result , 0 , " num_feeds " );
if ( $num_feeds == 0 ) {
db_query ( $link , " DELETE FROM ttrss_feed_categories
WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"] );
} else {
print " <div class= \" warning \" >
Unable to delete non empty feed categories .</ div > " ;
}
db_query ( $link , " COMMIT " );
}
}
}
2005-11-29 09:11:43 +00:00
if ( $subop == " categorize " ) {
if ( ! WEB_DEMO_MODE ) {
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
$cat_id = db_escape_string ( $_GET [ " cat_id " ]);
if ( $cat_id == 0 ) {
$cat_id_qpart = 'NULL' ;
} else {
$cat_id_qpart = " ' $cat_id ' " ;
}
db_query ( $link , " BEGIN " );
foreach ( $ids as $id ) {
db_query ( $link , " UPDATE ttrss_feeds SET cat_id = $cat_id_qpart
WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"] );
}
db_query ( $link , " COMMIT " );
}
}
2005-12-09 19:48:13 +00:00
if ( $quiet ) return ;
2005-11-23 09:55:05 +00:00
// print "<h3>Edit Feeds</h3>";
2005-11-23 07:07:04 +00:00
2006-08-13 12:01:10 +00:00
$result = db_query ( $link , " SELECT id,title,feed_url,last_error
2005-11-23 09:50:37 +00:00
FROM ttrss_feeds WHERE last_error != '' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) > 0 ) {
print " <div class= \" warning \" > " ;
2005-12-20 10:39:20 +00:00
// print"<img class=\"closeButton\"
// onclick=\"javascript:hideParentElement(this);\" src=\"images/close.png\">";
2005-11-29 09:50:18 +00:00
print " <a href= \" javascript:showBlockElement('feedUpdateErrors') \" >
2006-05-18 07:56:52 +00:00
< b > Some feeds have update errors ( click for details ) </ b ></ a > " ;
2005-11-23 09:50:37 +00:00
2005-11-29 09:50:18 +00:00
print " <ul id= \" feedUpdateErrors \" class= \" nomarks \" > " ;
2005-11-23 09:50:37 +00:00
while ( $line = db_fetch_assoc ( $result )) {
print " <li> " . $line [ " title " ] . " ( " . $line [ " feed_url " ] . " ): " .
$line [ " last_error " ];
}
print " </ul> " ;
print " </div> " ;
}
2005-11-29 09:11:43 +00:00
$feed_search = db_escape_string ( $_GET [ " search " ]);
if ( array_key_exists ( " search " , $_GET )) {
$_SESSION [ " prefs_feed_search " ] = $feed_search ;
} else {
$feed_search = $_SESSION [ " prefs_feed_search " ];
}
print " <table width='100%' class= \" prefGenericAddBox \"
cellspacing = '0' cellpadding = '0' >< tr >
< td >
< input id = \ " fadd_link \"
2006-05-18 08:29:17 +00:00
onkeyup = \ " toggleSubmitNotEmpty(this, 'fadd_submit_btn') \"
size = \ " 40 \" >
2005-11-29 09:11:43 +00:00
< input type = \ " submit \" class= \" button \"
2006-05-18 08:29:17 +00:00
disabled = \ " true \" id= \" fadd_submit_btn \"
onclick = \ " addFeed() \" value= \" Subscribe \" > " ;
2006-01-12 13:50:53 +00:00
2006-05-17 04:59:33 +00:00
if ( ENABLE_FEED_BROWSER && ! SINGLE_USER_MODE ) {
2006-05-18 04:58:31 +00:00
print " <input type= \" submit \" class= \" button \"
2006-05-18 06:23:00 +00:00
onclick = \ " javascript:browseFeeds() \" value= \" Top 25 \" > " ;
2006-01-12 13:50:53 +00:00
}
print " </td><td align='right'>
2005-11-29 09:11:43 +00:00
< input id = \ " feed_search \" size= \" 20 \"
2006-05-18 08:29:17 +00:00
onchange = \ " javascript:updateFeedList() \" value= \" $feed_search\ " >
2005-11-29 09:11:43 +00:00
< input type = \ " submit \" class= \" button \"
onclick = \ " javascript:updateFeedList() \" value= \" Search \" >
</ td >
</ tr ></ table > " ;
2005-09-03 07:22:29 +00:00
2005-11-23 10:47:30 +00:00
$feeds_sort = db_escape_string ( $_GET [ " sort " ]);
if ( ! $feeds_sort || $feeds_sort == " undefined " ) {
$feeds_sort = $_SESSION [ " pref_sort_feeds " ];
if ( ! $feeds_sort ) $feeds_sort = " title " ;
}
$_SESSION [ " pref_sort_feeds " ] = $feeds_sort ;
2005-11-29 09:11:43 +00:00
if ( $feed_search ) {
2005-12-29 14:10:03 +00:00
$search_qpart = " (UPPER(F1.title) LIKE UPPER('% $feed_search %') OR
UPPER ( F1 . feed_url ) LIKE UPPER ( '%$feed_search%' )) AND " ;
2005-11-29 09:11:43 +00:00
} else {
$search_qpart = " " ;
}
2006-06-08 05:30:42 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
$order_by_qpart = " category, $feeds_sort ,title " ;
} else {
$order_by_qpart = " $feeds_sort ,title " ;
}
2005-09-07 12:17:16 +00:00
$result = db_query ( $link , " SELECT
2005-12-29 06:19:27 +00:00
F1 . id ,
F1 . title ,
F1 . feed_url ,
substring ( F1 . last_updated , 1 , 16 ) AS last_updated ,
F1 . parent_feed ,
F1 . update_interval ,
F1 . purge_interval ,
F1 . cat_id ,
F2 . title AS parent_title ,
2006-08-13 12:01:10 +00:00
C1 . title AS category ,
F1 . hidden
2005-08-25 15:15:27 +00:00
FROM
2005-12-29 06:19:27 +00:00
ttrss_feeds AS F1
LEFT JOIN ttrss_feeds AS F2
ON ( F1 . parent_feed = F2 . id )
LEFT JOIN ttrss_feed_categories AS C1
ON ( F1 . cat_id = C1 . id )
2005-11-29 09:11:43 +00:00
WHERE
2005-12-29 06:19:27 +00:00
$search_qpart F1 . owner_uid = '".$_SESSION["uid"]."'
2006-06-08 05:30:42 +00:00
ORDER by $order_by_qpart " );
2005-08-21 10:13:10 +00:00
2005-11-23 14:25:42 +00:00
if ( db_num_rows ( $result ) != 0 ) {
2005-11-23 07:07:04 +00:00
2006-05-20 16:00:41 +00:00
// print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>";
2005-11-25 15:14:45 +00:00
2005-11-27 19:38:39 +00:00
print " <p><table width= \" 100% \" cellspacing= \" 0 \"
class = \ " prefFeedList \" id= \" prefFeedList \" > " ;
2005-11-25 15:14:45 +00:00
print " <tr><td class= \" selectPrompt \" colspan= \" 8 \" >
Select :
2006-05-18 12:01:09 +00:00
< a href = \ " javascript:selectPrefRows('feed', true) \" >All</a>,
< a href = \ " javascript:selectPrefRows('feed', false) \" >None</a>
2005-11-25 15:14:45 +00:00
</ td </ tr > " ;
2005-12-10 19:35:09 +00:00
if ( ! get_pref ( $link , 'ENABLE_FEED_CATS' )) {
print " <tr class= \" title \" >
2006-06-08 05:13:51 +00:00
< td width = '5%' align = 'center' >& nbsp ; </ td > " ;
if ( get_pref ( $link , 'ENABLE_FEED_ICONS' )) {
print " <td width='3%'> </td> " ;
}
print "
2006-03-29 03:11:48 +00:00
< td width = '40%' >< a href = \ " javascript:updateFeedList('title') \" >Title</a></td>
< td width = '45%' >< a href = \ " javascript:updateFeedList('feed_url') \" >Feed</a></td>
< td width = '15%' align = 'right' >< a href = \ " javascript:updateFeedList('last_updated') \" >Updated</a></td> " ;
2005-08-26 06:56:00 +00:00
}
2005-11-23 09:55:05 +00:00
$lnum = 0 ;
2005-12-10 19:35:09 +00:00
$cur_cat_id = - 1 ;
2005-11-23 09:55:05 +00:00
while ( $line = db_fetch_assoc ( $result )) {
2005-11-23 14:25:42 +00:00
$feed_id = $line [ " id " ];
2005-12-10 19:35:09 +00:00
$cat_id = $line [ " cat_id " ];
$edit_title = htmlspecialchars ( db_unescape_string ( $line [ " title " ]));
$edit_link = htmlspecialchars ( db_unescape_string ( $line [ " feed_url " ]));
$edit_cat = htmlspecialchars ( db_unescape_string ( $line [ " category " ]));
2006-08-13 12:01:10 +00:00
$hidden = sql_bool_to_bool ( $line [ " hidden " ]);
2005-12-10 19:35:09 +00:00
if ( ! $edit_cat ) $edit_cat = " Uncategorized " ;
2006-03-29 03:11:48 +00:00
$last_updated = $line [ " last_updated " ];
if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
$last_updated = smart_date_time ( strtotime ( $last_updated ));
} else {
$short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
$last_updated = date ( $short_date , strtotime ( $last_updated ));
}
2005-12-10 19:35:09 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' ) && $cur_cat_id != $cat_id ) {
2005-12-10 19:37:44 +00:00
$lnum = 0 ;
2005-12-10 19:35:09 +00:00
print " <tr><td colspan= \" 6 \" class= \" feedEditCat \" > $edit_cat </td></tr> " ;
print " <tr class= \" title \" >
2006-05-18 06:03:14 +00:00
< td width = '5%' >& nbsp ; </ td > " ;
2006-05-18 06:02:18 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_ICONS' )) {
2006-05-18 06:03:14 +00:00
print " <td width='3%'> </td> " ;
2006-05-18 06:02:18 +00:00
}
print " <td width='40%'><a href= \" javascript:updateFeedList('title') \" >Title</a></td>
2006-03-29 03:11:48 +00:00
< td width = '45%' >< a href = \ " javascript:updateFeedList('feed_url') \" >Feed</a></td>
< td width = '15%' align = 'right' >< a href = \ " javascript:updateFeedList('last_updated') \" >Updated</a></td> " ;
2005-12-10 19:35:09 +00:00
$cur_cat_id = $cat_id ;
2005-11-23 09:55:05 +00:00
}
2005-12-10 19:35:09 +00:00
2005-12-10 19:37:44 +00:00
$class = ( $lnum % 2 ) ? " even " : " odd " ;
2005-12-10 19:35:09 +00:00
$this_row_id = " id= \" FEEDR- $feed_id\ " " ;
2005-11-26 12:31:34 +00:00
print " <tr class= \" $class\ " $this_row_id > " ;
2005-11-23 14:25:42 +00:00
$icon_file = ICONS_DIR . " / $feed_id .ico " ;
if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
2005-12-10 20:06:41 +00:00
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" " . ICONS_URL . " / $feed_id .ico \" > " ;
2005-11-23 14:25:42 +00:00
} else {
2005-12-10 20:06:41 +00:00
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" images/blank_icon.gif \" > " ;
2005-11-23 14:25:42 +00:00
}
2006-05-18 06:02:18 +00:00
2006-05-18 12:01:09 +00:00
print " <td class='feedSelect'><input onclick='toggleSelectPrefRow(this, \" feed \" );'
2005-12-10 19:35:09 +00:00
type = \ " checkbox \" id= \" FRCHK- " . $line [ " id " ] . " \" ></td> " ;
2005-11-24 07:25:09 +00:00
2006-05-18 06:02:18 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_ICONS' )) {
print " <td class='feedIcon'> $feed_icon </td> " ;
}
2005-12-10 19:35:09 +00:00
$edit_title = truncate_string ( $edit_title , 40 );
$edit_link = truncate_string ( $edit_link , 60 );
2005-11-29 09:26:09 +00:00
2006-08-13 12:01:10 +00:00
if ( $hidden ) {
$edit_title = " <span class= \" insensitive \" > $edit_title (Hidden)</span> " ;
$edit_link = " <span class= \" insensitive \" > $edit_link </span> " ;
$last_updated = " <span class= \" insensitive \" > $last_updated </span> " ;
}
2005-12-28 19:17:26 +00:00
$parent_title = $line [ " parent_title " ];
if ( $parent_title ) {
$parent_title = " <span class='groupPrompt'>(linked to
$parent_title ) </ span > " ;
}
2005-12-10 19:35:09 +00:00
print " <td><a href= \" javascript:editFeed( $feed_id ); \" > " .
2006-05-18 06:02:18 +00:00
" $edit_title $parent_title " . " </a></td> " ;
2005-12-10 19:35:09 +00:00
print " <td><a href= \" javascript:editFeed( $feed_id ); \" > " .
$edit_link . " </a></td> " ;
2005-11-24 07:25:09 +00:00
2006-03-29 03:11:48 +00:00
print " <td align='right'><a href= \" javascript:editFeed( $feed_id ); \" > " .
" $last_updated </a></td> " ;
2005-11-23 09:55:05 +00:00
print " </tr> " ;
++ $lnum ;
}
print " </table> " ;
2005-11-23 14:25:42 +00:00
2006-05-18 12:01:09 +00:00
print " <p><span id= \" feedOpToolbar \" > " ;
2005-11-23 09:55:05 +00:00
2005-11-23 14:25:42 +00:00
if ( $subop == " edit " ) {
print " Edit feed:
2005-11-23 09:55:05 +00:00
< input type = \ " submit \" class= \" button \"
2005-11-23 14:25:42 +00:00
onclick = \ " javascript:feedEditCancel() \" value= \" Cancel \" >
2005-11-23 09:55:05 +00:00
< input type = \ " submit \" class= \" button \"
2005-11-23 14:25:42 +00:00
onclick = \ " javascript:feedEditSave() \" value= \" Save \" > " ;
} else {
2005-11-23 09:55:05 +00:00
print "
Selection :& nbsp ;
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2005-11-23 14:25:42 +00:00
onclick = \ " javascript:editSelectedFeed() \" value= \" Edit \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2006-05-18 04:58:31 +00:00
onclick = \ " javascript:removeSelectedFeeds() \" value= \" Unsubscribe \" > " ;
2005-11-29 09:11:43 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-05-18 04:58:31 +00:00
print " | " ;
2005-11-29 09:11:43 +00:00
2006-05-20 09:41:47 +00:00
print_feed_cat_select ( $link , " sfeed_set_fcat " , " " , " disabled " );
2005-11-29 09:11:43 +00:00
2006-05-18 12:01:09 +00:00
print " <input type= \" submit \" class= \" button \" disabled= \" true \"
2006-05-17 06:28:40 +00:00
onclick = \ " javascript:categorizeSelectedFeeds() \" value= \" Recategorize \" > " ;
2005-11-29 09:11:43 +00:00
}
2005-11-23 14:25:42 +00:00
2006-05-18 12:01:09 +00:00
print " </span>
2005-11-29 09:11:43 +00:00
& nbsp ; All feeds : < input type = \ " submit \"
2005-11-23 14:25:42 +00:00
class = \ " button \" onclick= \" gotoExportOpml() \"
value = \ " Export OPML \" > " ;
}
} else {
print " <p>No feeds defined.</p> " ;
}
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
print " <h3>Edit Categories</h3> " ;
print " <div class= \" prefGenericAddBox \" >
2005-11-29 09:11:43 +00:00
< input id = \ " fadd_cat \"
2006-05-18 12:01:09 +00:00
onkeyup = \ " toggleSubmitNotEmpty(this, 'catadd_submit_btn') \"
2005-11-29 09:11:43 +00:00
size = \ " 40 \" >
< input
2006-05-18 12:01:09 +00:00
type = \ " submit \" class= \" button \" disabled= \" true \" id= \" catadd_submit_btn \"
2006-05-18 04:58:31 +00:00
onclick = \ " javascript:addFeedCat() \" value= \" Create category \" ></div> " ;
2005-11-23 14:25:42 +00:00
$result = db_query ( $link , " SELECT title,id FROM ttrss_feed_categories
WHERE owner_uid = " . $_SESSION["uid"] . "
ORDER BY title " );
if ( db_num_rows ( $result ) != 0 ) {
2006-05-20 12:51:39 +00:00
print " <form id= \" feed_cat_edit_form \" > " ;
2005-11-25 15:14:45 +00:00
print " <p><table width= \" 100% \" class= \" prefFeedCatList \"
2005-11-27 19:38:39 +00:00
cellspacing = \ " 0 \" id= \" prefFeedCatList \" > " ;
2005-11-25 15:14:45 +00:00
print " <tr><td class= \" selectPrompt \" colspan= \" 8 \" >
Select :
2006-05-18 12:01:09 +00:00
< a href = \ " javascript:selectPrefRows('fcat', true) \" >All</a>,
< a href = \ " javascript:selectPrefRows('fcat', false) \" >None</a>
2005-11-25 15:14:45 +00:00
</ td </ tr > " ;
2005-11-23 14:25:42 +00:00
print " <tr class= \" title \" >
2006-05-17 04:59:33 +00:00
< td width = \ " 5% \" > </td><td width= \" 80% \" >Title</td>
2005-11-23 14:25:42 +00:00
</ tr > " ;
$lnum = 0 ;
while ( $line = db_fetch_assoc ( $result )) {
$class = ( $lnum % 2 ) ? " even " : " odd " ;
$cat_id = $line [ " id " ];
$edit_cat_id = $_GET [ " id " ];
2006-05-20 14:26:00 +00:00
if ( $subop == " editCat " && $cat_id != $edit_cat_id ) {
2006-05-20 12:51:39 +00:00
$class .= " Grayed " ;
$this_row_id = " " ;
2005-11-26 12:31:34 +00:00
} else {
$this_row_id = " id= \" FCATR- $cat_id\ " " ;
2005-11-23 14:25:42 +00:00
}
2005-11-26 12:31:34 +00:00
print " <tr class= \" $class\ " $this_row_id > " ;
2005-11-23 14:25:42 +00:00
$edit_title = htmlspecialchars ( db_unescape_string ( $line [ " title " ]));
if ( ! $edit_cat_id || $subop != " editCat " ) {
2006-05-18 12:01:09 +00:00
print " <td align='center'><input onclick='toggleSelectPrefRow(this, \" fcat \" );'
type = \ " checkbox \" id= \" FCCHK- " . $line [ " id " ] . " \" ></td> " ;
2005-11-23 14:25:42 +00:00
print " <td><a href= \" javascript:editFeedCat( $cat_id ); \" > " .
$edit_title . " </a></td> " ;
} else if ( $cat_id != $edit_cat_id ) {
2006-05-20 12:51:39 +00:00
print " <td align='center'><input disabled= \" true \" type= \" checkbox \"
2005-11-23 14:25:42 +00:00
id = \ " FRCHK- " . $line [ " id " ] . " \" ></td> " ;
print " <td> $edit_title </td> " ;
} else {
2006-05-20 12:51:39 +00:00
print " <td align='center'><input disabled= \" true \" type= \" checkbox \" checked> " ;
print " <input type= \" hidden \" name= \" id \" value= \" $cat_id\ " > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-feeds \" > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" saveCat \" > " ;
print " </td> " ;
2005-11-23 14:25:42 +00:00
2006-05-21 12:17:00 +00:00
print " <td><input onkeypress= \" return filterCR(event) \"
name = \ " title \" class= \" iedit \" value= \" $edit_title\ " ></ td > " ;
2005-11-23 14:25:42 +00:00
}
print " </tr> " ;
++ $lnum ;
}
print " </table> " ;
2006-05-20 12:51:39 +00:00
print " </form> " ;
2005-11-23 14:25:42 +00:00
2006-05-18 12:01:09 +00:00
print " <p id= \" catOpToolbar \" > " ;
2005-11-23 14:25:42 +00:00
if ( $subop == " editCat " ) {
print " Edit category:
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \"
2006-07-25 10:47:51 +00:00
onclick = \ " return feedCatEditSave() \" value= \" Save \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \"
2006-07-25 10:47:51 +00:00
onclick = \ " return feedCatEditCancel() \" value= \" Cancel \" > " ;
2005-11-23 14:25:42 +00:00
} else {
print "
Selection :& nbsp ;
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2006-07-25 10:47:51 +00:00
onclick = \ " return editSelectedFeedCat() \" value= \" Edit \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2006-07-25 10:47:51 +00:00
onclick = \ " return removeSelectedFeedCats() \" value= \" Remove \" > " ;
2005-11-23 14:25:42 +00:00
}
} else {
print " <p>No feed categories defined.</p> " ;
}
2005-11-23 09:55:05 +00:00
}
print " <h3>Import OPML</h3>
2005-10-28 17:58:20 +00:00
< form enctype = \ " multipart/form-data \" method= \" POST \" action= \" opml.php \" >
File : < input id = \ " opml_file \" name= \" opml_file \" type= \" file \" >
< input class = \ " button \" name= \" op \" onclick= \" return validateOpmlImport(); \"
type = \ " submit \" value= \" Import \" >
</ form > " ;
2005-08-22 01:17:12 +00:00
}
2005-09-03 07:22:29 +00:00
if ( $op == " pref-filters " ) {
$subop = $_GET [ " subop " ];
2005-12-09 19:48:13 +00:00
$quiet = $_GET [ " quiet " ];
2005-09-03 07:22:29 +00:00
2006-05-22 03:54:51 +00:00
if ( $subop == " edit " ) {
$filter_id = db_escape_string ( $_GET [ " id " ]);
$result = db_query ( $link ,
2006-05-22 05:13:44 +00:00
" SELECT * FROM ttrss_filters WHERE id = ' $filter_id ' AND owner_uid = " . $_SESSION [ " uid " ]);
2006-05-22 03:54:51 +00:00
$reg_exp = htmlspecialchars ( db_unescape_string ( db_fetch_result ( $result , 0 , " reg_exp " )));
$filter_type = db_fetch_result ( $result , 0 , " filter_type " );
$feed_id = db_fetch_result ( $result , 0 , " feed_id " );
$action_id = db_fetch_result ( $result , 0 , " action_id " );
2006-08-20 14:18:02 +00:00
$enabled = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " enabled " ));
2006-05-22 03:54:51 +00:00
print " <div id= \" infoBoxTitle \" >Filter editor</div> " ;
print " <div class= \" infoBoxContents \" > " ;
print " <form id= \" filter_edit_form \" > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-filters \" > " ;
print " <input type= \" hidden \" name= \" id \" value= \" $filter_id\ " > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" editSave \" > " ;
// print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
$result = db_query ( $link , " SELECT id,description
FROM ttrss_filter_types ORDER BY description " );
$filter_types = array ();
while ( $line = db_fetch_assoc ( $result )) {
//array_push($filter_types, $line["description"]);
$filter_types [ $line [ " id " ]] = $line [ " description " ];
}
print " <table width='100%'> " ;
print " <tr><td>Match:</td>
< td >< input onkeypress = \ " return filterCR(event) \"
onkeyup = \ " toggleSubmitNotEmpty(this, 'infobox_submit') \"
2006-05-22 04:35:20 +00:00
name = \ " reg_exp \" class= \" iedit \" value= \" $reg_exp\ " > " ;
2006-05-22 03:54:51 +00:00
2006-05-22 04:35:20 +00:00
print " </td><td> " ;
print_select_hash ( " filter_type " , $filter_type , $filter_types , " class= \" iedit \" " );
2006-05-22 03:54:51 +00:00
print " </td></tr> " ;
2006-05-22 04:35:20 +00:00
print " <tr><td>Feed:</td><td colspan='2'> " ;
2006-05-22 03:54:51 +00:00
print_feed_select ( $link , " feed_id " , $feed_id );
print " </td></tr> " ;
print " <tr><td>Action:</td> " ;
2006-05-22 04:35:20 +00:00
print " <td colspan='2'><select name= \" action_id \" > " ;
2006-05-22 03:54:51 +00:00
$result = db_query ( $link , " SELECT id,description FROM ttrss_filter_actions
ORDER BY name " );
while ( $line = db_fetch_assoc ( $result )) {
$is_sel = ( $line [ " id " ] == $action_id ) ? " selected " : " " ;
printf ( " <option value='%d' $is_sel >%s</option> " , $line [ " id " ], $line [ " description " ]);
}
print " </select> " ;
2006-08-20 14:18:02 +00:00
print " </td></tr> " ;
if ( $enabled ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
print " <tr><td>Options:</td><td>
< input type = \ " checkbox \" name= \" enabled \" id= \" enabled \" $checked >
< label for = \ " enabled \" >Enabled</label> " ;
2006-05-22 03:54:51 +00:00
print " </td></tr></table> " ;
print " </form> " ;
print " <div align='right'> " ;
print " <input type= \" submit \"
id = \ " infobox_submit \"
2006-07-25 10:47:51 +00:00
class = \ " button \" onclick= \" return filterEditSave() \"
2006-05-22 03:54:51 +00:00
value = \ " Save \" > " ;
print " <input class= \" button \"
2006-07-25 10:47:51 +00:00
type = \ " submit \" onclick= \" return filterEditCancel() \"
2006-05-22 03:54:51 +00:00
value = \ " Cancel \" > " ;
print " </div> " ;
return ;
}
2005-09-03 07:22:29 +00:00
if ( $subop == " editSave " ) {
2006-05-20 12:26:07 +00:00
$reg_exp = db_escape_string ( trim ( $_GET [ " reg_exp " ]));
$filter_type = db_escape_string ( trim ( $_GET [ " filter_type " ]));
2005-09-07 12:17:16 +00:00
$filter_id = db_escape_string ( $_GET [ " id " ]);
2006-05-20 12:26:07 +00:00
$feed_id = db_escape_string ( $_GET [ " feed_id " ]);
$action_id = db_escape_string ( $_GET [ " action_id " ]);
2006-08-20 14:18:02 +00:00
$enabled = checkbox_to_sql_bool ( db_escape_string ( $_GET [ " enabled " ]));
2005-11-21 13:49:15 +00:00
if ( ! $feed_id ) {
$feed_id = 'NULL' ;
} else {
$feed_id = sprintf ( " '%s' " , db_escape_string ( $feed_id ));
}
2005-09-03 07:50:18 +00:00
2005-09-07 12:17:16 +00:00
$result = db_query ( $link , " UPDATE ttrss_filters SET
2006-05-20 12:26:07 +00:00
reg_exp = '$reg_exp' ,
feed_id = $feed_id ,
action_id = '$action_id' ,
2006-08-20 14:18:02 +00:00
filter_type = '$filter_type' ,
enabled = $enabled
2006-05-22 05:13:44 +00:00
WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"] );
2005-09-03 07:22:29 +00:00
}
if ( $subop == " remove " ) {
if ( ! WEB_DEMO_MODE ) {
2005-11-29 09:11:43 +00:00
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
2005-09-03 07:22:29 +00:00
foreach ( $ids as $id ) {
2006-05-22 05:13:44 +00:00
db_query ( $link , " DELETE FROM ttrss_filters WHERE id = ' $id ' AND owner_uid = " . $_SESSION [ " uid " ]);
2005-09-03 07:22:29 +00:00
}
}
}
if ( $subop == " add " ) {
2005-09-03 07:34:31 +00:00
if ( ! WEB_DEMO_MODE ) {
2005-09-03 07:22:29 +00:00
2006-05-20 11:39:22 +00:00
$regexp = db_escape_string ( trim ( $_GET [ " reg_exp " ]));
2006-05-22 03:54:51 +00:00
$filter_type = db_escape_string ( trim ( $_GET [ " filter_type " ]));
2006-05-20 11:39:22 +00:00
$feed_id = db_escape_string ( $_GET [ " feed_id " ]);
$action_id = db_escape_string ( $_GET [ " action_id " ]);
2005-11-21 13:49:15 +00:00
if ( ! $feed_id ) {
$feed_id = 'NULL' ;
} else {
$feed_id = sprintf ( " '%s' " , db_escape_string ( $feed_id ));
}
2005-11-20 07:21:17 +00:00
2005-09-07 12:17:16 +00:00
$result = db_query ( $link ,
2005-11-29 18:43:39 +00:00
" INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id,
action_id )
VALUES
2006-05-22 03:54:51 +00:00
( '$regexp' , '$filter_type' , '".$_SESSION["uid"]."' ,
2005-11-29 18:43:39 +00:00
$feed_id , '$action_id' ) " );
2005-09-03 07:34:31 +00:00
}
2005-09-03 07:22:29 +00:00
}
2005-12-09 19:48:13 +00:00
if ( $quiet ) return ;
2006-08-20 13:40:03 +00:00
$sort = db_escape_string ( $_GET [ " sort " ]);
if ( ! $sort || $sort == " undefined " ) {
$sort = " reg_exp " ;
}
2006-05-20 16:00:41 +00:00
// print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>";
2006-05-18 02:48:33 +00:00
2006-05-20 12:26:07 +00:00
$result = db_query ( $link , " SELECT id,description
2005-09-03 07:22:29 +00:00
FROM ttrss_filter_types ORDER BY description " );
$filter_types = array ();
2005-09-07 12:17:16 +00:00
while ( $line = db_fetch_assoc ( $result )) {
2006-05-20 12:26:07 +00:00
//array_push($filter_types, $line["description"]);
$filter_types [ $line [ " id " ]] = $line [ " description " ];
2005-09-03 07:22:29 +00:00
}
2006-05-18 02:48:33 +00:00
print " <input type= \" submit \"
class = \ " button \"
2006-07-25 10:47:51 +00:00
onclick = \ " return displayDlg('quickAddFilter', false) \"
2006-05-22 04:35:20 +00:00
id = \ " create_filter_btn \"
2006-05-18 02:48:33 +00:00
value = \ " Create filter \" > " ;
2005-09-07 12:17:16 +00:00
$result = db_query ( $link , " SELECT
2005-11-21 13:49:15 +00:00
ttrss_filters . id AS id , reg_exp ,
ttrss_filter_types . name AS filter_type_name ,
ttrss_filter_types . description AS filter_type_descr ,
2006-08-20 14:18:02 +00:00
enabled ,
2005-11-21 13:49:15 +00:00
feed_id ,
2005-11-29 18:43:39 +00:00
ttrss_filter_actions . description AS action_description ,
2005-12-29 14:10:03 +00:00
ttrss_feeds . title AS feed_title
2005-09-03 07:22:29 +00:00
FROM
2005-12-29 17:33:25 +00:00
ttrss_filter_types , ttrss_filter_actions , ttrss_filters LEFT JOIN
ttrss_feeds ON ( ttrss_filters . feed_id = ttrss_feeds . id )
2005-11-17 18:04:38 +00:00
WHERE
2005-11-21 13:49:15 +00:00
filter_type = ttrss_filter_types . id AND
2005-11-29 18:43:39 +00:00
ttrss_filter_actions . id = action_id AND
2005-11-21 13:49:15 +00:00
ttrss_filters . owner_uid = " . $_SESSION["uid"] . "
2006-08-20 13:40:03 +00:00
ORDER by $sort " );
2005-09-03 07:22:29 +00:00
2005-11-23 14:25:42 +00:00
if ( db_num_rows ( $result ) != 0 ) {
2005-09-03 07:22:29 +00:00
2006-05-20 12:26:07 +00:00
print " <form id= \" filter_edit_form \" > " ;
2005-11-27 19:38:39 +00:00
print " <p><table width= \" 100% \" cellspacing= \" 0 \" class= \" prefFilterList \"
id = \ " prefFilterList \" > " ;
2005-11-25 15:14:45 +00:00
print " <tr><td class= \" selectPrompt \" colspan= \" 8 \" >
Select :
2006-05-18 12:01:09 +00:00
< a href = \ " javascript:selectPrefRows('filter', true) \" >All</a>,
< a href = \ " javascript:selectPrefRows('filter', false) \" >None</a>
2005-11-25 15:14:45 +00:00
</ td </ tr > " ;
2005-11-23 14:25:42 +00:00
print " <tr class= \" title \" >
2005-12-12 05:57:54 +00:00
< td align = 'center' width = \ " 5% \" > </td>
2006-08-20 13:40:03 +00:00
< td width = \ " 20% \" ><a href= \" javascript:updateFilterList('reg_exp') \" >Filter expression</a></td>
< td width = \ " 20% \" ><a href= \" javascript:updateFilterList('feed_title') \" >Feed</a></td>
< td width = \ " 15% \" ><a href= \" javascript:updateFilterList('filter_type') \" >Match</a></td>
< td width = \ " 15% \" ><a href= \" javascript:updateFilterList('action_description') \" >Action</a></td> " ;
2006-03-29 03:11:48 +00:00
2005-11-23 14:25:42 +00:00
$lnum = 0 ;
while ( $line = db_fetch_assoc ( $result )) {
$class = ( $lnum % 2 ) ? " even " : " odd " ;
$filter_id = $line [ " id " ];
$edit_filter_id = $_GET [ " id " ];
2006-08-20 14:18:02 +00:00
$enabled = sql_bool_to_bool ( $line [ " enabled " ]);
2005-11-23 14:25:42 +00:00
if ( $subop == " edit " && $filter_id != $edit_filter_id ) {
$class .= " Grayed " ;
2005-11-26 12:31:34 +00:00
$this_row_id = " " ;
} else {
$this_row_id = " id= \" FILRR- $filter_id\ " " ;
2005-11-21 13:49:15 +00:00
}
2005-11-23 14:25:42 +00:00
2005-11-26 12:31:34 +00:00
print " <tr class= \" $class\ " $this_row_id > " ;
2005-11-23 14:25:42 +00:00
2006-05-22 03:54:51 +00:00
$line [ " reg_exp " ] = htmlspecialchars ( db_unescape_string ( $line [ " reg_exp " ]));
2005-11-23 14:25:42 +00:00
if ( ! $line [ " feed_title " ]) $line [ " feed_title " ] = " All feeds " ;
2006-05-20 12:26:07 +00:00
2006-05-22 03:54:51 +00:00
$line [ " feed_title " ] = htmlspecialchars ( db_unescape_string ( $line [ " feed_title " ]));
print " <td align='center'><input onclick='toggleSelectPrefRow(this, \" filter \" );'
2005-11-23 14:25:42 +00:00
type = \ " checkbox \" id= \" FICHK- " . $line [ " id " ] . " \" ></td> " ;
2006-08-20 14:18:02 +00:00
if ( ! $enabled ) {
$line [ " reg_exp " ] = " <span class= \" insensitive \" > " .
$line [ " reg_exp " ] . " (Disabled)</span> " ;
$line [ " feed_title " ] = " <span class= \" insensitive \" > " .
$line [ " feed_title " ] . " </span> " ;
$line [ " filter_type_descr " ] = " <span class= \" insensitive \" > " .
$line [ " filter_type_descr " ] . " </span> " ;
$line [ " action_description " ] = " <span class= \" insensitive \" > " .
$line [ " action_description " ] . " </span> " ;
}
2005-11-23 14:25:42 +00:00
2006-05-22 03:54:51 +00:00
print " <td><a href= \" javascript:editFilter( $filter_id ); \" > " .
$line [ " reg_exp " ] . " </td> " ;
2005-11-23 14:25:42 +00:00
2006-05-22 03:54:51 +00:00
print " <td><a href= \" javascript:editFilter( $filter_id ); \" > " .
$line [ " feed_title " ] . " </td> " ;
2005-11-23 14:25:42 +00:00
2006-05-22 03:54:51 +00:00
print " <td><a href= \" javascript:editFilter( $filter_id ); \" > " .
$line [ " filter_type_descr " ] . " </td> " ;
2005-11-29 18:43:39 +00:00
2006-05-22 03:54:51 +00:00
print " <td><a href= \" javascript:editFilter( $filter_id ); \" > " .
$line [ " action_description " ] . " </td> " ;
2005-11-23 14:25:42 +00:00
print " </tr> " ;
++ $lnum ;
2005-09-03 07:22:29 +00:00
}
2005-11-23 14:25:42 +00:00
if ( $lnum == 0 ) {
print " <tr><td colspan= \" 4 \" align= \" center \" >No filters defined.</td></tr> " ;
}
print " </table> " ;
2006-05-20 12:26:07 +00:00
print " </form> " ;
2005-11-23 14:25:42 +00:00
2006-05-18 12:01:09 +00:00
print " <p id= \" filterOpToolbar \" > " ;
2005-11-23 14:25:42 +00:00
2006-05-22 04:35:20 +00:00
print "
2005-11-23 14:25:42 +00:00
Selection :
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2006-07-25 10:47:51 +00:00
onclick = \ " return editSelectedFilter() \" value= \" Edit \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2006-07-25 10:47:51 +00:00
onclick = \ " return removeSelectedFilters() \" value= \" Remove \" > " ;
2006-05-22 04:35:20 +00:00
print " </p> " ;
2005-11-23 14:25:42 +00:00
2005-09-03 07:22:29 +00:00
} else {
2005-11-23 14:25:42 +00:00
print " <p>No filters defined.</p> " ;
2005-09-03 07:22:29 +00:00
}
}
2005-12-02 20:36:07 +00:00
// We need to accept raw SQL data in label queries, so not everything is escaped
// here, this is by design. If you don't like the whole idea, disable labels
// altogether with GLOBAL_ENABLE_LABELS = false
2005-09-08 07:43:44 +00:00
if ( $op == " pref-labels " ) {
2005-12-02 20:07:47 +00:00
if ( ! GLOBAL_ENABLE_LABELS ) {
2006-08-16 07:37:30 +00:00
print " <p>Sorry, labels have been administratively disabled for this installation. Please contact instance owner or edit configuration file to enable this functionality.</p> " ;
2005-12-02 20:07:47 +00:00
return ;
}
2005-09-08 07:43:44 +00:00
$subop = $_GET [ " subop " ];
2006-08-16 07:28:10 +00:00
if ( $subop == " edit " ) {
$label_id = db_escape_string ( $_GET [ " id " ]);
$result = db_query ( $link , " SELECT sql_exp,description FROM ttrss_labels WHERE
owner_uid = " . $_SESSION["uid"] . " AND id = '$label_id' ORDER by description " );
$line = db_fetch_assoc ( $result );
$sql_exp = htmlspecialchars ( db_unescape_string ( $line [ " sql_exp " ]));
$description = htmlspecialchars ( db_unescape_string ( $line [ " description " ]));
print " <div id= \" infoBoxTitle \" >Label editor</div> " ;
print " <div class= \" infoBoxContents \" > " ;
print " <form id= \" label_edit_form \" > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-labels \" > " ;
print " <input type= \" hidden \" name= \" id \" value= \" $label_id\ " > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" editSave \" > " ;
print " <table width='100%'> " ;
print " <tr><td>Caption:</td>
< td >< input onkeypress = \ " return filterCR(event) \"
onkeyup = \ " toggleSubmitNotEmpty(this, 'infobox_submit') \"
name = \ " description \" class= \" iedit \" value= \" $description\ " > " ;
print " </td></tr> " ;
print " <tr><td colspan= \" 2 \" >
< p > SQL Expression :</ p > " ;
print " <textarea onkeyup= \" toggleSubmitNotEmpty(this, 'infobox_submit') \"
rows = \ " 4 \" name= \" sql_exp \" class= \" iedit \" > $sql_exp </textarea> " ;
print " </td></tr></table> " ;
print " </form> " ;
print " <div style= \" display : none \" id= \" label_test_result \" ></div> " ;
print " <div align='right'> " ;
2006-08-20 06:28:13 +00:00
$is_disabled = ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Opera' ) !== FALSE ) ? " disabled " : " " ;
print " <input $is_disabled type= \" submit \" onclick= \" return labelTest() \" value= \" Test \" >
2006-08-16 07:28:10 +00:00
" ;
print " <input type= \" submit \"
id = \ " infobox_submit \"
class = \ " button \" onclick= \" return labelEditSave() \"
value = \ " Save \" > " ;
print " <input class= \" button \"
type = \ " submit \" onclick= \" return labelEditCancel() \"
value = \ " Cancel \" > " ;
print " </div> " ;
return ;
}
2005-11-24 07:05:20 +00:00
if ( $subop == " test " ) {
2006-08-01 08:04:38 +00:00
$expr = db_unescape_string ( trim ( $_GET [ " expr " ]));
$descr = db_unescape_string ( trim ( $_GET [ " descr " ]));
2005-11-24 07:05:20 +00:00
2006-08-16 07:28:10 +00:00
print " <div> " ;
2006-05-18 04:58:31 +00:00
2006-08-16 07:28:10 +00:00
error_reporting ( 0 );
2005-11-24 07:05:20 +00:00
$result = db_query ( $link ,
2006-08-01 07:54:46 +00:00
" SELECT count(ttrss_entries.id) AS num_matches
FROM ttrss_entries , ttrss_user_entries , ttrss_feeds
2005-11-24 07:05:20 +00:00
WHERE ( $expr ) AND
ttrss_user_entries . ref_id = ttrss_entries . id AND
2006-08-01 07:54:46 +00:00
ttrss_user_entries . feed_id = ttrss_feeds . id AND
2006-08-16 07:28:10 +00:00
ttrss_user_entries . owner_uid = " . $_SESSION["uid"] , false);
error_reporting ( DEFAULT_ERROR_LEVEL );
if ( ! $result ) {
print " <p> " . db_last_error ( $link ) . " </p> " ;
print " </div> " ;
return ;
}
2005-11-24 07:05:20 +00:00
$num_matches = db_fetch_result ( $result , 0 , " num_matches " );;
if ( $num_matches > 0 ) {
2006-08-16 07:32:28 +00:00
if ( $num_matches > 10 ) {
$showing_msg = " , showing first 10 " ;
}
print " <p>Query returned <b> $num_matches </b> matches $showing_msg :</p> " ;
2005-11-24 07:05:20 +00:00
$result = db_query ( $link ,
2006-08-01 07:54:46 +00:00
" SELECT ttrss_entries.title,
2005-11-24 07:05:20 +00:00
( SELECT title FROM ttrss_feeds WHERE id = feed_id ) AS feed_title
2006-08-01 07:54:46 +00:00
FROM ttrss_entries , ttrss_user_entries , ttrss_feeds
2005-11-24 07:05:20 +00:00
WHERE ( $expr ) AND
ttrss_user_entries . ref_id = ttrss_entries . id
2006-08-01 07:54:46 +00:00
AND ttrss_user_entries . feed_id = ttrss_feeds . id
AND ttrss_user_entries . owner_uid = " . $_SESSION["uid"] . "
2006-08-16 07:28:10 +00:00
ORDER BY date_entered DESC LIMIT 10 " , false);
2005-11-24 07:05:20 +00:00
2006-08-16 07:28:10 +00:00
print " <ul class= \" labelTestResults \" > " ;
2006-05-20 09:41:47 +00:00
$row_class = " even " ;
2005-11-24 07:05:20 +00:00
while ( $line = db_fetch_assoc ( $result )) {
2006-05-20 09:41:47 +00:00
$row_class = toggleEvenOdd ( $row_class );
print " <li class= \" $row_class\ " > " . $line["title"] .
2005-11-24 07:05:20 +00:00
" <span class= \" insensitive \" >( " . $line [ " feed_title " ] . " )</span></li> " ;
}
print " </ul> " ;
} else {
print " <p>Query didn't return any matches.</p> " ;
}
print " </div> " ;
return ;
}
2005-09-08 07:43:44 +00:00
if ( $subop == " editSave " ) {
2006-05-20 12:40:50 +00:00
$sql_exp = trim ( $_GET [ " sql_exp " ]);
$descr = db_escape_string ( trim ( $_GET [ " description " ]));
2005-09-08 07:43:44 +00:00
$label_id = db_escape_string ( $_GET [ " id " ]);
$result = db_query ( $link , " UPDATE ttrss_labels SET
sql_exp = '$sql_exp' ,
description = '$descr'
WHERE id = '$label_id' " );
}
if ( $subop == " remove " ) {
if ( ! WEB_DEMO_MODE ) {
2005-11-29 09:11:43 +00:00
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
2005-09-08 07:43:44 +00:00
foreach ( $ids as $id ) {
db_query ( $link , " DELETE FROM ttrss_labels WHERE id = ' $id ' " );
}
}
}
if ( $subop == " add " ) {
if ( ! WEB_DEMO_MODE ) {
2005-11-20 07:21:17 +00:00
// no escaping is done here on purpose
2006-08-17 04:54:57 +00:00
$sql_exp = trim ( $_GET [ " sql_exp " ]);
$description = db_escape_string ( $_GET [ " description " ]);
2005-09-08 07:43:44 +00:00
$result = db_query ( $link ,
2005-11-17 18:04:38 +00:00
" INSERT INTO ttrss_labels (sql_exp,description,owner_uid)
2006-08-17 04:54:57 +00:00
VALUES ( '$sql_exp' , '$description' , '".$_SESSION["uid"]."' ) " );
2005-09-08 07:43:44 +00:00
}
}
2006-08-20 13:43:58 +00:00
$sort = db_escape_string ( $_GET [ " sort " ]);
if ( ! $sort || $sort == " undefined " ) {
$sort = " description " ;
}
2006-08-17 04:54:57 +00:00
print " <div class= \" prefGenericAddBox \" > " ;
2005-11-21 13:59:32 +00:00
print " <input type= \" submit \" class= \" button \"
2006-08-17 04:54:57 +00:00
id = \ " label_create_btn \"
onclick = \ " return displayDlg('quickAddLabel', false) \"
value = \ " Create label \" ></div> " ;
2005-09-08 07:43:44 +00:00
$result = db_query ( $link , " SELECT
id , sql_exp , description
FROM
2005-11-17 18:04:38 +00:00
ttrss_labels
WHERE
owner_uid = " . $_SESSION["uid"] . "
2006-08-20 13:43:58 +00:00
ORDER BY $sort " );
2005-09-08 07:43:44 +00:00
2006-05-20 16:00:41 +00:00
// print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>";
2005-11-24 07:05:20 +00:00
2005-11-23 14:25:42 +00:00
if ( db_num_rows ( $result ) != 0 ) {
2005-09-08 07:43:44 +00:00
2006-05-20 12:40:50 +00:00
print " <form id= \" label_edit_form \" > " ;
2005-11-27 19:38:39 +00:00
print " <p><table width= \" 100% \" cellspacing= \" 0 \"
class = \ " prefLabelList \" id= \" prefLabelList \" > " ;
2005-11-25 15:14:45 +00:00
print " <tr><td class= \" selectPrompt \" colspan= \" 8 \" >
Select :
2006-05-18 12:01:09 +00:00
< a href = \ " javascript:selectPrefRows('label', true) \" >All</a>,
< a href = \ " javascript:selectPrefRows('label', false) \" >None</a>
2005-11-25 15:14:45 +00:00
</ td </ tr > " ;
2005-11-23 14:25:42 +00:00
print " <tr class= \" title \" >
2006-05-20 09:41:47 +00:00
< td width = \ " 5% \" > </td>
2006-08-20 13:43:58 +00:00
< td width = \ " 30% \" ><a href= \" javascript:updateLabelList('description') \" >Caption</a></td>
< td width = \ " 50% \" ><a href= \" javascript:updateLabelList('sql_exp') \" >SQL Expression</a>
2005-11-27 10:56:53 +00:00
< a class = \ " helpLink \" href= \" javascript:displayHelpInfobox(1) \" >(?)</a>
2005-11-23 14:25:42 +00:00
</ td >
2006-08-16 07:32:28 +00:00
</ tr > " ;
2005-11-23 14:25:42 +00:00
$lnum = 0 ;
while ( $line = db_fetch_assoc ( $result )) {
$class = ( $lnum % 2 ) ? " even " : " odd " ;
$label_id = $line [ " id " ];
$edit_label_id = $_GET [ " id " ];
if ( $subop == " edit " && $label_id != $edit_label_id ) {
$class .= " Grayed " ;
2005-11-26 12:31:34 +00:00
$this_row_id = " " ;
} else {
$this_row_id = " id= \" LILRR- $label_id\ " " ;
2005-11-23 14:25:42 +00:00
}
2005-11-26 12:31:34 +00:00
print " <tr class= \" $class\ " $this_row_id > " ;
2005-11-23 14:25:42 +00:00
2006-08-01 08:13:56 +00:00
$line [ " sql_exp " ] = htmlspecialchars ( db_unescape_string ( $line [ " sql_exp " ]));
$line [ " description " ] = htmlspecialchars (
db_unescape_string ( $line [ " description " ]));
2005-11-23 14:25:42 +00:00
2006-08-16 07:28:10 +00:00
if ( ! $line [ " description " ]) $line [ " description " ] = " [No caption] " ;
2005-11-23 14:25:42 +00:00
2006-08-16 07:28:10 +00:00
print " <td align='center'><input onclick='toggleSelectPrefRow(this, \" label \" );'
2005-11-23 14:25:42 +00:00
type = \ " checkbox \" id= \" LICHK- " . $line [ " id " ] . " \" ></td> " ;
2006-08-16 07:28:10 +00:00
print " <td><a href= \" javascript:editLabel( $label_id ); \" > " .
$line [ " description " ] . " </td> " ;
2006-08-16 07:32:28 +00:00
print " <td><a href= \" javascript:editLabel( $label_id ); \" > " .
$line [ " sql_exp " ] . " </td> " ;
2005-11-23 14:25:42 +00:00
print " </tr> " ;
++ $lnum ;
}
if ( $lnum == 0 ) {
print " <tr><td colspan= \" 4 \" align= \" center \" >No labels defined.</td></tr> " ;
}
print " </table> " ;
2006-05-20 12:40:50 +00:00
print " </form> " ;
2005-11-23 14:25:42 +00:00
2006-05-18 12:01:09 +00:00
print " <p id= \" labelOpToolbar \" > " ;
2005-11-23 14:25:42 +00:00
2006-08-16 07:32:28 +00:00
print "
2005-11-23 14:25:42 +00:00
Selection :
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2005-11-23 14:25:42 +00:00
onclick = \ " javascript:editSelectedLabel() \" value= \" Edit \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2006-08-16 07:32:28 +00:00
onclick = \ " javascript:removeSelectedLabels() \" value= \" Remove \" > " ;
2005-09-08 07:43:44 +00:00
} else {
2005-11-23 14:25:42 +00:00
print " <p>No labels defined.</p> " ;
2005-09-08 07:43:44 +00:00
}
}
2005-09-07 07:19:14 +00:00
if ( $op == " error " ) {
print " <div width= \" 100% \" align='center'> " ;
$msg = $_GET [ " msg " ];
print $msg ;
print " </div> " ;
}
2005-10-16 15:17:12 +00:00
if ( $op == " help " ) {
2005-11-27 10:56:53 +00:00
if ( ! $_GET [ " noheaders " ]) {
print " <html><head>
< title > Tiny Tiny RSS : Help </ title >
< link rel = \ " stylesheet \" href= \" tt-rss.css \" type= \" text/css \" >
2006-05-21 04:28:51 +00:00
< script type = \ " text/javascript \" src= \" prototype.js \" ></script>
2006-03-30 06:43:35 +00:00
< script type = \ " text/javascript \" src= \" functions.js? $script_dt_add\ " ></ script >
2005-11-27 10:56:53 +00:00
< meta http - equiv = \ " Content-Type \" content= \" text/html; charset=utf-8 \" >
</ head >< body > " ;
}
2005-10-16 15:17:12 +00:00
$tid = sprintf ( " %d " , $_GET [ " tid " ]);
2006-05-18 04:58:31 +00:00
print " <div id= \" infoBoxTitle \" >Help</div> " ;
2005-11-27 10:56:53 +00:00
print " <div class='infoBoxContents'> " ;
2005-10-16 15:17:12 +00:00
2005-11-27 10:56:53 +00:00
if ( file_exists ( " help/ $tid .php " )) {
include ( " help/ $tid .php " );
} else {
print " <p>Help topic not found.</p> " ;
}
2005-10-16 15:17:12 +00:00
2005-11-27 10:56:53 +00:00
print " </div> " ;
2005-10-16 15:17:12 +00:00
print " <div align='center'>
2005-11-27 10:56:53 +00:00
< input type = 'submit' class = 'button'
onclick = \ " closeInfoBox() \" value= \" Close this window \" ></div> " ;
2005-10-16 15:17:12 +00:00
2005-11-27 10:56:53 +00:00
if ( ! $_GET [ " noheaders " ]) {
print " </body></html> " ;
}
2005-10-16 15:17:12 +00:00
}
2005-10-28 05:59:29 +00:00
if ( $op == " dlg " ) {
$id = $_GET [ " id " ];
2005-10-28 06:21:16 +00:00
$param = $_GET [ " param " ];
2005-10-28 05:59:29 +00:00
if ( $id == " quickAddFeed " ) {
2006-05-18 04:58:31 +00:00
print " <div id= \" infoBoxTitle \" >Subscribe to feed</div> " ;
print " <div class= \" infoBoxContents \" > " ;
2006-05-20 14:53:41 +00:00
print " <form id='feed_add_form'> " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-feeds \" > " ;
print " <input type= \" hidden \" name= \" quiet \" value= \" 1 \" > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" add \" > " ;
2006-05-18 04:58:31 +00:00
print " <table width='100%'>
< tr >< td > Feed URL :</ td >< td >
2006-05-20 14:53:41 +00:00
< input class = \ " iedit \" onblur= \" javascript:enableHotkeys() \"
2006-05-21 12:17:00 +00:00
onkeypress = \ " return filterCR(event) \"
2006-05-18 08:29:17 +00:00
onkeyup = \ " toggleSubmitNotEmpty(this, 'fadd_submit_btn') \"
2006-05-20 14:53:41 +00:00
onfocus = \ " javascript:disableHotkeys() \" name= \" feed_url \" ></td></tr> " ;
2005-12-20 08:00:11 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-05-18 04:58:31 +00:00
print " <tr><td>Category:</td><td> " ;
2006-05-20 14:53:41 +00:00
print_feed_cat_select ( $link , " cat_id " );
2006-05-18 04:58:31 +00:00
print " </td></tr> " ;
2005-12-20 08:00:11 +00:00
}
2006-05-20 14:53:41 +00:00
print " </table> " ;
print " </form> " ;
print " <div align='right'>
2006-05-18 08:29:17 +00:00
< input class = \ " button \"
id = \ " fadd_submit_btn \" disabled= \" true \"
type = \ " submit \" onclick= \" javascript:qafAdd() \" value= \" Subscribe \" >
< input class = \ " button \"
2006-05-20 14:53:41 +00:00
type = \ " submit \" onclick= \" javascript:closeInfoBox() \"
value = \ " Cancel \" ></div> " ;
2006-05-20 12:09:33 +00:00
2005-10-28 05:59:29 +00:00
}
2005-10-28 06:21:16 +00:00
2005-10-28 06:51:34 +00:00
if ( $id == " search " ) {
2006-05-18 04:58:31 +00:00
print " <div id= \" infoBoxTitle \" >Search</div> " ;
print " <div class= \" infoBoxContents \" > " ;
2006-05-21 04:28:51 +00:00
print " <form id='search_form'> " ;
2006-08-01 04:13:48 +00:00
#$active_feed_id = db_escape_string($_GET["param"]);
$params = split ( " : " , db_escape_string ( $_GET [ " param " ]));
2006-08-01 04:33:31 +00:00
$active_feed_id = sprintf ( " %d " , $params [ 0 ]);
2006-08-01 04:13:48 +00:00
$is_cat = $params [ 1 ] == " true " ;
2006-01-09 09:47:02 +00:00
2006-05-18 04:58:31 +00:00
print " <table width='100%'><tr><td>Search:</td><td> " ;
2006-05-21 04:28:51 +00:00
print " <input name= \" query \" class= \" iedit \"
onkeypress = \ " return filterCR(event) \"
2006-05-18 08:29:17 +00:00
onkeyup = \ " toggleSubmitNotEmpty(this, 'search_submit_btn') \"
2006-05-21 04:28:51 +00:00
value = \ " \" >
</ td ></ tr > " ;
print " <tr><td>Where:</td><td> " ;
print " <select name= \" search_mode \" >
< option value = \ " all_feeds \" >All feeds</option> " ;
$feed_title = getFeedTitle ( $link , $active_feed_id );
2006-08-01 04:13:48 +00:00
if ( ! $is_cat ) {
$feed_cat_title = getFeedCatTitle ( $link , $active_feed_id );
} else {
$feed_cat_title = getCategoryTitle ( $link , $active_feed_id );
}
2006-05-21 04:28:51 +00:00
2006-08-01 04:13:48 +00:00
if ( $active_feed_id && ! $is_cat ) {
2006-05-21 04:28:51 +00:00
print " <option selected value= \" this_feed \" >This feed ( $feed_title )</option> " ;
2006-01-09 09:47:02 +00:00
} else {
print " <option disabled>This feed</option> " ;
}
2006-02-25 19:41:27 +00:00
2006-08-01 04:13:48 +00:00
if ( $is_cat ) {
$cat_preselected = " selected " ;
}
2006-08-01 04:33:31 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' ) && ( $active_feed_id > 0 || $is_cat )) {
2006-08-01 04:13:48 +00:00
print " <option $cat_preselected value= \" this_cat \" >This category ( $feed_cat_title )</option> " ;
2006-05-21 04:28:51 +00:00
} else {
print " <option disabled>This category</option> " ;
2006-02-25 19:41:27 +00:00
}
2006-05-21 04:28:51 +00:00
print " </select></td></tr> " ;
print " <tr><td>Match on:</td><td> " ;
$search_fields = array (
" title " => " Title " ,
" content " => " Content " ,
" both " => " Title or content " );
2006-05-18 04:58:31 +00:00
2006-05-21 04:28:51 +00:00
print_select_hash ( " match_on " , 3 , $search_fields );
print " </td></tr></table> " ;
print " </form> " ;
print " <div align= \" right \" >
2005-10-28 06:51:34 +00:00
< input type = \ " submit \"
2006-05-18 08:29:17 +00:00
class = \ " button \" onclick= \" javascript:search() \"
id = \ " search_submit_btn \" disabled= \" true \"
value = \ " Search \" >
2005-10-28 06:51:34 +00:00
< input class = \ " button \"
2006-05-21 04:28:51 +00:00
type = \ " submit \" onclick= \" javascript:searchCancel() \"
value = \ " Cancel \" ></div> " ;
print " </div> " ;
2005-10-28 06:51:34 +00:00
}
2006-08-17 04:54:57 +00:00
if ( $id == " quickAddLabel " ) {
print " <div id= \" infoBoxTitle \" >Create label</div> " ;
print " <div class= \" infoBoxContents \" > " ;
print " <form id= \" label_edit_form \" > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-labels \" > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" add \" > " ;
print " <table width='100%'> " ;
print " <tr><td>Caption:</td>
< td >< input onkeypress = \ " return filterCR(event) \"
onkeyup = \ " toggleSubmitNotEmpty(this, 'infobox_submit') \"
name = \ " description \" class= \" iedit \" > " ;
print " </td></tr> " ;
print " <tr><td colspan= \" 2 \" >
< p > SQL Expression :</ p > " ;
print " <textarea onkeyup= \" toggleSubmitNotEmpty(this, 'infobox_submit') \"
rows = \ " 4 \" name= \" sql_exp \" class= \" iedit \" ></textarea> " ;
print " </td></tr></table> " ;
print " </form> " ;
print " <div style= \" display : none \" id= \" label_test_result \" ></div> " ;
print " <div align='right'> " ;
print " <input type= \" submit \" onclick= \" labelTest() \" value= \" Test \" >
" ;
print " <input type= \" submit \"
id = \ " infobox_submit \"
disabled = \ " true \"
class = \ " button \" onclick= \" return addLabel() \"
value = \ " Create \" > " ;
print " <input class= \" button \"
type = \ " submit \" onclick= \" return labelEditCancel() \"
value = \ " Cancel \" > " ;
}
2005-12-09 19:48:13 +00:00
if ( $id == " quickAddFilter " ) {
2006-05-23 04:16:32 +00:00
$active_feed_id = db_escape_string ( $_GET [ " param " ]);
2006-05-18 04:58:31 +00:00
print " <div id= \" infoBoxTitle \" >Create filter</div> " ;
print " <div class= \" infoBoxContents \" > " ;
2006-05-20 11:39:22 +00:00
print " <form id= \" filter_add_form \" > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-filters \" > " ;
print " <input type= \" hidden \" name= \" quiet \" value= \" 1 \" > " ;
2006-05-20 12:09:33 +00:00
print " <input type= \" hidden \" name= \" subop \" value= \" add \" > " ;
2006-05-20 11:39:22 +00:00
2006-05-20 09:50:24 +00:00
// print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
2006-05-23 04:16:32 +00:00
2006-05-20 11:39:22 +00:00
$result = db_query ( $link , " SELECT id,description
2005-12-09 19:48:13 +00:00
FROM ttrss_filter_types ORDER BY description " );
$filter_types = array ();
while ( $line = db_fetch_assoc ( $result )) {
2006-05-20 11:39:22 +00:00
//array_push($filter_types, $line["description"]);
$filter_types [ $line [ " id " ]] = $line [ " description " ];
2005-12-09 19:48:13 +00:00
}
2006-05-18 04:58:31 +00:00
print " <table width='100%'> " ;
2005-12-09 19:48:13 +00:00
2006-05-18 08:29:17 +00:00
print " <tr><td>Match:</td>
2006-05-21 04:28:51 +00:00
< td >< input onkeypress = \ " return filterCR(event) \"
onkeyup = \ " toggleSubmitNotEmpty(this, 'infobox_submit') \"
2006-05-22 04:35:20 +00:00
name = \ " reg_exp \" class= \" iedit \" > " ;
print " </td><td> " ;
print_select_hash ( " filter_type " , 1 , $filter_types , " class= \" iedit \" " );
2005-12-09 19:48:13 +00:00
print " </td></tr> " ;
2006-05-22 04:35:20 +00:00
print " <tr><td>Feed:</td><td colspan='2'> " ;
2006-05-20 09:41:47 +00:00
2006-05-23 04:16:32 +00:00
print_feed_select ( $link , " feed_id " , $active_feed_id );
2006-05-20 09:41:47 +00:00
print " </td></tr> " ;
2005-12-09 19:48:13 +00:00
print " <tr><td>Action:</td> " ;
2006-05-22 04:35:20 +00:00
print " <td colspan='2'><select name= \" action_id \" > " ;
2005-12-09 19:48:13 +00:00
$result = db_query ( $link , " SELECT id,description FROM ttrss_filter_actions
ORDER BY name " );
while ( $line = db_fetch_assoc ( $result )) {
2006-05-20 11:39:22 +00:00
printf ( " <option value='%d'>%s</option> " , $line [ " id " ], $line [ " description " ]);
2005-12-09 19:48:13 +00:00
}
print " </select> " ;
2006-05-20 12:09:33 +00:00
print " </td></tr></table> " ;
print " </form> " ;
print " <div align='right'> " ;
2005-12-09 19:48:13 +00:00
print " <input type= \" submit \"
2006-05-18 08:29:17 +00:00
id = \ " infobox_submit \"
2006-07-25 10:47:51 +00:00
class = \ " button \" onclick= \" return qaddFilter() \"
2006-05-18 08:29:17 +00:00
disabled = \ " true \" value= \" Create \" > " ;
2005-12-09 19:48:13 +00:00
print " <input class= \" button \"
2006-07-25 10:47:51 +00:00
type = \ " submit \" onclick= \" return closeInfoBox() \"
2006-05-18 04:58:31 +00:00
value = \ " Cancel \" > " ;
2005-12-09 19:48:13 +00:00
2006-05-20 12:09:33 +00:00
print " </div> " ;
2006-05-18 04:58:31 +00:00
2006-05-20 12:09:33 +00:00
// print "</td></tr></table>";
2006-05-20 11:39:22 +00:00
2005-12-09 19:48:13 +00:00
}
2006-05-18 02:48:33 +00:00
print " </div> " ;
2005-10-28 05:59:29 +00:00
}
2005-11-21 07:11:21 +00:00
// update feeds of all users, may be used anonymously
if ( $op == " globalUpdateFeeds " ) {
$result = db_query ( $link , " SELECT id FROM ttrss_users " );
while ( $line = db_fetch_assoc ( $result )) {
$user_id = $line [ " id " ];
// print "<!-- updating feeds of uid $user_id -->";
update_all_feeds ( $link , false , $user_id );
}
2005-11-16 09:54:33 +00:00
2005-11-21 07:11:21 +00:00
print " <rpc-reply>
< message msg = \ " All feeds updated \" />
</ rpc - reply > " ;
2005-11-16 09:54:33 +00:00
}
2005-11-17 05:26:54 +00:00
if ( $op == " pref-prefs " ) {
2005-11-17 07:10:31 +00:00
$subop = $_REQUEST [ " subop " ];
2005-11-17 05:26:54 +00:00
if ( $subop == " Save configuration " ) {
2005-11-21 20:05:29 +00:00
if ( WEB_DEMO_MODE ) {
header ( " Location: prefs.php " );
return ;
}
2005-11-17 07:26:33 +00:00
2005-11-20 07:15:59 +00:00
$_SESSION [ " prefs_op_result " ] = " save-config " ;
2005-12-29 14:10:03 +00:00
$_SESSION [ " prefs_cache " ] = false ;
2005-11-17 05:26:54 +00:00
foreach ( array_keys ( $_POST ) as $pref_name ) {
$pref_name = db_escape_string ( $pref_name );
$value = db_escape_string ( $_POST [ $pref_name ]);
$result = db_query ( $link , " SELECT type_name
FROM ttrss_prefs , ttrss_prefs_types
WHERE pref_name = '$pref_name' AND type_id = ttrss_prefs_types . id " );
if ( db_num_rows ( $result ) > 0 ) {
$type_name = db_fetch_result ( $result , 0 , " type_name " );
2005-11-17 05:34:52 +00:00
// print "$pref_name : $type_name : $value<br>";
2005-11-17 05:26:54 +00:00
if ( $type_name == " bool " ) {
2005-11-17 05:34:52 +00:00
if ( $value == " 1 " ) {
2005-11-17 05:26:54 +00:00
$value = " true " ;
} else {
$value = " false " ;
}
} else if ( $type_name == " integer " ) {
$value = sprintf ( " %d " , $value );
}
// print "$pref_name : $type_name : $value<br>";
2005-11-18 05:17:17 +00:00
db_query ( $link , " UPDATE ttrss_user_prefs SET value = ' $value '
WHERE pref_name = '$pref_name' AND owner_uid = " . $_SESSION["uid"] );
2005-11-17 05:26:54 +00:00
}
header ( " Location: prefs.php " );
}
2005-11-17 07:10:31 +00:00
} else if ( $subop == " getHelp " ) {
$pref_name = db_escape_string ( $_GET [ " pn " ]);
$result = db_query ( $link , " SELECT help_text FROM ttrss_prefs
WHERE pref_name = '$pref_name' " );
if ( db_num_rows ( $result ) > 0 ) {
$help_text = db_fetch_result ( $result , 0 , " help_text " );
print $help_text ;
} else {
print " Unknown option: $pref_name " ;
}
2005-12-21 17:50:11 +00:00
} else if ( $subop == " Change e-mail " ) {
if ( WEB_DEMO_MODE ) {
header ( " Location: prefs.php " );
return ;
}
$email = db_escape_string ( $_GET [ " email " ]);
$active_uid = $_SESSION [ " uid " ];
if ( $email ) {
db_query ( $link , " UPDATE ttrss_users SET email = ' $email '
WHERE id = '$active_uid' " );
}
header ( " Location: prefs.php " );
2005-11-18 06:04:32 +00:00
} else if ( $subop == " Change password " ) {
2005-11-21 20:05:29 +00:00
if ( WEB_DEMO_MODE ) {
header ( " Location: prefs.php " );
return ;
}
2005-11-18 06:04:32 +00:00
$old_pw = $_POST [ " OLD_PASSWORD " ];
$new_pw = $_POST [ " OLD_PASSWORD " ];
$old_pw_hash = 'SHA1:' . sha1 ( $_POST [ " OLD_PASSWORD " ]);
$new_pw_hash = 'SHA1:' . sha1 ( $_POST [ " NEW_PASSWORD " ]);
$active_uid = $_SESSION [ " uid " ];
if ( $old_pw && $new_pw ) {
$login = db_escape_string ( $_SERVER [ 'PHP_AUTH_USER' ]);
$result = db_query ( $link , " SELECT id FROM ttrss_users WHERE
id = '$active_uid' AND ( pwd_hash = '$old_pw' OR
pwd_hash = '$old_pw_hash' ) " );
if ( db_num_rows ( $result ) == 1 ) {
db_query ( $link , " UPDATE ttrss_users SET pwd_hash = ' $new_pw_hash '
WHERE id = '$active_uid' " );
2005-11-20 06:38:13 +00:00
$_SESSION [ " pwd_change_result " ] = " ok " ;
} else {
$_SESSION [ " pwd_change_result " ] = " failed " ;
2005-11-18 06:04:32 +00:00
}
}
header ( " Location: prefs.php " );
2005-11-20 06:38:13 +00:00
2005-11-17 05:26:54 +00:00
} else if ( $subop == " Reset to defaults " ) {
2005-11-21 20:05:29 +00:00
if ( WEB_DEMO_MODE ) {
header ( " Location: prefs.php " );
return ;
}
2005-11-17 07:26:33 +00:00
2005-11-20 07:15:59 +00:00
$_SESSION [ " prefs_op_result " ] = " reset-to-defaults " ;
2005-11-18 09:21:41 +00:00
if ( DB_TYPE == " pgsql " ) {
db_query ( $link , " UPDATE ttrss_user_prefs
SET value = ttrss_prefs . def_value
WHERE owner_uid = '".$_SESSION["uid"]."' AND
ttrss_prefs . pref_name = ttrss_user_prefs . pref_name " );
} else {
db_query ( $link , " DELETE FROM ttrss_user_prefs
WHERE owner_uid = " . $_SESSION["uid"] );
initialize_user_prefs ( $link , $_SESSION [ " uid " ]);
}
2005-11-17 05:34:52 +00:00
2005-11-17 05:26:54 +00:00
header ( " Location: prefs.php " );
2005-11-26 06:36:23 +00:00
} else if ( $subop == " Change theme " ) {
$theme = db_escape_string ( $_POST [ " theme " ]);
if ( $theme == " Default " ) {
$theme_qpart = 'NULL' ;
} else {
$theme_qpart = " ' $theme ' " ;
}
2005-11-26 06:56:22 +00:00
$result = db_query ( $link , " SELECT id,theme_path FROM ttrss_themes
WHERE theme_name = '$theme' " );
if ( db_num_rows ( $result ) == 1 ) {
$theme_id = db_fetch_result ( $result , 0 , " id " );
$theme_path = db_fetch_result ( $result , 0 , " theme_path " );
} else {
$theme_id = " NULL " ;
$theme_path = " " ;
}
2005-11-26 06:36:23 +00:00
db_query ( $link , " UPDATE ttrss_users SET
2005-11-26 06:56:22 +00:00
theme_id = $theme_id WHERE id = " . $_SESSION["uid"] );
2005-11-26 06:36:23 +00:00
2005-11-26 06:56:22 +00:00
$_SESSION [ " theme " ] = $theme_path ;
2005-11-26 06:48:37 +00:00
2005-11-26 06:36:23 +00:00
header ( " Location: prefs.php " );
2005-11-17 05:26:54 +00:00
} else {
2006-08-20 04:27:48 +00:00
print check_for_update ( $link );
2005-11-18 06:29:36 +00:00
if ( ! SINGLE_USER_MODE ) {
2005-11-18 06:04:32 +00:00
2005-12-21 17:50:11 +00:00
$result = db_query ( $link , " SELECT id,email FROM ttrss_users
2005-11-20 06:33:45 +00:00
WHERE id = " . $_SESSION["uid"] . " AND ( pwd_hash = 'password' OR
pwd_hash = 'SHA1:".sha1("password")."' ) " );
if ( db_num_rows ( $result ) != 0 ) {
2005-11-20 06:38:13 +00:00
print " <div class= \" warning \" >
2005-11-20 06:33:45 +00:00
Your password is at default value , please change it .
</ div > " ;
}
2005-11-20 06:38:13 +00:00
if ( $_SESSION [ " pwd_change_result " ] == " failed " ) {
print " <div class= \" warning \" >
There was an error while changing your password .
</ div > " ;
}
if ( $_SESSION [ " pwd_change_result " ] == " ok " ) {
print " <div class= \" notice \" >
Password changed successfully .
</ div > " ;
}
$_SESSION [ " pwd_change_result " ] = " " ;
2005-11-20 07:15:59 +00:00
if ( $_SESSION [ " prefs_op_result " ] == " reset-to-defaults " ) {
print " <div class= \" notice \" >
Your configuration was reset to defaults .
</ div > " ;
}
if ( $_SESSION [ " prefs_op_result " ] == " save-config " ) {
print " <div class= \" notice \" >
Your configuration was saved successfully .
</ div > " ;
}
$_SESSION [ " prefs_op_result " ] = " " ;
2005-12-21 17:50:11 +00:00
print " <form action= \" backend.php \" method= \" GET \" > " ;
print " <table width= \" 100% \" class= \" prefPrefsList \" > " ;
print " <tr><td colspan='3'><h3>Personal data</h3></tr></td> " ;
$result = db_query ( $link , " SELECT email FROM ttrss_users
WHERE id = " . $_SESSION["uid"] );
$email = db_fetch_result ( $result , 0 , " email " );
print " <tr><td width= \" 40% \" >E-mail</td> " ;
print " <td><input class= \" editbox \" name= \" email \"
value = \ " $email\ " ></ td ></ tr > " ;
print " </table> " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-prefs \" > " ;
print " <p><input class= \" button \" type= \" submit \"
value = \ " Change e-mail \" name= \" subop \" > " ;
2006-01-05 15:42:59 +00:00
print " </form> " ;
2006-05-18 05:19:40 +00:00
print " <form action= \" backend.php \" method= \" POST \" name= \" changePassForm \" > " ;
2005-11-18 06:29:36 +00:00
print " <table width= \" 100% \" class= \" prefPrefsList \" > " ;
print " <tr><td colspan='3'><h3>Authentication</h3></tr></td> " ;
print " <tr><td width= \" 40% \" >Old password</td> " ;
print " <td><input class= \" editbox \" type= \" password \"
name = \ " OLD_PASSWORD \" ></td></tr> " ;
print " <tr><td width= \" 40% \" >New password</td> " ;
print " <td><input class= \" editbox \" type= \" password \"
name = \ " NEW_PASSWORD \" ></td></tr> " ;
print " </table> " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-prefs \" > " ;
print " <p><input class= \" button \" type= \" submit \"
2006-05-18 05:19:40 +00:00
onclick = \ " return validateNewPassword(this.form) \"
2005-11-18 06:29:36 +00:00
value = \ " Change password \" name= \" subop \" > " ;
print " </form> " ;
2005-11-18 06:04:32 +00:00
2005-11-18 06:29:36 +00:00
}
2005-11-18 06:04:32 +00:00
2005-11-26 06:36:23 +00:00
$result = db_query ( $link , " SELECT
theme_id FROM ttrss_users WHERE id = " . $_SESSION["uid"] );
$user_theme_id = db_fetch_result ( $result , 0 , " theme_id " );
$result = db_query ( $link , " SELECT
id , theme_name FROM ttrss_themes ORDER BY theme_name " );
if ( db_num_rows ( $result ) > 0 ) {
2005-11-26 06:56:22 +00:00
print " <form action= \" backend.php \" method= \" POST \" > " ;
print " <table width= \" 100% \" class= \" prefPrefsList \" > " ;
print " <tr><td colspan='3'><h3>Themes</h3></tr></td> " ;
print " <tr><td width= \" 40% \" >Select theme</td> " ;
print " <td><select name= \" theme \" > " ;
print " <option>Default</option> " ;
2005-11-26 06:36:23 +00:00
print " <option disabled>--------</option> " ;
2005-11-26 06:56:22 +00:00
2005-11-26 06:36:23 +00:00
while ( $line = db_fetch_assoc ( $result )) {
if ( $line [ " id " ] == $user_theme_id ) {
$selected = " selected " ;
} else {
$selected = " " ;
}
print " <option $selected > " . $line [ " theme_name " ] . " </option> " ;
}
2005-11-26 06:56:22 +00:00
print " </select></td></tr> " ;
print " </table> " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-prefs \" > " ;
print " <p><input class= \" button \" type= \" submit \"
value = \ " Change theme \" name= \" subop \" > " ;
print " </form> " ;
2005-11-26 06:36:23 +00:00
}
2005-11-17 05:26:54 +00:00
$result = db_query ( $link , " SELECT
2005-11-18 05:17:17 +00:00
ttrss_user_prefs . pref_name , short_desc , help_text , value , type_name ,
2005-11-17 05:26:54 +00:00
section_name , def_value
2005-11-18 05:17:17 +00:00
FROM ttrss_prefs , ttrss_prefs_types , ttrss_prefs_sections , ttrss_user_prefs
2005-11-17 05:26:54 +00:00
WHERE type_id = ttrss_prefs_types . id AND
2005-11-18 05:17:17 +00:00
section_id = ttrss_prefs_sections . id AND
2005-11-18 06:54:54 +00:00
ttrss_user_prefs . pref_name = ttrss_prefs . pref_name AND
owner_uid = " . $_SESSION["uid"] . "
2005-11-17 10:24:34 +00:00
ORDER BY section_id , short_desc " );
2005-11-17 05:26:54 +00:00
print " <form action= \" backend.php \" method= \" POST \" > " ;
$lnum = 0 ;
$active_section = " " ;
while ( $line = db_fetch_assoc ( $result )) {
if ( $active_section != $line [ " section_name " ]) {
2005-11-17 05:42:17 +00:00
if ( $active_section != " " ) {
2005-11-18 06:04:32 +00:00
print " </table> " ;
2005-11-17 05:42:17 +00:00
}
2005-11-18 06:04:32 +00:00
print " <p><table width= \" 100% \" class= \" prefPrefsList \" > " ;
2005-11-17 05:42:17 +00:00
$active_section = $line [ " section_name " ];
2005-11-17 05:26:54 +00:00
print " <tr><td colspan= \" 3 \" ><h3> $active_section </h3></td></tr> " ;
2005-11-17 05:42:17 +00:00
// print "<tr class=\"title\">
// <td width=\"25%\">Option</td><td>Value</td></tr>";
2005-11-17 07:20:29 +00:00
$lnum = 0 ;
2005-11-17 05:26:54 +00:00
}
2005-11-17 10:24:34 +00:00
// $class = ($lnum % 2) ? "even" : "odd";
2005-11-17 05:26:54 +00:00
2005-11-17 10:24:34 +00:00
print " <tr> " ;
2005-11-17 05:26:54 +00:00
$type_name = $line [ " type_name " ];
$pref_name = $line [ " pref_name " ];
$value = $line [ " value " ];
$def_value = $line [ " def_value " ];
2005-11-17 07:10:31 +00:00
$help_text = $line [ " help_text " ];
print " <td width= \" 40% \" id= \" $pref_name\ " > " . $line["short_desc"] ;
if ( $help_text ) print " <div class= \" prefHelp \" > $help_text </div> " ;
print " </td> " ;
2005-11-17 05:26:54 +00:00
print " <td> " ;
if ( $type_name == " bool " ) {
// print_select($pref_name, $value, array("true", "false"));
if ( $value == " true " ) {
$value = " Yes " ;
} else {
$value = " No " ;
}
print_radio ( $pref_name , $value , array ( " Yes " , " No " ));
} else {
print " <input class= \" editbox \" name= \" $pref_name\ " value = \ " $value\ " > " ;
}
print " </td> " ;
print " </tr> " ;
$lnum ++ ;
}
print " </table> " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-prefs \" > " ;
print " <p><input class= \" button \" type= \" submit \"
name = \ " subop \" value= \" Save configuration \" > " ;
print " <input class= \" button \" type= \" submit \"
2005-12-11 07:56:57 +00:00
name = \ " subop \" onclick= \" return validatePrefsReset() \"
value = \ " Reset to defaults \" ></p> " ;
2005-11-17 05:26:54 +00:00
print " </form> " ;
}
}
2005-11-18 09:00:18 +00:00
if ( $op == " pref-users " ) {
$subop = $_GET [ " subop " ];
2006-05-20 14:26:00 +00:00
if ( $subop == " edit " ) {
$id = db_escape_string ( $_GET [ " id " ]);
print " <div id= \" infoBoxTitle \" >User editor</div> " ;
print " <div class= \" infoBoxContents \" > " ;
print " <form id= \" user_edit_form \" > " ;
print " <input type= \" hidden \" name= \" id \" value= \" $id\ " > " ;
print " <input type= \" hidden \" name= \" op \" value= \" pref-users \" > " ;
print " <input type= \" hidden \" name= \" subop \" value= \" editSave \" > " ;
$result = db_query ( $link , " SELECT * FROM ttrss_users WHERE id = ' $id ' " );
$login = db_fetch_result ( $result , 0 , " login " );
$access_level = db_fetch_result ( $result , 0 , " access_level " );
$email = db_fetch_result ( $result , 0 , " email " );
print " <table width='100%'> " ;
print " <tr><td>Login:</td><td>
2006-05-21 12:17:00 +00:00
< input class = \ " iedit \" onkeypress= \" return filterCR(event) \"
name = \ " login \" value= \" $login\ " ></ td ></ tr > " ;
2006-05-20 14:26:00 +00:00
print " <tr><td>Change password:</td><td>
2006-05-21 12:17:00 +00:00
< input class = \ " iedit \" onkeypress= \" return filterCR(event) \"
name = \ " password \" ></td></tr> " ;
2006-05-20 14:26:00 +00:00
print " <tr><td>E-mail:</td><td>
2006-05-21 12:17:00 +00:00
< input class = \ " iedit \" name= \" email \" onkeypress= \" return filterCR(event) \"
value = \ " $email\ " ></ td ></ tr > " ;
2006-05-20 14:26:00 +00:00
$sel_disabled = ( $id == $_SESSION [ " uid " ]) ? " disabled " : " " ;
print " <tr><td>Access level:</td><td> " ;
print_select_hash ( " access_level " , $access_level , $access_level_names ,
$sel_disabled );
print " </td></tr> " ;
print " </table> " ;
print " </form> " ;
print " <div align='right'>
< input class = \ " button \"
2006-07-25 10:47:51 +00:00
type = \ " submit \" onclick= \" return userEditSave() \"
value = \ " Save \" >
2006-05-20 14:26:00 +00:00
< input class = \ " button \"
2006-07-25 10:47:51 +00:00
type = \ " submit \" onclick= \" return userEditCancel() \"
2006-05-20 14:26:00 +00:00
value = \ " Cancel \" ></div> " ;
print " </div> " ;
return ;
}
2005-11-18 09:00:18 +00:00
if ( $subop == " editSave " ) {
2006-05-20 14:26:00 +00:00
if ( ! WEB_DEMO_MODE && $_SESSION [ " access_level " ] >= 10 ) {
2005-11-18 09:00:18 +00:00
2006-05-20 14:26:00 +00:00
$login = db_escape_string ( trim ( $_GET [ " login " ]));
2005-11-18 09:00:18 +00:00
$uid = db_escape_string ( $_GET [ " id " ]);
2006-05-20 14:26:00 +00:00
$access_level = sprintf ( " %d " , $_GET [ " access_level " ]);
$email = db_escape_string ( trim ( $_GET [ " email " ]));
$password = db_escape_string ( trim ( $_GET [ " password " ]));
if ( $password ) {
$pwd_hash = 'SHA1:' . sha1 ( $password );
$pass_query_part = " pwd_hash = ' $pwd_hash ', " ;
print " <div class='notice'>Changed password for user <b> $login </b>.</div> " ;
} else {
$pass_query_part = " " ;
}
2005-11-18 09:00:18 +00:00
2006-05-20 14:26:00 +00:00
db_query ( $link , " UPDATE ttrss_users SET $pass_query_part login = ' $login ',
2005-12-20 06:51:06 +00:00
access_level = '$access_level' , email = '$email' WHERE id = '$uid' " );
2005-11-18 09:00:18 +00:00
}
} else if ( $subop == " remove " ) {
if ( ! WEB_DEMO_MODE && $_SESSION [ " access_level " ] >= 10 ) {
2005-11-29 09:11:43 +00:00
$ids = split ( " , " , db_escape_string ( $_GET [ " ids " ]));
2005-11-18 09:00:18 +00:00
foreach ( $ids as $id ) {
db_query ( $link , " DELETE FROM ttrss_users WHERE id = ' $id ' AND id != " . $_SESSION [ " uid " ]);
}
}
} else if ( $subop == " add " ) {
if ( ! WEB_DEMO_MODE && $_SESSION [ " access_level " ] >= 10 ) {
2005-11-20 07:18:56 +00:00
$login = db_escape_string ( trim ( $_GET [ " login " ]));
2005-11-18 09:00:18 +00:00
$tmp_user_pwd = make_password ( 8 );
$pwd_hash = 'SHA1:' . sha1 ( $tmp_user_pwd );
$result = db_query ( $link , " SELECT id FROM ttrss_users WHERE
2006-05-18 12:01:09 +00:00
login = '$login' " );
2005-11-18 09:00:18 +00:00
2006-05-18 12:01:09 +00:00
if ( db_num_rows ( $result ) == 0 ) {
2005-11-18 09:00:18 +00:00
2006-05-18 12:01:09 +00:00
db_query ( $link , " INSERT INTO ttrss_users
( login , pwd_hash , access_level , last_login )
VALUES ( '$login' , '$pwd_hash' , 0 , NOW ()) " );
$result = db_query ( $link , " SELECT id FROM ttrss_users WHERE
login = '$login' AND pwd_hash = '$pwd_hash' " );
if ( db_num_rows ( $result ) == 1 ) {
$new_uid = db_fetch_result ( $result , 0 , " id " );
print " <div class= \" notice \" >Added user <b> " . $_GET [ " login " ] .
" </b> with password <b> $tmp_user_pwd </b>.</div> " ;
initialize_user ( $link , $new_uid );
} else {
print " <div class= \" warning \" >Could not create user <b> " .
$_GET [ " login " ] . " </b></div> " ;
}
2005-11-18 09:00:18 +00:00
} else {
2006-05-18 12:01:09 +00:00
print " <div class= \" warning \" >User <b> " .
$_GET [ " login " ] . " </b> already exists.</div> " ;
2005-11-18 09:00:18 +00:00
}
}
} else if ( $subop == " resetPass " ) {
if ( ! WEB_DEMO_MODE && $_SESSION [ " access_level " ] >= 10 ) {
$uid = db_escape_string ( $_GET [ " id " ]);
2005-12-20 06:51:06 +00:00
$result = db_query ( $link , " SELECT login,email
FROM ttrss_users WHERE id = '$uid' " );
2005-11-18 09:00:18 +00:00
$login = db_fetch_result ( $result , 0 , " login " );
2005-12-20 06:51:06 +00:00
$email = db_fetch_result ( $result , 0 , " email " );
2005-11-18 09:00:18 +00:00
$tmp_user_pwd = make_password ( 8 );
$pwd_hash = 'SHA1:' . sha1 ( $tmp_user_pwd );
db_query ( $link , " UPDATE ttrss_users SET pwd_hash = ' $pwd_hash '
WHERE id = '$uid' " );
print " <div class= \" notice \" >Changed password of
2005-12-20 06:51:06 +00:00
user < b > $login </ b > to < b > $tmp_user_pwd </ b >. " ;
if ( MAIL_RESET_PASS && $email ) {
print " Notifying <b> $email </b>. " ;
mail ( " $login < $email > " , " Password reset notification " ,
" Hi, $login . \n " .
" \n " .
" Your password for this TT-RSS installation was reset by " .
" an administrator. \n " .
" \n " .
" Your new password is $tmp_user_pwd , please remember " .
" it for later reference. \n " .
" \n " .
" Sincerely, TT-RSS Mail Daemon. " , " From: " . MAIL_FROM );
}
print " </div> " ;
2005-11-18 09:00:18 +00:00
}
}
2006-08-20 13:54:54 +00:00
$sort = db_escape_string ( $_GET [ " sort " ]);
if ( ! $sort || $sort == " undefined " ) {
$sort = " login " ;
}
2005-11-21 13:59:32 +00:00
print " <div class= \" prefGenericAddBox \" >
2006-05-18 08:29:17 +00:00
< input id = \ " uadd_box \"
onkeyup = \ " toggleSubmitNotEmpty(this, 'user_add_btn') \"
2006-05-18 13:51:15 +00:00
size = \ " 40 \" > " ;
2005-11-18 09:00:18 +00:00
2005-11-21 13:59:32 +00:00
print " <input type= \" submit \" class= \" button \"
2006-05-18 08:29:17 +00:00
id = \ " user_add_btn \" disabled= \" true \"
onclick = \ " javascript:addUser() \" value= \" Create user \" ></div> " ;
2005-11-18 09:00:18 +00:00
$result = db_query ( $link , " SELECT
2005-12-20 06:51:06 +00:00
id , login , access_level , email ,
2005-11-21 07:27:17 +00:00
SUBSTRING ( last_login , 1 , 16 ) as last_login
2005-11-18 09:00:18 +00:00
FROM
ttrss_users
2006-08-20 13:54:54 +00:00
ORDER BY $sort " );
2005-11-18 09:00:18 +00:00
2006-05-20 16:00:41 +00:00
// print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>";
2005-11-18 12:38:21 +00:00
2005-11-27 19:38:39 +00:00
print " <p><table width= \" 100% \" cellspacing= \" 0 \"
class = \ " prefUserList \" id= \" prefUserList \" > " ;
2005-11-18 09:00:18 +00:00
2005-11-25 15:14:45 +00:00
print " <tr><td class= \" selectPrompt \" colspan= \" 8 \" >
Select :
2006-05-18 12:01:09 +00:00
< a href = \ " javascript:selectPrefRows('user', true) \" >All</a>,
< a href = \ " javascript:selectPrefRows('user', false) \" >None</a>
2005-11-25 15:14:45 +00:00
</ td </ tr > " ;
2005-11-18 09:00:18 +00:00
print " <tr class= \" title \" >
2005-12-12 05:57:54 +00:00
< td align = 'center' width = \ " 5% \" > </td>
2006-08-20 13:54:54 +00:00
< td width = '40%' >< a href = \ " javascript:updateUsersList('login') \" >Login</a></td>
< td width = '40%' >< a href = \ " javascript:updateUsersList('access_level') \" >Access Level</a></td>
< td width = '30%' >< a href = \ " javascript:updateUsersList('last_login') \" >Last login</a></td></tr> " ;
2005-11-18 09:00:18 +00:00
$lnum = 0 ;
while ( $line = db_fetch_assoc ( $result )) {
$class = ( $lnum % 2 ) ? " even " : " odd " ;
$uid = $line [ " id " ];
$edit_uid = $_GET [ " id " ];
2005-12-29 15:52:05 +00:00
if ( $subop == " edit " && $uid != $edit_uid ) {
2005-11-18 09:00:18 +00:00
$class .= " Grayed " ;
2005-11-26 12:31:34 +00:00
$this_row_id = " " ;
} else {
$this_row_id = " id= \" UMRR- $uid\ " " ;
}
print " <tr class= \" $class\ " $this_row_id > " ;
2005-11-18 09:00:18 +00:00
$line [ " login " ] = htmlspecialchars ( $line [ " login " ]);
2005-11-30 09:48:20 +00:00
$line [ " last_login " ] = date ( get_pref ( $link , 'SHORT_DATE_FORMAT' ),
strtotime ( $line [ " last_login " ]));
2006-03-20 14:12:41 +00:00
$access_level_names = array ( 0 => " User " , 10 => " Administrator " );
2006-05-20 14:26:00 +00:00
// if (!$edit_uid || $subop != "edit") {
2005-11-18 09:00:18 +00:00
2006-05-18 12:01:09 +00:00
print " <td align='center'><input onclick='toggleSelectPrefRow(this, \" user \" );'
2005-11-18 12:38:21 +00:00
type = \ " checkbox \" id= \" UMCHK- $uid\ " ></ td > " ;
2005-11-18 09:00:18 +00:00
print " <td><a href= \" javascript:editUser( $uid ); \" > " .
$line [ " login " ] . " </td> " ;
2005-12-20 06:51:06 +00:00
2006-05-17 04:59:33 +00:00
if ( ! $line [ " email " ]) $line [ " email " ] = " " ;
2005-11-18 09:00:18 +00:00
print " <td><a href= \" javascript:editUser( $uid ); \" > " .
2006-03-20 14:12:41 +00:00
$access_level_names [ $line [ " access_level " ]] . " </td> " ;
2005-11-18 09:00:18 +00:00
2006-05-20 14:26:00 +00:00
/* } else if ( $uid != $edit_uid ) {
2005-11-18 09:00:18 +00:00
2006-05-17 04:59:33 +00:00
if ( ! $line [ " email " ]) $line [ " email " ] = " " ;
2005-12-20 06:51:06 +00:00
print " <td align='center'><input disabled= \" true \" type= \" checkbox \"
2005-11-18 09:00:18 +00:00
id = \ " UMCHK- " . $line [ " id " ] . " \" ></td> " ;
print " <td> " . $line [ " login " ] . " </td> " ;
2005-12-20 06:51:06 +00:00
print " <td> " . $line [ " email " ] . " </td> " ;
2006-03-20 14:12:41 +00:00
print " <td> " . $access_level_names [ $line [ " access_level " ]] . " </td> " ;
2005-11-18 09:00:18 +00:00
} else {
2005-12-20 06:51:06 +00:00
print " <td align='center'>
< input disabled = \ " true \" type= \" checkbox \" checked></td> " ;
2005-11-18 09:00:18 +00:00
print " <td><input id= \" iedit_ulogin \" value= \" " . $line [ " login " ] .
" \" ></td> " ;
2005-12-20 06:51:06 +00:00
print " <td><input id= \" iedit_email \" value= \" " . $line [ " email " ] .
" \" ></td> " ;
2006-03-20 14:12:41 +00:00
print " <td> " ;
print " <select id= \" iedit_ulevel \" > " ;
foreach ( array_keys ( $access_level_names ) as $al ) {
if ( $al == $line [ " access_level " ]) {
$selected = " selected " ;
} else {
$selected = " " ;
}
print " <option $selected id= \" $al\ " > " .
$access_level_names [ $al ] . " </option> " ;
}
print " </select> " ;
print " </td> " ;
2006-05-20 14:26:00 +00:00
} */
2005-11-18 09:00:18 +00:00
2005-11-18 09:18:19 +00:00
print " <td> " . $line [ " last_login " ] . " </td> " ;
2005-11-18 09:00:18 +00:00
print " </tr> " ;
++ $lnum ;
}
print " </table> " ;
2006-05-18 12:01:09 +00:00
print " <p id='userOpToolbar'> " ;
2005-11-18 09:00:18 +00:00
2006-05-20 14:26:00 +00:00
/* if ( $subop == " edit " ) {
2005-12-29 17:38:24 +00:00
print " Edit user:
2005-11-18 09:00:18 +00:00
< input type = \ " submit \" class= \" button \"
2005-12-29 17:38:24 +00:00
onclick = \ " javascript:userEditSave() \" value= \" Save \" >
2005-11-18 09:00:18 +00:00
< input type = \ " submit \" class= \" button \"
2005-12-29 17:38:24 +00:00
onclick = \ " javascript:userEditCancel() \" value= \" Cancel \" > " ;
2005-11-18 09:00:18 +00:00
2006-05-20 14:26:00 +00:00
} else { */
2005-11-18 09:00:18 +00:00
print "
Selection :
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2005-11-18 12:02:38 +00:00
onclick = \ " javascript:selectedUserDetails() \" value= \" User details \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2005-11-18 09:00:18 +00:00
onclick = \ " javascript:editSelectedUser() \" value= \" Edit \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2005-11-18 12:02:38 +00:00
onclick = \ " javascript:removeSelectedUsers() \" value= \" Remove \" >
2006-05-18 12:01:09 +00:00
< input type = \ " submit \" class= \" button \" disabled= \" true \"
2005-11-18 12:02:38 +00:00
onclick = \ " javascript:resetSelectedUserPass() \" value= \" Reset password \" > " ;
2006-05-20 14:26:00 +00:00
// }
2005-11-18 12:02:38 +00:00
}
if ( $op == " user-details " ) {
if ( WEB_DEMO_MODE || $_SESSION [ " access_level " ] < 10 ) {
return ;
}
2005-11-18 12:38:21 +00:00
/* print " <html><head>
2005-11-18 12:02:38 +00:00
< title > Tiny Tiny RSS : User Details </ title >
< link rel = \ " stylesheet \" href= \" tt-rss.css \" type= \" text/css \" >
< meta http - equiv = \ " Content-Type \" content= \" text/html; charset=utf-8 \" >
2005-11-18 12:38:21 +00:00
</ head >< body > " ; */
2005-11-18 12:02:38 +00:00
$uid = sprintf ( " %d " , $_GET [ " id " ]);
2006-05-18 04:58:31 +00:00
print " <div id= \" infoBoxTitle \" >User details</div> " ;
2005-11-19 19:06:42 +00:00
print " <div class='infoBoxContents'> " ;
2005-11-18 12:02:38 +00:00
2005-11-21 07:27:17 +00:00
$result = db_query ( $link , " SELECT login,
SUBSTRING ( last_login , 1 , 16 ) AS last_login ,
access_level ,
2005-11-19 19:06:42 +00:00
( SELECT COUNT ( int_id ) FROM ttrss_user_entries
WHERE owner_uid = id ) AS stored_articles
2005-11-18 12:02:38 +00:00
FROM ttrss_users
WHERE id = '$uid' " );
if ( db_num_rows ( $result ) == 0 ) {
print " <h1>User not found</h1> " ;
return ;
}
2006-05-17 13:57:46 +00:00
# print "<h1>User Details</h1>";
$login = db_fetch_result ( $result , 0 , " login " );
2006-05-18 12:09:53 +00:00
# print "<h1>$login</h1>";
2005-11-18 12:02:38 +00:00
print " <table width='100%'> " ;
2005-11-30 09:48:20 +00:00
$last_login = date ( get_pref ( $link , 'LONG_DATE_FORMAT' ),
strtotime ( db_fetch_result ( $result , 0 , " last_login " )));
2005-11-18 12:02:38 +00:00
$access_level = db_fetch_result ( $result , 0 , " access_level " );
2005-11-19 19:06:42 +00:00
$stored_articles = db_fetch_result ( $result , 0 , " stored_articles " );
2005-11-18 12:02:38 +00:00
2006-05-17 13:57:46 +00:00
# print "<tr><td>Username</td><td>$login</td></tr>";
2006-05-18 12:09:53 +00:00
# print "<tr><td>Access level</td><td>$access_level</td></tr>";
2005-11-18 12:02:38 +00:00
print " <tr><td>Last logged in</td><td> $last_login </td></tr> " ;
2005-11-19 19:06:42 +00:00
print " <tr><td>Stored articles</td><td> $stored_articles </td></tr> " ;
2005-11-18 12:02:38 +00:00
$result = db_query ( $link , " SELECT COUNT(id) as num_feeds FROM ttrss_feeds
WHERE owner_uid = '$uid' " );
$num_feeds = db_fetch_result ( $result , 0 , " num_feeds " );
print " <tr><td>Subscribed feeds count</td><td> $num_feeds </td></tr> " ;
2005-11-19 08:34:50 +00:00
/* $result = db_query ( $link , " SELECT
2005-11-18 12:02:38 +00:00
SUM ( LENGTH ( content ) + LENGTH ( title ) + LENGTH ( link ) + LENGTH ( guid )) AS db_size
2005-11-19 19:06:42 +00:00
FROM ttrss_user_entries , ttrss_entries
WHERE owner_uid = '$uid' AND ref_id = id " );
2005-11-18 12:02:38 +00:00
2005-11-18 13:29:32 +00:00
$db_size = round ( db_fetch_result ( $result , 0 , " db_size " ) / 1024 );
2005-11-18 12:02:38 +00:00
2005-11-19 19:06:42 +00:00
print " <tr><td>Approx. used DB size</td><td> $db_size KBytes</td></tr> " ; */
2005-11-18 12:02:38 +00:00
print " </table> " ;
print " <h1>Subscribed feeds</h1> " ;
2005-12-04 19:44:44 +00:00
$result = db_query ( $link , " SELECT id,title,site_url FROM ttrss_feeds
2005-12-29 15:53:57 +00:00
WHERE owner_uid = '$uid' ORDER BY title " );
2005-11-18 12:02:38 +00:00
2005-12-29 15:53:57 +00:00
print " <ul class= \" userFeedList \" > " ;
2005-11-18 12:02:38 +00:00
2006-05-17 13:57:46 +00:00
$row_class = " odd " ;
2005-11-18 12:02:38 +00:00
while ( $line = db_fetch_assoc ( $result )) {
$icon_file = ICONS_URL . " / " . $line [ " id " ] . " .ico " ;
if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
2005-11-19 11:19:08 +00:00
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" $icon_file\ " > " ;
2005-11-18 12:02:38 +00:00
} else {
2005-11-20 10:40:14 +00:00
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" images/blank_icon.gif \" > " ;
2005-11-18 12:02:38 +00:00
}
2006-05-17 13:57:46 +00:00
print " <li class= \" $row_class\ " > $feed_icon & nbsp ; < a href = \ " " . $line [ " site_url " ] . " \" > " . $line [ " title " ] . " </a></li> " ;
$row_class = toggleEvenOdd ( $row_class );
2005-11-18 09:00:18 +00:00
}
2005-11-18 12:02:38 +00:00
2005-11-29 09:26:09 +00:00
if ( db_num_rows ( $result ) < $num_feeds ) {
// FIXME - add link to show ALL subscribed feeds here somewhere
print " <li><img
class = \ " tinyFeedIcon \" src= \" images/blank_icon.gif \" > ...</li> " ;
}
2005-11-18 12:02:38 +00:00
print " </ul> " ;
print " </div> " ;
2005-11-18 12:38:21 +00:00
print " <div align='center'>
< input type = 'submit' class = 'button'
2005-11-19 19:06:42 +00:00
onclick = \ " closeInfoBox() \" value= \" Close this window \" ></div> " ;
2005-11-18 12:38:21 +00:00
// print "</body></html>";
2005-11-18 12:02:38 +00:00
2005-11-18 09:00:18 +00:00
}
2005-12-30 05:17:23 +00:00
if ( $op == " pref-feed-browser " ) {
2006-01-12 13:50:53 +00:00
if ( ! ENABLE_FEED_BROWSER ) {
print " Feed browser is administratively disabled. " ;
return ;
}
2005-12-30 05:17:23 +00:00
$subop = $_REQUEST [ " subop " ];
if ( $subop == " details " ) {
$id = db_escape_string ( $_GET [ " id " ]);
2005-12-30 06:00:36 +00:00
2005-12-30 11:18:31 +00:00
print " <div class= \" browserFeedInfo \" > " ;
print " <b>Feed information:</b> " ;
print " <div class= \" detailsPart \" > " ;
$result = db_query ( $link , " SELECT
feed_url , site_url ,
SUBSTRING ( last_updated , 1 , 19 ) AS last_updated
FROM ttrss_feeds WHERE id = '$id' " );
$feed_url = db_fetch_result ( $result , 0 , " feed_url " );
$site_url = db_fetch_result ( $result , 0 , " site_url " );
$last_updated = db_fetch_result ( $result , 0 , " last_updated " );
if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
$last_updated = smart_date_time ( strtotime ( $last_updated ));
} else {
$short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
$last_updated = date ( $short_date , strtotime ( $last_updated ));
}
print " Site: <a href=' $site_url '> $site_url </a> " .
" (<a href=' $feed_url '>feed</a>), " .
" Last updated: $last_updated " ;
print " </div> " ;
$result = db_query ( $link , " SELECT
ttrss_entries . title ,
content ,
2005-12-30 06:00:36 +00:00
substring ( date_entered , 1 , 19 ) as date_entered ,
substring ( updated , 1 , 19 ) as updated
2005-12-30 11:18:31 +00:00
FROM ttrss_entries , ttrss_user_entries
WHERE ttrss_entries . id = ref_id AND feed_id = '$id'
2005-12-30 06:00:36 +00:00
ORDER BY updated DESC LIMIT 5 " );
if ( db_num_rows ( $result ) > 0 ) {
print " <b>Last headlines:</b><br> " ;
print " <div class= \" detailsPart \" > " ;
print " <ul class= \" compact \" > " ;
while ( $line = db_fetch_assoc ( $result )) {
if ( get_pref ( $link , 'HEADLINES_SMART_DATE' )) {
$entry_dt = smart_date_time ( strtotime ( $line [ " updated " ]));
} else {
$short_date = get_pref ( $link , 'SHORT_DATE_FORMAT' );
$entry_dt = date ( $short_date , strtotime ( $line [ " updated " ]));
}
print " <li> " . $line [ " title " ] .
" <span class= \" insensitive \" >( $entry_dt )</span></li> " ;
}
print " </ul></div> " ;
}
2005-12-30 11:18:31 +00:00
print " </div> " ;
2005-12-30 06:00:36 +00:00
2005-12-30 05:17:23 +00:00
return ;
}
2005-12-30 14:09:30 +00:00
2006-05-17 05:45:40 +00:00
print " <p>This panel shows feeds subscribed by other users of this system, just in case you are interested in some of them too.</p> " ;
2006-05-18 06:23:00 +00:00
$limit = db_escape_string ( $_GET [ " limit " ]);
if ( ! $limit ) $limit = 25 ;
2006-06-14 03:21:19 +00:00
$owner_uid = $_SESSION [ " uid " ];
$result = db_query ( $link , " SELECT feed_url,COUNT(id) AS subscribers
FROM ttrss_feeds WHERE ( SELECT COUNT ( id ) = 0 FROM ttrss_feeds AS tf
WHERE tf . feed_url = ttrss_feeds . feed_url
AND owner_uid = '$owner_uid' ) GROUP BY feed_url
ORDER BY subscribers DESC LIMIT $limit " );
2006-05-18 06:23:00 +00:00
2006-06-14 03:21:19 +00:00
2006-05-18 06:23:00 +00:00
print " <div style= \" float : right \" >
Top < select id = \ " feedBrowserLimit \" > " ;
foreach ( array ( 25 , 50 , 100 ) as $l ) {
$issel = ( $l == $limit ) ? " selected " : " " ;
print " <option $issel > $l </option> " ;
}
print " </select>
< input type = \ " submit \" class= \" button \"
onclick = \ " updateBigFeedBrowser() \" value= \" Show \" >
</ div > " ;
2006-05-17 04:59:33 +00:00
2006-05-18 12:09:53 +00:00
print " <p id= \" fbrOpToolbar \" >Selection:
2006-05-17 04:59:33 +00:00
< input type = 'submit' class = 'button' onclick = \ " feedBrowserSubscribe() \"
2006-05-18 12:09:53 +00:00
disabled = \ " true \" value= \" Subscribe \" > " ;
2006-05-17 04:59:33 +00:00
2005-12-30 06:08:44 +00:00
print " <ul class='nomarks' id='browseBigFeedList'> " ;
2005-12-30 05:17:23 +00:00
$feedctr = 0 ;
while ( $line = db_fetch_assoc ( $result )) {
$feed_url = $line [ " feed_url " ];
$subscribers = $line [ " subscribers " ];
$det_result = db_query ( $link , " SELECT site_url,title,id
FROM ttrss_feeds WHERE feed_url = '$feed_url' LIMIT 1 " );
$details = db_fetch_assoc ( $det_result );
$icon_file = ICONS_DIR . " / " . $details [ " id " ] . " .ico " ;
if ( file_exists ( $icon_file ) && filesize ( $icon_file ) > 0 ) {
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" " . ICONS_URL .
" / " . $details [ " id " ] . " .ico \" > " ;
} else {
$feed_icon = " <img class= \" tinyFeedIcon \" src= \" images/blank_icon.gif \" > " ;
}
2006-05-18 12:09:53 +00:00
$check_box = " <input onclick='toggleSelectFBListRow(this)' class='feedBrowseCB'
2005-12-30 05:17:23 +00:00
type = \ " checkbox \" id= \" FBCHK- " . $details [ " id " ] . " \" > " ;
$class = ( $feedctr % 2 ) ? " even " : " odd " ;
print " <li class=' $class ' id= \" FBROW- " . $details [ " id " ] . " \" > $check_box " .
" $feed_icon " ;
2005-12-30 06:00:36 +00:00
print " <a href= \" javascript:browserToggleExpand(' " . $details [ " id " ] . " ') \" > " .
2005-12-30 05:17:23 +00:00
$details [ " title " ] . " </a> " .
" <span class='subscribers'>( $subscribers )</span> " ;
print " <div class= \" browserDetails \" id= \" BRDET- " . $details [ " id " ] . " \" > " ;
print " </div> " ;
print " </li> " ;
++ $feedctr ;
}
if ( $feedctr == 0 ) {
print " <li>No feeds found to subscribe.</li> " ;
}
print " </ul> " ;
print " </div> " ;
}
2006-07-31 11:35:50 +00:00
if ( $op == " rss " ) {
$feed = db_escape_string ( $_GET [ " id " ]);
$user = db_escape_string ( $_GET [ " user " ]);
$pass = db_escape_string ( $_GET [ " pass " ]);
$is_cat = $_GET [ " is_cat " ] != false ;
2006-07-31 11:55:15 +00:00
$search = db_escape_string ( $_GET [ " q " ]);
$match_on = db_escape_string ( $_GET [ " m " ]);
$search_mode = db_escape_string ( $_GET [ " smode " ]);
2006-07-31 11:35:50 +00:00
if ( ! $_SESSION [ " uid " ] && $user && $pass ) {
authenticate_user ( $link , $user , $pass );
}
if ( $_SESSION [ " uid " ] ||
http_authenticate_user ( $link )) {
2006-07-31 11:55:15 +00:00
generate_syndicated_feed ( $link , $feed , $is_cat ,
$search , $search_mode , $match_on );
2006-07-31 11:35:50 +00:00
}
}
2006-03-27 16:08:51 +00:00
function check_configuration_variables () {
if ( ! defined ( 'SESSION_EXPIRE_TIME' )) {
2006-03-28 07:56:56 +00:00
return " config: SESSION_EXPIRE_TIME is undefined " ;
2006-03-27 16:08:51 +00:00
}
if ( SESSION_EXPIRE_TIME < 60 ) {
2006-03-28 07:56:56 +00:00
return " config: SESSION_EXPIRE_TIME is too low (less than 60) " ;
}
if ( SESSION_EXPIRE_TIME < SESSION_COOKIE_LIFETIME_REMEMBER ) {
return " config: SESSION_EXPIRE_TIME should be greater or equal to " .
" SESSION_COOKIE_LIFETIME_REMEMBER " ;
}
2006-03-31 05:30:20 +00:00
if ( defined ( 'DISABLE_SESSIONS' )) {
2006-03-28 07:56:56 +00:00
return " config: you have enabled DISABLE_SESSIONS. Please disable this option. " ;
2006-03-27 16:08:51 +00:00
}
2006-03-30 06:24:23 +00:00
if ( DATABASE_BACKED_SESSIONS && SINGLE_USER_MODE ) {
return " config: DATABASE_BACKED_SESSIONS is incompatible with SINGLE_USER_MODE " ;
}
2006-03-27 16:08:51 +00:00
return false ;
}
2006-08-01 07:54:46 +00:00
if ( $op == " labelFromSearch " ) {
$search = db_escape_string ( $_GET [ " search " ]);
$search_mode = db_escape_string ( $_GET [ " smode " ]);
$match_on = db_escape_string ( $_GET [ " match " ]);
$is_cat = db_escape_string ( $_GET [ " is_cat " ]);
$title = db_escape_string ( $_GET [ " title " ]);
$feed = sprintf ( " %d " , $_GET [ " feed " ]);
$label_qparts = array ();
$search_expr = getSearchSql ( $search , $match_on );
if ( $is_cat ) {
if ( $feed != 0 ) {
$search_expr .= " AND ttrss_feeds.cat_id = $feed " ;
} else {
$search_expr .= " AND ttrss_feeds.cat_id IS NULL " ;
}
} else {
if ( $search_mode == " all_feeds " ) {
// NOOP
} else if ( $search_mode == " this_cat " ) {
$tmp_result = db_query ( $link , " SELECT cat_id
FROM ttrss_feeds WHERE id = '$feed' " );
$cat_id = db_fetch_result ( $tmp_result , 0 , " cat_id " );
if ( $cat_id > 0 ) {
$search_expr .= " AND ttrss_feeds.cat_id = $cat_id " ;
} else {
$search_expr .= " AND ttrss_feeds.cat_id IS NULL " ;
}
} else {
$search_expr .= " AND ttrss_feeds.id = $feed " ;
}
}
$search_expr = db_escape_string ( $search_expr );
print $search_expr ;
if ( $title ) {
$result = db_query ( $link ,
" INSERT INTO ttrss_labels (sql_exp,description,owner_uid)
VALUES ( '$search_expr' , '$title' , '".$_SESSION["uid"]."' ) " );
}
}
2006-08-20 03:35:47 +00:00
if ( $op == " getUnread " ) {
$login = db_escape_string ( $_GET [ " login " ]);
2006-08-20 12:33:37 +00:00
header ( " Content-Type: text/plain; charset=utf-8 " );
2006-08-20 03:35:47 +00:00
$result = db_query ( $link , " SELECT id FROM ttrss_users WHERE login = ' $login ' " );
if ( db_num_rows ( $result ) == 1 ) {
$uid = db_fetch_result ( $result , 0 , " id " );
print getGlobalUnread ( $link , $uid );
} else {
print " Error: user not found " ;
}
2006-08-20 12:33:37 +00:00
$print_exec_time = false ;
}
if ( $op == " digestTest " ) {
header ( " Content-Type: text/plain " );
echo prepare_headlines_digest ( $link , $_SESSION [ " uid " ]);
$print_exec_time = false ;
2006-08-20 03:35:47 +00:00
}
2005-09-07 12:42:49 +00:00
db_close ( $link );
2005-08-21 10:13:10 +00:00
?>
2005-10-23 15:48:58 +00:00
2006-08-20 12:33:37 +00:00
< ? php if ( $print_exec_time ) { ?>
2006-08-19 07:04:45 +00:00
<!-- < ? php echo sprintf ( " Backend execution time: %.4f seconds " , getmicrotime () - $script_started ) ?> -->
2006-08-20 03:35:47 +00:00
< ? php } ?>