2006-10-01 10:05:20 +00:00
< ? php
2006-10-02 03:22:20 +00:00
2008-09-11 06:06:25 +00:00
function batch_edit_cbox ( $elem , $label = false ) {
2008-09-11 06:52:19 +00:00
print " <input type= \" checkbox \" title= \" " . __ ( " Check to enable field " ) . " \"
2010-11-21 08:55:28 +00:00
onchange = \ " dijit.byId('feedEditDlg').toggleField(this, ' $elem ', ' $label ') \" > " ;
2008-09-11 06:06:25 +00:00
}
2006-10-01 10:05:20 +00:00
function module_pref_feeds ( $link ) {
2006-10-02 03:22:20 +00:00
global $update_intervals ;
global $purge_intervals ;
2008-01-25 17:46:01 +00:00
global $update_methods ;
2006-10-02 03:22:20 +00:00
2006-10-01 10:05:20 +00:00
$subop = $_REQUEST [ " subop " ];
$quiet = $_REQUEST [ " quiet " ];
2010-01-11 12:40:35 +00:00
$mode = $_REQUEST [ " mode " ];
2006-10-01 10:05:20 +00:00
2010-11-18 10:46:11 +00:00
if ( $subop == " renamecat " ) {
$title = db_escape_string ( $_REQUEST [ 'title' ]);
$id = db_escape_string ( $_REQUEST [ 'id' ]);
if ( $title ) {
db_query ( $link , " UPDATE ttrss_feed_categories SET
title = '$title' WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"] );
}
return ;
}
2010-11-22 13:26:00 +00:00
if ( $subop == " remtwitterinfo " ) {
db_query ( $link , " UPDATE ttrss_users SET twitter_oauth = NULL
WHERE id = " . $_SESSION['uid'] );
return ;
}
2010-11-18 10:46:11 +00:00
if ( $subop == " getfeedtree " ) {
2011-04-20 09:32:40 +00:00
$search = $_SESSION [ " prefs_feed_search " ];
if ( $search ) $search_qpart = " AND LOWER(title) LIKE LOWER('% $search %') " ;
2010-11-18 10:46:11 +00:00
$root = array ();
$root [ 'id' ] = 'root' ;
$root [ 'name' ] = __ ( 'Feeds' );
$root [ 'items' ] = array ();
2010-11-18 15:25:27 +00:00
$root [ 'type' ] = 'category' ;
2010-11-18 10:46:11 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
$result = db_query ( $link , " SELECT id, title FROM ttrss_feed_categories
WHERE owner_uid = " . $_SESSION["uid"] . " ORDER BY order_id , title " );
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
while ( $line = db_fetch_assoc ( $result )) {
$cat = array ();
$cat [ 'id' ] = 'CAT:' . $line [ 'id' ];
$cat [ 'bare_id' ] = $feed_id ;
$cat [ 'name' ] = $line [ 'title' ];
$cat [ 'items' ] = array ();
2011-11-10 12:18:08 +00:00
$cat [ 'checkbox' ] = false ;
2010-11-18 15:25:27 +00:00
$cat [ 'type' ] = 'category' ;
2011-03-28 11:53:48 +00:00
2010-12-28 08:39:12 +00:00
$feed_result = db_query ( $link , " SELECT id, title, last_error,
" .SUBSTRING_FOR_DATE. " ( last_updated , 1 , 19 ) AS last_updated
2010-11-18 11:20:43 +00:00
FROM ttrss_feeds
2010-11-18 10:46:11 +00:00
WHERE cat_id = '".$line[' id ']."' AND owner_uid = " . $_SESSION["uid"] .
2011-04-20 09:32:40 +00:00
" $search_qpart ORDER BY order_id, title " );
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
while ( $feed_line = db_fetch_assoc ( $feed_result )) {
$feed = array ();
$feed [ 'id' ] = 'FEED:' . $feed_line [ 'id' ];
$feed [ 'bare_id' ] = $feed_line [ 'id' ];
$feed [ 'name' ] = $feed_line [ 'title' ];
$feed [ 'checkbox' ] = false ;
2010-11-18 11:20:43 +00:00
$feed [ 'error' ] = $feed_line [ 'last_error' ];
$feed [ 'icon' ] = getFeedIcon ( $feed_line [ 'id' ]);
2011-03-28 11:53:48 +00:00
$feed [ 'param' ] = make_local_datetime ( $link ,
2010-12-28 08:39:12 +00:00
$feed_line [ 'last_updated' ], true );
2010-11-18 11:20:43 +00:00
2010-11-18 10:46:11 +00:00
array_push ( $cat [ 'items' ], $feed );
}
2011-03-28 11:53:48 +00:00
2011-06-14 09:43:01 +00:00
$cat [ 'param' ] = T_sprintf ( '(%d feeds)' , count ( $cat [ 'items' ]));
2011-04-20 09:32:40 +00:00
if ( count ( $cat [ 'items' ]) > 0 )
array_push ( $root [ 'items' ], $cat );
2011-06-14 09:43:01 +00:00
$root [ 'param' ] += count ( $cat [ 'items' ]);
2010-11-18 10:46:11 +00:00
}
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
/* Uncategorized is a special case */
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
$cat = array ();
$cat [ 'id' ] = 'CAT:0' ;
$cat [ 'bare_id' ] = 0 ;
$cat [ 'name' ] = __ ( " Uncategorized " );
$cat [ 'items' ] = array ();
2010-11-19 07:14:11 +00:00
$cat [ 'type' ] = 'category' ;
2010-12-28 08:39:12 +00:00
$feed_result = db_query ( $link , " SELECT id, title,last_error,
" .SUBSTRING_FOR_DATE. " ( last_updated , 1 , 19 ) AS last_updated
2010-11-18 11:20:43 +00:00
FROM ttrss_feeds
2010-11-18 10:46:11 +00:00
WHERE cat_id IS NULL AND owner_uid = " . $_SESSION["uid"] .
2011-04-20 09:32:40 +00:00
" $search_qpart ORDER BY order_id, title " );
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
while ( $feed_line = db_fetch_assoc ( $feed_result )) {
$feed = array ();
$feed [ 'id' ] = 'FEED:' . $feed_line [ 'id' ];
$feed [ 'bare_id' ] = $feed_line [ 'id' ];
$feed [ 'name' ] = $feed_line [ 'title' ];
$feed [ 'checkbox' ] = false ;
2010-11-18 11:20:43 +00:00
$feed [ 'error' ] = $feed_line [ 'last_error' ];
$feed [ 'icon' ] = getFeedIcon ( $feed_line [ 'id' ]);
2011-03-28 11:53:48 +00:00
$feed [ 'param' ] = make_local_datetime ( $link ,
2010-12-28 08:39:12 +00:00
$feed_line [ 'last_updated' ], true );
2010-11-18 11:20:43 +00:00
2010-11-18 10:46:11 +00:00
array_push ( $cat [ 'items' ], $feed );
}
2011-03-28 11:53:48 +00:00
2011-06-14 09:43:01 +00:00
$cat [ 'param' ] = T_sprintf ( '(%d feeds)' , count ( $cat [ 'items' ]));
2011-04-20 09:32:40 +00:00
if ( count ( $cat [ 'items' ]) > 0 )
array_push ( $root [ 'items' ], $cat );
2011-06-14 09:43:01 +00:00
$root [ 'param' ] += count ( $cat [ 'items' ]);
$root [ 'param' ] = T_sprintf ( '(%d feeds)' , $root [ 'param' ]);
2010-11-18 10:46:11 +00:00
} else {
2010-12-28 08:39:12 +00:00
$feed_result = db_query ( $link , " SELECT id, title, last_error,
" .SUBSTRING_FOR_DATE. " ( last_updated , 1 , 19 ) AS last_updated
2010-11-18 11:20:43 +00:00
FROM ttrss_feeds
2010-11-18 10:46:11 +00:00
WHERE owner_uid = " . $_SESSION["uid"] .
2011-04-20 09:32:40 +00:00
" $search_qpart ORDER BY order_id, title " );
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
while ( $feed_line = db_fetch_assoc ( $feed_result )) {
$feed = array ();
$feed [ 'id' ] = 'FEED:' . $feed_line [ 'id' ];
$feed [ 'bare_id' ] = $feed_line [ 'id' ];
$feed [ 'name' ] = $feed_line [ 'title' ];
$feed [ 'checkbox' ] = false ;
2010-11-18 11:20:43 +00:00
$feed [ 'error' ] = $feed_line [ 'last_error' ];
$feed [ 'icon' ] = getFeedIcon ( $feed_line [ 'id' ]);
2011-03-28 11:53:48 +00:00
$feed [ 'param' ] = make_local_datetime ( $link ,
2010-12-28 08:39:12 +00:00
$feed_line [ 'last_updated' ], true );
2010-11-18 11:20:43 +00:00
2010-11-18 10:46:11 +00:00
array_push ( $root [ 'items' ], $feed );
}
2011-06-14 09:43:01 +00:00
$root [ 'param' ] = T_sprintf ( '(%d feeds)' , count ( $root [ 'items' ]));
2010-11-18 10:46:11 +00:00
}
$fl = array ();
$fl [ 'identifier' ] = 'id' ;
$fl [ 'label' ] = 'name' ;
$fl [ 'items' ] = array ( $root );
print json_encode ( $fl );
return ;
}
if ( $subop == " catsortreset " ) {
2011-03-28 11:53:48 +00:00
db_query ( $link , " UPDATE ttrss_feed_categories
2010-11-18 10:46:11 +00:00
SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"] );
return ;
2011-03-28 11:53:48 +00:00
}
2010-11-18 10:46:11 +00:00
if ( $subop == " feedsortreset " ) {
2011-03-28 11:53:48 +00:00
db_query ( $link , " UPDATE ttrss_feeds
2010-11-18 10:46:11 +00:00
SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"] );
return ;
2011-03-28 11:53:48 +00:00
}
2010-11-18 10:46:11 +00:00
if ( $subop == " savefeedorder " ) {
2010-11-18 15:25:27 +00:00
# if ($_POST['payload']) {
# file_put_contents("/tmp/blahblah.txt", $_POST['payload']);
2011-03-28 11:53:48 +00:00
# $data = json_decode($_POST['payload'], true);
2010-11-18 15:25:27 +00:00
# } else {
# $data = json_decode(file_get_contents("/tmp/blahblah.txt"), true);
# }
2010-11-18 10:46:11 +00:00
2010-11-18 15:25:27 +00:00
$data = json_decode ( $_POST [ 'payload' ], true );
2010-11-18 10:46:11 +00:00
if ( is_array ( $data ) && is_array ( $data [ 'items' ])) {
$cat_order_id = 0 ;
$data_map = array ();
foreach ( $data [ 'items' ] as $item ) {
2010-11-18 15:25:27 +00:00
if ( $item [ 'id' ] != 'root' ) {
if ( is_array ( $item [ 'items' ])) {
if ( isset ( $item [ 'items' ][ '_reference' ])) {
$data_map [ $item [ 'id' ]] = array ( $item [ 'items' ]);
} else {
$data_map [ $item [ 'id' ]] =& $item [ 'items' ];
}
}
}
2010-11-18 10:46:11 +00:00
}
foreach ( $data [ 'items' ][ 0 ][ 'items' ] as $item ) {
$id = $item [ '_reference' ];
$bare_id = substr ( $id , strpos ( $id , ':' ) + 1 );
++ $cat_order_id ;
if ( $bare_id > 0 ) {
2011-03-28 11:53:48 +00:00
db_query ( $link , " UPDATE ttrss_feed_categories
2010-11-18 10:46:11 +00:00
SET order_id = '$cat_order_id' WHERE id = '$bare_id' AND
owner_uid = " . $_SESSION["uid"] );
}
$feed_order_id = 0 ;
if ( is_array ( $data_map [ $id ])) {
foreach ( $data_map [ $id ] as $feed ) {
$id = $feed [ '_reference' ];
2010-11-18 15:25:27 +00:00
$feed_id = substr ( $id , strpos ( $id , ':' ) + 1 );
2011-03-28 11:53:48 +00:00
if ( $bare_id != 0 )
2010-11-18 15:25:27 +00:00
$cat_query = " cat_id = ' $bare_id ' " ;
else
$cat_query = " cat_id = NULL " ;
2010-11-18 10:46:11 +00:00
db_query ( $link , " UPDATE ttrss_feeds
2010-11-18 15:25:27 +00:00
SET order_id = '$feed_order_id' ,
$cat_query
WHERE id = '$feed_id' AND
owner_uid = " . $_SESSION["uid"] );
2011-03-28 11:53:48 +00:00
2010-11-18 10:46:11 +00:00
++ $feed_order_id ;
2011-03-28 11:53:48 +00:00
}
2010-11-18 10:46:11 +00:00
}
}
}
return ;
}
2011-03-28 11:53:48 +00:00
if ( $subop == " removeicon " ) {
2010-01-14 09:47:28 +00:00
$feed_id = db_escape_string ( $_REQUEST [ " feed_id " ]);
$result = db_query ( $link , " SELECT id FROM ttrss_feeds
WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) != 0 ) {
unlink ( ICONS_DIR . " / $feed_id .ico " );
}
return ;
}
2010-01-14 08:28:57 +00:00
if ( $subop == " uploadicon " ) {
2010-01-14 09:47:28 +00:00
$icon_file = $_FILES [ 'icon_file' ][ 'tmp_name' ];
$feed_id = db_escape_string ( $_REQUEST [ " feed_id " ]);
if ( is_file ( $icon_file ) && $feed_id ) {
2010-02-10 15:32:35 +00:00
if ( filesize ( $icon_file ) < 20000 ) {
2011-03-28 11:53:48 +00:00
2010-01-14 09:47:28 +00:00
$result = db_query ( $link , " SELECT id FROM ttrss_feeds
WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) != 0 ) {
unlink ( ICONS_DIR . " / $feed_id .ico " );
move_uploaded_file ( $icon_file , ICONS_DIR . " / $feed_id .ico " );
$rc = 0 ;
} else {
$rc = 2 ;
}
} else {
$rc = 1 ;
}
} else {
$rc = 2 ;
}
2010-01-14 08:28:57 +00:00
print " <script type= \" text/javascript \" > " ;
2010-01-14 09:47:28 +00:00
print " parent.uploadIconHandler( $rc ); " ;
2010-01-14 08:28:57 +00:00
print " </script> " ;
return ;
}
2010-11-14 20:46:49 +00:00
if ( $subop == " editfeed " ) {
2006-10-01 10:05:20 +00:00
$feed_id = db_escape_string ( $_REQUEST [ " id " ]);
2011-03-28 11:53:48 +00:00
$result = db_query ( $link ,
2006-10-01 10:05:20 +00:00
" SELECT * FROM ttrss_feeds WHERE id = ' $feed_id ' AND
owner_uid = " . $_SESSION["uid"] );
2007-05-19 14:09:16 +00:00
$title = htmlspecialchars ( db_fetch_result ( $result ,
0 , " title " ));
2006-10-01 10:05:20 +00:00
2010-11-20 12:29:50 +00:00
print " <input dojoType= \" dijit.form.TextBox \" style= \" display : none \" name= \" id \" value= \" $feed_id\ " > " ;
print " <input dojoType= \" dijit.form.TextBox \" style= \" display : none \" name= \" op \" value= \" pref-feeds \" > " ;
print " <input dojoType= \" dijit.form.TextBox \" style= \" display : none \" name= \" subop \" value= \" editSave \" > " ;
2006-10-01 10:05:20 +00:00
2008-08-06 07:51:28 +00:00
print " <div class= \" dlgSec \" > " . __ ( " Feed " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
2006-10-01 10:05:20 +00:00
2008-08-06 07:51:28 +00:00
/* Title */
2010-11-20 12:29:50 +00:00
print " <input dojoType= \" dijit.form.ValidationTextBox \" required= \" 1 \"
2010-11-20 18:06:36 +00:00
placeHolder = \ " " . __ ( " Feed Title " ) . " \"
2010-11-20 12:29:50 +00:00
style = \ " font-size : 16px; width: 20em \" name= \" title \" value= \" $title\ " > " ;
2008-08-06 07:51:28 +00:00
/* Feed URL */
2006-10-01 10:05:20 +00:00
$feed_url = db_fetch_result ( $result , 0 , " feed_url " );
2007-05-19 14:09:16 +00:00
$feed_url = htmlspecialchars ( db_fetch_result ( $result ,
0 , " feed_url " ));
2008-08-06 07:51:28 +00:00
2010-11-21 19:55:57 +00:00
print " <hr/> " ;
2008-08-06 07:51:28 +00:00
print __ ( 'URL:' ) . " " ;
2010-11-20 12:29:50 +00:00
print " <input dojoType= \" dijit.form.ValidationTextBox \" required= \" 1 \"
2010-11-20 18:06:36 +00:00
placeHolder = \ " " . __ ( " Feed URL " ) . " \"
2010-11-20 12:29:50 +00:00
regExp = '^(http|https)://.*' style = \ " width : 20em \"
2008-08-06 07:51:28 +00:00
name = \ " feed_url \" value= \" $feed_url\ " > " ;
2011-04-08 11:45:39 +00:00
$last_error = db_fetch_result ( $result , 0 , " last_error " );
if ( $last_error ) {
print " <span title= \" " . htmlspecialchars ( $last_error ) . " \"
class = \ " feed_error \" >(error)</span> " ;
}
2008-08-06 07:51:28 +00:00
/* Category */
2006-10-01 10:05:20 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
$cat_id = db_fetch_result ( $result , 0 , " cat_id " );
2010-11-21 19:55:57 +00:00
print " <hr/> " ;
2008-08-06 07:51:28 +00:00
print __ ( 'Place in category:' ) . " " ;
2006-10-01 10:05:20 +00:00
2011-03-28 11:53:48 +00:00
print_feed_cat_select ( $link , " cat_id " , $cat_id ,
2010-11-20 12:29:50 +00:00
'dojoType="dijit.form.Select"' );
2006-10-01 10:05:20 +00:00
}
2008-08-06 07:51:28 +00:00
print " </div> " ;
2006-10-01 10:05:20 +00:00
2008-08-06 08:43:17 +00:00
print " <div class= \" dlgSec \" > " . __ ( " Update " ) . " </div> " ;
2008-08-06 07:51:28 +00:00
print " <div class= \" dlgSecCont \" > " ;
2006-10-01 10:05:20 +00:00
2008-08-06 07:51:28 +00:00
/* Update Interval */
2006-10-01 10:05:20 +00:00
2008-08-06 07:51:28 +00:00
$update_interval = db_fetch_result ( $result , 0 , " update_interval " );
2011-03-28 11:53:48 +00:00
print_select_hash ( " update_interval " , $update_interval , $update_intervals ,
2010-11-20 12:29:50 +00:00
'dojoType="dijit.form.Select"' );
2008-01-25 17:46:01 +00:00
2008-08-06 07:51:28 +00:00
/* Update method */
2011-03-28 11:53:48 +00:00
$update_method = db_fetch_result ( $result , 0 , " update_method " ,
2010-11-20 12:29:50 +00:00
'dojoType="dijit.form.Select"' );
2008-08-06 07:51:28 +00:00
2010-06-30 09:16:20 +00:00
print " " . __ ( 'using' ) . " " ;
2010-11-20 12:29:50 +00:00
print_select_hash ( " update_method " , $update_method , $update_methods ,
2011-03-28 11:53:48 +00:00
'dojoType="dijit.form.Select"' );
2008-01-25 17:46:01 +00:00
2009-01-20 15:01:20 +00:00
$purge_interval = db_fetch_result ( $result , 0 , " purge_interval " );
2008-08-06 07:51:28 +00:00
2009-01-20 12:35:59 +00:00
/* Purge intl */
2011-11-10 11:46:24 +00:00
print " <hr/> " ;
print __ ( 'Article purging:' ) . " " ;
2009-01-20 15:01:20 +00:00
2011-11-10 11:46:24 +00:00
print_select_hash ( " purge_interval " , $purge_interval , $purge_intervals ,
'dojoType="dijit.form.Select" ' .
(( FORCE_ARTICLE_PURGE == 0 ) ? " " : 'disabled="1"' ));
2008-08-06 07:51:28 +00:00
print " </div> " ;
print " <div class= \" dlgSec \" > " . __ ( " Authentication " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
2007-05-19 14:09:16 +00:00
$auth_login = htmlspecialchars ( db_fetch_result ( $result , 0 , " auth_login " ));
2006-10-01 10:05:20 +00:00
2010-11-20 18:06:36 +00:00
# print "<table>";
2009-05-12 09:06:01 +00:00
2010-11-20 18:06:36 +00:00
# print "<tr><td>" . __('Login:') . "</td><td>";
2009-05-12 09:06:01 +00:00
2010-11-22 13:26:00 +00:00
print " <input dojoType= \" dijit.form.TextBox \" id= \" feedEditDlg_login \"
2010-11-20 18:06:36 +00:00
placeHolder = \ " " . __ ( " Login " ) . " \"
2010-11-21 19:55:57 +00:00
name = \ " auth_login \" value= \" $auth_login\ " >< hr /> " ;
2008-08-06 07:51:28 +00:00
2010-11-20 18:06:36 +00:00
# print "</tr><tr><td>" . __("Password:") . "</td><td>";
2006-10-01 10:05:20 +00:00
2007-05-19 14:09:16 +00:00
$auth_pass = htmlspecialchars ( db_fetch_result ( $result , 0 , " auth_pass " ));
2006-10-01 10:05:20 +00:00
2011-03-28 11:53:48 +00:00
print " <input dojoType= \" dijit.form.TextBox \" type= \" password \" name= \" auth_pass \"
2010-11-20 18:06:36 +00:00
placeHolder = \ " " . __ ( " Password " ) . " \"
2008-08-06 07:51:28 +00:00
value = \ " $auth_pass\ " > " ;
2006-10-01 10:05:20 +00:00
2010-11-22 13:26:00 +00:00
print " <div dojoType= \" dijit.Tooltip \" connectId= \" feedEditDlg_login \" position= \" below \" >
" .__('<b>Hint:</b> you need to fill in your login information if your feed requires authentication, except for Twitter feeds.'). "
</ div > " ;
2010-11-20 18:06:36 +00:00
# print "</td></tr></table>";
2009-05-12 09:06:01 +00:00
2008-08-06 07:51:28 +00:00
print " </div> " ;
print " <div class= \" dlgSec \" > " . __ ( " Options " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
2006-10-01 10:05:20 +00:00
2010-11-20 12:29:50 +00:00
# print "<div style=\"line-height : 100%\">";
2006-10-01 10:05:20 +00:00
2008-09-30 11:34:49 +00:00
$private = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " private " ));
if ( $private ) {
2010-11-20 12:29:50 +00:00
$checked = " checked= \" 1 \" " ;
2008-09-30 11:34:49 +00:00
} else {
$checked = " " ;
}
2011-03-28 11:53:48 +00:00
print " <input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" name= \" private \" id= \" private \"
2010-01-11 12:54:14 +00:00
$checked >& nbsp ; < label for = \ " private \" > " . __ ( 'Hide from Popular feeds' ) . " </label> " ;
2006-10-01 10:05:20 +00:00
$rtl_content = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " rtl_content " ));
if ( $rtl_content ) {
2010-11-20 12:29:50 +00:00
$checked = " checked= \" 1 \" " ;
2006-10-01 10:05:20 +00:00
} else {
$checked = " " ;
}
2010-11-21 19:55:57 +00:00
print " <hr/><input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" id= \" rtl_content \" name= \" rtl_content \"
2008-08-06 07:51:28 +00:00
$checked >& nbsp ; < label for = \ " rtl_content \" > " . __ ( 'Right-to-left content' ) . " </label> " ;
2006-10-01 10:05:20 +00:00
$include_in_digest = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " include_in_digest " ));
if ( $include_in_digest ) {
2010-11-20 12:29:50 +00:00
$checked = " checked= \" 1 \" " ;
2006-10-01 10:05:20 +00:00
} else {
$checked = " " ;
}
2011-03-28 11:53:48 +00:00
print " <hr/><input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" id= \" include_in_digest \"
2006-10-01 10:05:20 +00:00
name = \ " include_in_digest \"
2008-08-06 07:51:28 +00:00
$checked >& nbsp ; < label for = \ " include_in_digest \" > " . __ ( 'Include in e-mail digest' ) . " </label> " ;
2006-10-01 10:05:20 +00:00
2009-10-06 10:15:29 +00:00
$always_display_enclosures = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " always_display_enclosures " ));
if ( $always_display_enclosures ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
2011-03-28 11:53:48 +00:00
print " <hr/><input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" id= \" always_display_enclosures \"
2009-10-06 10:15:29 +00:00
name = \ " always_display_enclosures \"
$checked >& nbsp ; < label for = \ " always_display_enclosures \" > " . __ ( 'Always display image attachments' ) . " </label> " ;
2007-08-26 04:00:30 +00:00
$cache_images = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " cache_images " ));
if ( $cache_images ) {
2010-11-20 12:29:50 +00:00
$checked = " checked= \" 1 \" " ;
2007-08-26 04:00:30 +00:00
} else {
$checked = " " ;
}
2011-01-26 08:38:07 +00:00
if ( SIMPLEPIE_CACHE_IMAGES ) {
2011-03-28 11:53:48 +00:00
print " <hr/><input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" id= \" cache_images \"
2010-11-19 15:27:47 +00:00
name = \ " cache_images \"
$checked >& nbsp ; < label for = \ " cache_images \" > " .
__ ( 'Cache images locally (SimplePie only)' ) . " </label> " ;
2011-01-26 08:38:07 +00:00
}
2006-10-01 10:05:20 +00:00
2011-03-29 07:54:44 +00:00
$mark_unread_on_update = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " mark_unread_on_update " ));
if ( $mark_unread_on_update ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
print " <hr/><input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" id= \" mark_unread_on_update \"
name = \ " mark_unread_on_update \"
$checked >& nbsp ; < label for = \ " mark_unread_on_update \" > " . __ ( 'Mark updated articles as unread' ) . " </label> " ;
2011-03-29 08:09:42 +00:00
$update_on_checksum_change = sql_bool_to_bool ( db_fetch_result ( $result , 0 , " update_on_checksum_change " ));
if ( $update_on_checksum_change ) {
$checked = " checked " ;
} else {
$checked = " " ;
}
print " <hr/><input dojoType= \" dijit.form.CheckBox \" type= \" checkbox \" id= \" update_on_checksum_change \"
name = \ " update_on_checksum_change \"
$checked >& nbsp ; < label for = \ " update_on_checksum_change \" > " . __ ( 'Mark posts as updated on content change' ) . " </label> " ;
2010-11-20 12:29:50 +00:00
# print "</div>";
2008-08-06 07:51:28 +00:00
print " </div> " ;
2006-10-01 10:05:20 +00:00
2010-01-14 08:28:57 +00:00
/* Icon */
2010-01-14 09:47:28 +00:00
print " <div class= \" dlgSec \" > " . __ ( " Icon " ) . " </div> " ;
2010-01-14 08:28:57 +00:00
print " <div class= \" dlgSecCont \" > " ;
print " <iframe name= \" icon_upload_iframe \"
style = \ " width: 400px; height: 100px; display: none; \" ></iframe> " ;
print " <form style='display : block' target= \" icon_upload_iframe \"
2011-03-28 11:53:48 +00:00
enctype = \ " multipart/form-data \" method= \" POST \"
2010-01-14 08:28:57 +00:00
action = \ " backend.php \" >
2010-01-14 09:47:28 +00:00
< input id = \ " icon_file \" size= \" 10 \" name= \" icon_file \" type= \" file \" >
2010-01-14 08:28:57 +00:00
< input type = \ " hidden \" name= \" op \" value= \" pref-feeds \" >
2010-01-14 09:47:28 +00:00
< input type = \ " hidden \" name= \" feed_id \" value= \" $feed_id\ " >
2010-01-14 08:28:57 +00:00
< input type = \ " hidden \" name= \" subop \" value= \" uploadicon \" >
2010-11-20 12:29:50 +00:00
< button dojoType = \ " dijit.form.Button \" onclick= \" return uploadFeedIcon(); \"
2010-01-14 08:28:57 +00:00
type = \ " submit \" > " . __ ( 'Replace' ) . " </button>
2010-11-20 12:29:50 +00:00
< button dojoType = \ " dijit.form.Button \" onclick= \" return removeFeedIcon( $feed_id ); \"
2010-01-14 09:47:28 +00:00
type = \ " submit \" > " . __ ( 'Remove' ) . " </button>
2010-01-14 08:28:57 +00:00
</ form > " ;
2010-01-14 09:47:28 +00:00
print " </div> " ;
2010-01-14 08:28:57 +00:00
2008-11-17 05:49:06 +00:00
$title = htmlspecialchars ( $title , ENT_QUOTES );
2008-08-06 07:51:28 +00:00
print " <div class='dlgButtons'>
2008-08-07 03:17:24 +00:00
< div style = \ " float : left \" >
2010-11-20 12:29:50 +00:00
< button dojoType = \ " dijit.form.Button \" onclick='return unsubscribeFeed( $feed_id , \" $title\ " ) ' > " .
2011-04-02 10:39:46 +00:00
__ ( 'Unsubscribe' ) . " </button> " ;
2011-04-26 14:42:05 +00:00
if ( PUBSUBHUBBUB_ENABLED ) {
$pubsub_state = db_fetch_result ( $result , 0 , " pubsub_state " );
$pubsub_btn_disabled = ( $pubsub_state == 2 ) ? " " : " disabled= \" 1 \" " ;
2011-04-02 10:39:46 +00:00
2011-04-26 14:42:05 +00:00
print " <button dojoType= \" dijit.form.Button \" id= \" pubsubReset_Btn \" $pubsub_btn_disabled
onclick = 'return resetPubSub($feed_id, \"$title\")' > " .__('Resubscribe to push updates').
" </button> " ;
}
2011-04-02 10:39:46 +00:00
print " </div> " ;
print " <div dojoType= \" dijit.Tooltip \" connectId= \" pubsubReset_Btn \" position= \" below \" > " .
__ ( 'Resets PubSubHubbub subscription status for push-enabled feeds.' ) . " </div> " ;
print " <button dojoType= \" dijit.form.Button \" onclick= \" return dijit.byId('feedEditDlg').execute() \" > " . __ ( 'Save' ) . " </button>
2010-11-20 12:29:50 +00:00
< button dojoType = \ " dijit.form.Button \" onclick= \" return dijit.byId('feedEditDlg').hide() \" > " . __ ( 'Cancel' ) . " </button>
</ div > " ;
2010-11-14 20:46:49 +00:00
2006-10-01 10:05:20 +00:00
return ;
}
2008-09-11 06:06:25 +00:00
if ( $subop == " editfeeds " ) {
$feed_ids = db_escape_string ( $_REQUEST [ " ids " ]);
2010-11-21 08:55:28 +00:00
print " <input dojoType= \" dijit.form.TextBox \" style= \" display : none \" name= \" ids \" value= \" $feed_ids\ " > " ;
print " <input dojoType= \" dijit.form.TextBox \" style= \" display : none \" name= \" op \" value= \" pref-feeds \" > " ;
print " <input dojoType= \" dijit.form.TextBox \" style= \" display : none \" name= \" subop \" value= \" batchEditSave \" > " ;
2008-09-11 06:06:25 +00:00
print " <div class= \" dlgSec \" > " . __ ( " Feed " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
/* Title */
2011-03-28 11:53:48 +00:00
print " <input dojoType= \" dijit.form.ValidationTextBox \"
2010-11-21 08:55:28 +00:00
disabled = \ " 1 \" style= \" font-size : 16px; width : 20em; \" required= \" 1 \"
name = \ " title \" value= \" $title\ " > " ;
2008-09-11 06:06:25 +00:00
batch_edit_cbox ( " title " );
/* Feed URL */
print " <br/> " ;
print __ ( 'URL:' ) . " " ;
2010-11-21 08:55:28 +00:00
print " <input dojoType= \" dijit.form.ValidationTextBox \" disabled= \" 1 \"
required = \ " 1 \" regExp='^(http|https)://.*' style= \" width : 20em \"
2008-09-11 06:06:25 +00:00
name = \ " feed_url \" value= \" $feed_url\ " > " ;
batch_edit_cbox ( " feed_url " );
/* Category */
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
print " <br/> " ;
print __ ( 'Place in category:' ) . " " ;
2011-03-28 11:53:48 +00:00
print_feed_cat_select ( $link , " cat_id " , $cat_id ,
2010-11-21 08:55:28 +00:00
'disabled="1" dojoType="dijit.form.Select"' );
2008-09-11 06:06:25 +00:00
batch_edit_cbox ( " cat_id " );
}
print " </div> " ;
print " <div class= \" dlgSec \" > " . __ ( " Update " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
/* Update Interval */
2011-03-28 11:53:48 +00:00
print_select_hash ( " update_interval " , $update_interval , $update_intervals ,
2010-11-21 08:55:28 +00:00
'disabled="1" dojoType="dijit.form.Select"' );
2008-09-11 06:06:25 +00:00
batch_edit_cbox ( " update_interval " );
/* Update method */
2010-06-30 09:16:20 +00:00
print " " . __ ( 'using' ) . " " ;
2011-03-28 11:53:48 +00:00
print_select_hash ( " update_method " , $update_method , $update_methods ,
'disabled="1" dojoType="dijit.form.Select"' );
2010-06-30 09:16:20 +00:00
batch_edit_cbox ( " update_method " );
2008-09-11 06:06:25 +00:00
/* Purge intl */
2010-11-21 08:55:28 +00:00
if ( FORCE_ARTICLE_PURGE == 0 ) {
2008-09-11 06:06:25 +00:00
2009-01-20 12:35:59 +00:00
print " <br/> " ;
2008-09-11 06:06:25 +00:00
2009-01-20 12:35:59 +00:00
print __ ( 'Article purging:' ) . " " ;
2008-09-11 06:06:25 +00:00
2009-01-20 12:35:59 +00:00
print_select_hash ( " purge_interval " , $purge_interval , $purge_intervals ,
2010-11-21 08:55:28 +00:00
'disabled="1" dojoType="dijit.form.Select"' );
2009-01-20 12:35:59 +00:00
batch_edit_cbox ( " purge_interval " );
}
2008-09-11 06:06:25 +00:00
print " </div> " ;
print " <div class= \" dlgSec \" > " . __ ( " Authentication " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
2011-03-28 11:53:48 +00:00
print " <input dojoType= \" dijit.form.TextBox \"
2010-11-21 08:55:28 +00:00
placeHolder = \ " " . __ ( " Login " ) . " \" disabled= \" 1 \"
2008-09-11 06:06:25 +00:00
name = \ " auth_login \" value= \" $auth_login\ " > " ;
batch_edit_cbox ( " auth_login " );
2011-03-28 11:53:48 +00:00
print " <br/><input dojoType= \" dijit.form.TextBox \" type= \" password \" name= \" auth_pass \"
2010-11-21 08:55:28 +00:00
placeHolder = \ " " . __ ( " Password " ) . " \" disabled= \" 1 \"
2008-09-11 06:06:25 +00:00
value = \ " $auth_pass\ " > " ;
batch_edit_cbox ( " auth_pass " );
print " </div> " ;
print " <div class= \" dlgSec \" > " . __ ( " Options " ) . " </div> " ;
print " <div class= \" dlgSecCont \" > " ;
2011-03-28 11:53:48 +00:00
print " <input disabled= \" 1 \" type= \" checkbox \" name= \" private \" id= \" private \"
2010-11-21 08:55:28 +00:00
dojoType = \ " dijit.form.CheckBox \" > <label id= \" private_l \" class='insensitive' for= \" private \" > " . __ ( 'Hide from Popular feeds' ) . " </label> " ;
2008-09-11 06:06:25 +00:00
print " " ; batch_edit_cbox ( " private " , " private_l " );
2010-11-21 08:55:28 +00:00
print " <br/><input disabled= \" 1 \" type= \" checkbox \" id= \" rtl_content \" name= \" rtl_content \"
dojoType = \ " dijit.form.CheckBox \" > <label class='insensitive' id= \" rtl_content_l \" for= \" rtl_content \" > " . __ ( 'Right-to-left content' ) . " </label> " ;
2008-09-11 06:06:25 +00:00
print " " ; batch_edit_cbox ( " rtl_content " , " rtl_content_l " );
2011-03-28 11:53:48 +00:00
print " <br/><input disabled= \" 1 \" type= \" checkbox \" id= \" include_in_digest \"
name = \ " include_in_digest \"
2010-11-21 08:55:28 +00:00
dojoType = \ " dijit.form.CheckBox \" > <label id= \" include_in_digest_l \" class='insensitive' for= \" include_in_digest \" > " . __ ( 'Include in e-mail digest' ) . " </label> " ;
2008-09-11 06:06:25 +00:00
print " " ; batch_edit_cbox ( " include_in_digest " , " include_in_digest_l " );
2011-03-28 11:53:48 +00:00
print " <br/><input disabled= \" 1 \" type= \" checkbox \" id= \" always_display_enclosures \"
name = \ " always_display_enclosures \"
2010-11-21 08:55:28 +00:00
dojoType = \ " dijit.form.CheckBox \" > <label id= \" always_display_enclosures_l \" class='insensitive' for= \" always_display_enclosures \" > " . __ ( 'Always display image attachments' ) . " </label> " ;
2009-10-06 10:36:25 +00:00
print " " ; batch_edit_cbox ( " always_display_enclosures " , " always_display_enclosures_l " );
2011-01-26 08:38:07 +00:00
if ( SIMPLEPIE_CACHE_IMAGES ) {
2011-03-28 11:53:48 +00:00
print " <br/><input disabled= \" 1 \" type= \" checkbox \" id= \" cache_images \"
name = \ " cache_images \"
dojoType = \ " dijit.form.CheckBox \" > <label class='insensitive' id= \" cache_images_l \"
2008-09-11 06:06:25 +00:00
for = \ " cache_images \" > " .
__ ( 'Cache images locally' ) . " </label> " ;
2011-03-28 11:53:48 +00:00
2008-09-11 06:06:25 +00:00
2011-01-26 08:38:07 +00:00
print " " ; batch_edit_cbox ( " cache_images " , " cache_images_l " );
}
2008-09-11 06:06:25 +00:00
2011-03-29 07:54:44 +00:00
print " <br/><input disabled= \" 1 \" type= \" checkbox \" id= \" mark_unread_on_update \"
name = \ " mark_unread_on_update \"
dojoType = \ " dijit.form.CheckBox \" > <label id= \" mark_unread_on_update_l \" class='insensitive' for= \" mark_unread_on_update \" > " . __ ( 'Mark updated articles as unread' ) . " </label> " ;
print " " ; batch_edit_cbox ( " mark_unread_on_update " , " mark_unread_on_update_l " );
2011-03-29 08:09:42 +00:00
print " <br/><input disabled= \" 1 \" type= \" checkbox \" id= \" update_on_checksum_change \"
name = \ " update_on_checksum_change \"
dojoType = \ " dijit.form.CheckBox \" > <label id= \" update_on_checksum_change_l \" class='insensitive' for= \" update_on_checksum_change \" > " . __ ( 'Mark posts as updated on content change' ) . " </label> " ;
print " " ; batch_edit_cbox ( " update_on_checksum_change " , " update_on_checksum_change_l " );
2011-03-29 07:54:44 +00:00
2008-09-11 06:06:25 +00:00
print " </div> " ;
print " <div class='dlgButtons'>
2011-03-28 11:53:48 +00:00
< button dojoType = \ " dijit.form.Button \"
2010-11-21 15:01:14 +00:00
onclick = \ " return dijit.byId('feedEditDlg').execute() \" > " .
__ ( 'Save' ) . " </button>
< button dojoType = \ " dijit.form.Button \"
onclick = \ " return dijit.byId('feedEditDlg').hide() \" > " .
__ ( 'Cancel' ) . " </button>
2008-09-11 06:06:25 +00:00
</ div > " ;
2011-03-28 11:53:48 +00:00
2008-09-11 06:06:25 +00:00
return ;
}
2008-09-11 06:36:41 +00:00
if ( $subop == " editSave " || $subop == " batchEditSave " ) {
2006-10-01 10:05:20 +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 " ]);
2008-09-11 06:36:41 +00:00
$feed_id = db_escape_string ( $_POST [ " id " ]); /* editSave */
$feed_ids = db_escape_string ( $_POST [ " ids " ]); /* batchEditSave */
2006-10-01 10:05:20 +00:00
$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 " ]));
$private = checkbox_to_sql_bool ( db_escape_string ( $_POST [ " private " ]));
$rtl_content = checkbox_to_sql_bool ( db_escape_string ( $_POST [ " rtl_content " ]));
$include_in_digest = checkbox_to_sql_bool (
db_escape_string ( $_POST [ " include_in_digest " ]));
2007-08-26 04:00:30 +00:00
$cache_images = checkbox_to_sql_bool (
db_escape_string ( $_POST [ " cache_images " ]));
2008-01-25 17:46:01 +00:00
$update_method = ( int ) db_escape_string ( $_POST [ " update_method " ]);
2006-10-01 10:05:20 +00:00
2009-10-06 10:15:29 +00:00
$always_display_enclosures = checkbox_to_sql_bool (
db_escape_string ( $_POST [ " always_display_enclosures " ]));
2011-03-29 07:54:44 +00:00
$mark_unread_on_update = checkbox_to_sql_bool (
db_escape_string ( $_POST [ " mark_unread_on_update " ]));
2011-03-29 08:09:42 +00:00
$update_on_checksum_change = checkbox_to_sql_bool (
db_escape_string ( $_POST [ " update_on_checksum_change " ]));
2011-03-28 11:53:48 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2006-10-01 10:05:20 +00:00
if ( $cat_id && $cat_id != 0 ) {
$category_qpart = " cat_id = ' $cat_id ', " ;
$category_qpart_nocomma = " cat_id = ' $cat_id ' " ;
} else {
$category_qpart = 'cat_id = NULL,' ;
$category_qpart_nocomma = 'cat_id = NULL' ;
}
} else {
$category_qpart = " " ;
$category_qpart_nocomma = " " ;
}
2010-06-30 08:57:11 +00:00
if ( SIMPLEPIE_CACHE_IMAGES ) {
2007-08-26 04:00:30 +00:00
$cache_images_qpart = " cache_images = $cache_images , " ;
} else {
$cache_images_qpart = " " ;
}
2008-09-11 06:36:41 +00:00
if ( $subop == " editSave " ) {
2011-03-28 11:53:48 +00:00
$result = db_query ( $link , " UPDATE ttrss_feeds SET
2010-11-10 09:05:55 +00:00
$category_qpart
2008-09-11 06:36:41 +00:00
title = '$feed_title' , feed_url = '$feed_link' ,
update_interval = '$upd_intl' ,
purge_interval = '$purge_intl' ,
auth_login = '$auth_login' ,
auth_pass = '$auth_pass' ,
private = $private ,
rtl_content = $rtl_content ,
$cache_images_qpart
include_in_digest = $include_in_digest ,
2009-10-06 10:15:29 +00:00
always_display_enclosures = $always_display_enclosures ,
2011-03-29 07:54:44 +00:00
mark_unread_on_update = $mark_unread_on_update ,
2011-03-29 08:09:42 +00:00
update_on_checksum_change = $update_on_checksum_change ,
2008-09-11 06:36:41 +00:00
update_method = '$update_method'
2008-09-17 05:11:53 +00:00
WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"] );
2008-09-11 06:36:41 +00:00
} else if ( $subop == " batchEditSave " ) {
$feed_data = array ();
2006-10-01 10:05:20 +00:00
2008-09-11 06:36:41 +00:00
foreach ( array_keys ( $_POST ) as $k ) {
if ( $k != " op " && $k != " subop " && $k != " ids " ) {
$feed_data [ $k ] = $_POST [ $k ];
}
}
db_query ( $link , " BEGIN " );
foreach ( array_keys ( $feed_data ) as $k ) {
$qpart = " " ;
switch ( $k ) {
2011-03-28 11:53:48 +00:00
case " title " :
2008-09-11 06:36:41 +00:00
$qpart = " title = ' $feed_title ' " ;
break ;
case " feed_url " :
$qpart = " feed_url = ' $feed_link ' " ;
break ;
case " update_interval " :
$qpart = " update_interval = ' $upd_intl ' " ;
break ;
case " purge_interval " :
$qpart = " purge_interval = ' $purge_intl ' " ;
break ;
case " auth_login " :
$qpart = " auth_login = ' $auth_login ' " ;
break ;
case " auth_pass " :
$qpart = " auth_pass = ' $auth_pass ' " ;
break ;
case " private " :
$qpart = " private = ' $private ' " ;
break ;
case " include_in_digest " :
$qpart = " include_in_digest = ' $include_in_digest ' " ;
break ;
2009-10-06 10:36:25 +00:00
case " always_display_enclosures " :
$qpart = " always_display_enclosures = ' $always_display_enclosures ' " ;
break ;
2011-03-29 07:54:44 +00:00
case " mark_unread_on_update " :
$qpart = " mark_unread_on_update = ' $mark_unread_on_update ' " ;
break ;
2011-03-29 08:09:42 +00:00
case " update_on_checksum_change " :
$qpart = " update_on_checksum_change = ' $update_on_checksum_change ' " ;
break ;
2008-09-11 06:45:39 +00:00
case " cache_images " :
$qpart = " cache_images = ' $cache_images ' " ;
break ;
case " rtl_content " :
$qpart = " rtl_content = ' $rtl_content ' " ;
break ;
2008-09-11 06:36:41 +00:00
case " update_method " :
$qpart = " update_method = ' $update_method ' " ;
break ;
case " cat_id " :
$qpart = $category_qpart_nocomma ;
break ;
}
if ( $qpart ) {
2008-09-11 07:01:34 +00:00
db_query ( $link ,
2008-09-11 06:36:41 +00:00
" UPDATE ttrss_feeds SET $qpart WHERE id IN ( $feed_ids )
2008-09-11 06:52:19 +00:00
AND owner_uid = " . $_SESSION["uid"] );
print " <br/> " ;
2008-09-11 06:36:41 +00:00
}
}
db_query ( $link , " COMMIT " );
2006-10-01 10:05:20 +00:00
}
2010-11-21 08:55:28 +00:00
return ;
2006-10-01 10:05:20 +00:00
}
2011-04-02 10:39:46 +00:00
if ( $subop == " resetPubSub " ) {
$ids = db_escape_string ( $_REQUEST [ " ids " ]);
db_query ( $link , " UPDATE ttrss_feeds SET pubsub_state = 0 WHERE id IN ( $ids )
AND owner_uid = " . $_SESSION["uid"] );
return ;
}
2006-10-01 10:05:20 +00:00
if ( $subop == " remove " ) {
2009-12-29 15:49:27 +00:00
$ids = split ( " , " , db_escape_string ( $_REQUEST [ " ids " ]));
2006-10-01 10:05:20 +00:00
2009-01-18 09:32:45 +00:00
foreach ( $ids as $id ) {
2009-12-28 09:04:21 +00:00
remove_feed ( $link , $id , $_SESSION [ " uid " ]);
2006-10-01 10:05:20 +00:00
}
2010-01-13 20:59:02 +00:00
return ;
2006-10-01 10:05:20 +00:00
}
2007-08-26 04:13:50 +00:00
if ( $subop == " clear " ) {
2009-12-29 15:49:27 +00:00
$id = db_escape_string ( $_REQUEST [ " id " ]);
2007-08-26 04:13:50 +00:00
clear_feed_articles ( $link , $id );
}
2008-04-30 10:12:41 +00:00
if ( $subop == " rescore " ) {
2009-12-29 15:49:27 +00:00
$ids = split ( " , " , db_escape_string ( $_REQUEST [ " ids " ]));
2008-04-30 10:12:41 +00:00
foreach ( $ids as $id ) {
$filters = load_filters ( $link , $id , $_SESSION [ " uid " ], 6 );
2011-03-28 11:53:48 +00:00
$result = db_query ( $link , " SELECT
2010-11-09 18:48:42 +00:00
title , content , link , ref_id , author , " .
SUBSTRING_FOR_DATE . " (updated, 1, 19) AS updated
FROM
2011-03-28 11:53:48 +00:00
ttrss_user_entries , ttrss_entries
WHERE ref_id = id AND feed_id = '$id' AND
2008-04-30 10:12:41 +00:00
owner_uid = " . $_SESSION['uid'] . "
2008-04-30 10:54:26 +00:00
" );
2008-04-30 10:12:41 +00:00
$scores = array ();
while ( $line = db_fetch_assoc ( $result )) {
2010-11-09 18:48:42 +00:00
$tags = get_article_tags ( $link , $line [ " ref_id " ]);
2011-03-28 11:53:48 +00:00
$article_filters = get_article_filters ( $filters , $line [ 'title' ],
$line [ 'content' ], $line [ 'link' ], strtotime ( $line [ 'updated' ]),
2010-11-09 18:48:42 +00:00
$line [ 'author' ], $tags );
2011-03-28 11:53:48 +00:00
2008-04-30 10:12:41 +00:00
$new_score = calculate_article_score ( $article_filters );
if ( ! $scores [ $new_score ]) $scores [ $new_score ] = array ();
array_push ( $scores [ $new_score ], $line [ 'ref_id' ]);
}
foreach ( array_keys ( $scores ) as $s ) {
if ( $s > 1000 ) {
2011-03-28 11:53:48 +00:00
db_query ( $link , " UPDATE ttrss_user_entries SET score = ' $s ',
2008-04-30 10:12:41 +00:00
marked = true WHERE
2008-05-04 04:46:14 +00:00
ref_id IN ( " . join(',', $scores[$s] ) . " ) " );
2008-05-17 02:34:49 +00:00
} else if ( $s < - 500 ) {
2011-03-28 11:53:48 +00:00
db_query ( $link , " UPDATE ttrss_user_entries SET score = ' $s ',
2008-05-17 02:34:49 +00:00
unread = false WHERE
ref_id IN ( " . join(',', $scores[$s] ) . " ) " );
2008-05-04 04:46:14 +00:00
} else {
db_query ( $link , " UPDATE ttrss_user_entries SET score = ' $s ' WHERE
ref_id IN ( " . join(',', $scores[$s] ) . " ) " );
}
}
}
print __ ( " All done. " );
}
if ( $subop == " rescoreAll " ) {
2011-03-28 11:53:48 +00:00
$result = db_query ( $link ,
2008-05-04 04:46:14 +00:00
" SELECT id FROM ttrss_feeds WHERE owner_uid = " . $_SESSION [ 'uid' ]);
while ( $feed_line = db_fetch_assoc ( $result )) {
$id = $feed_line [ " id " ];
$filters = load_filters ( $link , $id , $_SESSION [ " uid " ], 6 );
2011-03-28 11:53:48 +00:00
$tmp_result = db_query ( $link , " SELECT
2010-11-09 18:48:42 +00:00
title , content , link , ref_id , author , " .
SUBSTRING_FOR_DATE . " (updated, 1, 19) AS updated
FROM
2011-03-28 11:53:48 +00:00
ttrss_user_entries , ttrss_entries
WHERE ref_id = id AND feed_id = '$id' AND
2008-05-04 04:46:14 +00:00
owner_uid = " . $_SESSION['uid'] . "
" );
$scores = array ();
while ( $line = db_fetch_assoc ( $tmp_result )) {
2010-11-09 18:48:42 +00:00
$tags = get_article_tags ( $link , $line [ " ref_id " ]);
2011-03-28 11:53:48 +00:00
$article_filters = get_article_filters ( $filters , $line [ 'title' ],
$line [ 'content' ], $line [ 'link' ], strtotime ( $line [ 'updated' ]),
2010-11-09 18:48:42 +00:00
$line [ 'author' ], $tags );
2008-05-04 04:46:14 +00:00
$new_score = calculate_article_score ( $article_filters );
if ( ! $scores [ $new_score ]) $scores [ $new_score ] = array ();
array_push ( $scores [ $new_score ], $line [ 'ref_id' ]);
}
foreach ( array_keys ( $scores ) as $s ) {
if ( $s > 1000 ) {
2011-03-28 11:53:48 +00:00
db_query ( $link , " UPDATE ttrss_user_entries SET score = ' $s ',
2008-05-04 04:46:14 +00:00
marked = true WHERE
2008-04-30 10:12:41 +00:00
ref_id IN ( " . join(',', $scores[$s] ) . " ) " );
} else {
db_query ( $link , " UPDATE ttrss_user_entries SET score = ' $s ' WHERE
ref_id IN ( " . join(',', $scores[$s] ) . " ) " );
}
}
}
print __ ( " All done. " );
}
2006-10-01 10:05:20 +00:00
if ( $subop == " add " ) {
2010-01-13 09:48:49 +00:00
$feed_url = db_escape_string ( trim ( $_REQUEST [ " feed_url " ]));
$cat_id = db_escape_string ( $_REQUEST [ " cat_id " ]);
$p_from = db_escape_string ( $_REQUEST [ " from " ]);
2006-10-01 10:05:20 +00:00
2010-01-13 09:48:49 +00:00
/* only read authentication information from POST */
2006-10-31 08:37:40 +00:00
2010-01-13 09:48:49 +00:00
$auth_login = db_escape_string ( trim ( $_POST [ " auth_login " ]));
$auth_pass = db_escape_string ( trim ( $_POST [ " auth_pass " ]));
2006-10-31 08:37:40 +00:00
2010-01-13 09:48:49 +00:00
if ( $p_from != 'tt-rss' ) {
2011-03-29 14:01:04 +00:00
header ( " Content-Type: text/html " );
2010-01-13 09:48:49 +00:00
print " <html>
< head >
< title > Tiny Tiny RSS </ title >
< link rel = \ " stylesheet \" type= \" text/css \" href= \" utility.css \" >
</ head >
< body >
< img class = \ " floatingLogo \" src= \" images/ttrss_logo.png \"
2011-03-28 11:53:48 +00:00
alt = \ " Tiny Tiny RSS \" />
2010-01-13 09:48:49 +00:00
< h1 > Subscribe to feed ...</ h1 > " ;
}
2008-02-24 12:18:08 +00:00
2010-01-13 09:48:49 +00:00
$rc = subscribe_to_feed ( $link , $feed_url , $cat_id , $auth_login , $auth_pass );
switch ( $rc ) {
2011-03-28 11:53:48 +00:00
case 1 :
2010-01-13 09:48:49 +00:00
print_notice ( T_sprintf ( " Subscribed to <b>%s</b>. " , $feed_url ));
break ;
case 2 :
print_error ( T_sprintf ( " Could not subscribe to <b>%s</b>. " , $feed_url ));
break ;
2011-06-14 10:19:22 +00:00
case 3 :
print_error ( T_sprintf ( " No feeds found in <b>%s</b>. " , $feed_url ));
break ;
2010-01-13 09:48:49 +00:00
case 0 :
print_warning ( T_sprintf ( " Already subscribed to <b>%s</b>. " , $feed_url ));
break ;
2011-01-18 13:58:26 +00:00
case 4 :
print_notice ( " Multiple feed URLs found. " );
$feed_urls = get_feeds_from_html ( $feed_url );
break ;
2011-01-15 21:40:47 +00:00
case 5 :
print_error ( T_sprintf ( " Could not subscribe to <b>%s</b>.<br>Can't download the Feed URL. " , $feed_url ));
break ;
2010-01-13 09:48:49 +00:00
}
2006-12-18 05:56:55 +00:00
2010-01-13 09:48:49 +00:00
if ( $p_from != 'tt-rss' ) {
2006-12-18 05:56:55 +00:00
2011-01-18 13:58:26 +00:00
if ( $feed_urls ) {
print " <form action= \" backend.php \" > " ;
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 \" > " ;
2011-03-28 11:53:48 +00:00
2011-01-18 13:58:26 +00:00
print " <select name= \" feed_url \" > " ;
foreach ( $feed_urls as $url => $name ) {
$url = htmlspecialchars ( $url );
$name = htmlspecialchars ( $name );
print " <option value= \" $url\ " > $name </ option > " ;
}
print " <input type= \" submit \" value= \" " . __ ( " Subscribe to selected feed " ) .
" \" > " ;
print " </form> " ;
}
2006-12-18 05:56:55 +00:00
2011-01-18 13:58:26 +00:00
$tp_uri = get_self_url_prefix () . " /prefs.php " ;
$tt_uri = get_self_url_prefix ();
2009-01-22 16:30:37 +00:00
2011-01-15 21:40:47 +00:00
if ( $rc <= 2 ){
$result = db_query ( $link , " SELECT id FROM ttrss_feeds WHERE
feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"] );
2006-10-31 08:37:40 +00:00
2011-01-15 21:40:47 +00:00
$feed_id = db_fetch_result ( $result , 0 , " id " );
} else {
$feed_id = 0 ;
}
2010-01-13 09:48:49 +00:00
print " <p> " ;
if ( $feed_id ) {
2011-03-28 11:53:48 +00:00
print " <form method= \" GET \" style='display: inline'
2010-01-13 09:48:49 +00:00
action = \ " $tp_uri\ " >
< input type = \ " hidden \" name= \" tab \" value= \" feedConfig \" >
< input type = \ " hidden \" name= \" subop \" value= \" editFeed \" >
< input type = \ " hidden \" name= \" subopparam \" value= \" $feed_id\ " >
< input type = \ " submit \" value= \" " . __ ( " Edit subscription options " ) . " \" >
</ form > " ;
2006-10-31 08:37:40 +00:00
}
2007-05-14 05:41:04 +00:00
2010-01-13 09:48:49 +00:00
print " <form style='display: inline' method= \" GET \" action= \" $tt_uri\ " >
< input type = \ " submit \" value= \" " . __ ( " Return to Tiny Tiny RSS " ) . " \" >
</ form ></ p > " ;
print " </body></html> " ;
return ;
2006-10-01 10:05:20 +00:00
}
}
if ( $subop == " categorize " ) {
2010-07-01 08:26:27 +00:00
$ids = split ( " , " , db_escape_string ( $_REQUEST [ " ids " ]));
2006-10-01 10:05:20 +00:00
2010-07-01 08:26:27 +00:00
$cat_id = db_escape_string ( $_REQUEST [ " cat_id " ]);
2006-10-01 10:05:20 +00:00
2010-07-01 08:26:27 +00:00
if ( $cat_id == 0 ) {
$cat_id_qpart = 'NULL' ;
} else {
$cat_id_qpart = " ' $cat_id ' " ;
}
2006-10-01 10:05:20 +00:00
2010-07-01 08:26:27 +00:00
db_query ( $link , " BEGIN " );
2006-10-01 10:05:20 +00:00
2010-07-01 08:26:27 +00:00
foreach ( $ids as $id ) {
2011-03-28 11:53:48 +00:00
2010-07-01 08:26:27 +00:00
db_query ( $link , " UPDATE ttrss_feeds SET cat_id = $cat_id_qpart
2010-11-10 09:05:55 +00:00
WHERE id = '$id'
2010-07-01 08:26:27 +00:00
AND owner_uid = " . $_SESSION["uid"] );
2006-10-01 10:05:20 +00:00
}
2010-07-01 08:26:27 +00:00
db_query ( $link , " COMMIT " );
2006-10-01 10:05:20 +00:00
}
2006-10-04 05:40:00 +00:00
if ( $subop == " editCats " ) {
$action = $_REQUEST [ " action " ];
if ( $action == " save " ) {
2007-08-20 07:29:39 +00:00
$cat_title = db_escape_string ( trim ( $_REQUEST [ " value " ]));
2009-12-29 15:49:27 +00:00
$cat_id = db_escape_string ( $_REQUEST [ " cid " ]);
2007-08-20 07:29:39 +00:00
2009-01-20 16:48:38 +00:00
db_query ( $link , " BEGIN " );
$result = db_query ( $link , " SELECT title FROM ttrss_feed_categories
WHERE id = '$cat_id' AND owner_uid = " . $_SESSION["uid"] );
if ( db_num_rows ( $result ) == 1 ) {
$old_title = db_fetch_result ( $result , 0 , " title " );
2011-03-28 11:53:48 +00:00
2009-01-20 16:48:38 +00:00
if ( $cat_title != " " ) {
$result = db_query ( $link , " UPDATE ttrss_feed_categories SET
2011-03-28 11:53:48 +00:00
title = '$cat_title' WHERE id = '$cat_id' AND
2009-01-20 16:48:38 +00:00
owner_uid = " . $_SESSION["uid"] );
print $cat_title ;
} else {
print $old_title ;
}
} else {
print $_REQUEST [ " value " ];
}
db_query ( $link , " COMMIT " );
2007-08-20 07:29:39 +00:00
return ;
2006-10-04 05:40:00 +00:00
}
if ( $action == " add " ) {
2010-07-01 08:26:27 +00:00
$feed_cat = db_escape_string ( trim ( $_REQUEST [ " cat " ]));
2010-11-07 20:30:05 +00:00
if ( ! add_feed_category ( $link , $feed_cat ))
print_warning ( T_sprintf ( " Category <b> $ %s</b> already exists in the database. " , $feed_cat ));
2010-07-01 08:26:27 +00:00
2006-10-04 05:40:00 +00:00
}
if ( $action == " remove " ) {
2011-03-28 11:53:48 +00:00
2009-12-29 15:49:27 +00:00
$ids = split ( " , " , db_escape_string ( $_REQUEST [ " ids " ]));
2011-03-28 11:53:48 +00:00
2009-12-28 09:04:21 +00:00
foreach ( $ids as $id ) {
remove_feed_category ( $link , $id , $_SESSION [ " uid " ]);
2006-10-04 05:40:00 +00:00
}
}
2010-11-18 19:26:04 +00:00
print " <div dojoType= \" dijit.Toolbar \" >
2010-11-20 18:29:19 +00:00
< input dojoType = \ " dijit.form.ValidationTextBox \" required= \" 1 \" name= \" newcat \" >
< button dojoType = \ " dijit.form.Button \" onclick= \" dijit.byId('feedCatEditDlg').addCategory() \" > " .
__ ( 'Create category' ) . " </button></div> " ;
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
$result = db_query ( $link , " SELECT title,id FROM ttrss_feed_categories
WHERE owner_uid = " . $_SESSION["uid"] . "
ORDER BY title " );
2010-11-18 19:26:04 +00:00
# print "<p>";
2006-10-04 05:40:00 +00:00
if ( db_num_rows ( $result ) != 0 ) {
print " <div class= \" prefFeedCatHolder \" > " ;
2010-11-20 18:29:19 +00:00
# print "<form id=\"feed_cat_edit_form\" onsubmit=\"return false\">";
2006-10-04 05:40:00 +00:00
2011-03-28 11:53:48 +00:00
print " <table width= \" 100% \" class= \" prefFeedCatList \"
2006-10-04 05:40:00 +00:00
cellspacing = \ " 0 \" id= \" prefFeedCatList \" > " ;
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
$lnum = 0 ;
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
while ( $line = db_fetch_assoc ( $result )) {
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
$class = ( $lnum % 2 ) ? " even " : " odd " ;
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
$cat_id = $line [ " id " ];
2007-08-20 07:29:39 +00:00
$this_row_id = " id= \" FCATR- $cat_id\ " " ;
2011-03-28 11:53:48 +00:00
2010-11-18 19:26:04 +00:00
print " <tr class= \" \" $this_row_id > " ;
2011-03-28 11:53:48 +00:00
2007-05-19 14:09:16 +00:00
$edit_title = htmlspecialchars ( $line [ " title " ]);
2011-03-28 11:53:48 +00:00
print " <td width='5%' align='center'><input
onclick = 'toggleSelectRow2(this);' dojoType = \ " dijit.form.CheckBox \"
2010-11-21 09:50:14 +00:00
type = \ " checkbox \" ></td> " ;
2011-03-28 11:53:48 +00:00
2010-11-18 13:44:51 +00:00
print " <td> " ;
2011-03-28 11:53:48 +00:00
# print "<span id=\"FCATT-$cat_id\">" .
# $edit_title . "</span>";
print " <span dojoType= \" dijit.InlineEditBox \"
2010-11-18 13:44:51 +00:00
width = \ " 300px \" autoSave= \" false \"
2011-03-28 11:53:48 +00:00
cat - id = \ " $cat_id\ " > " . $edit_title .
2010-11-18 13:44:51 +00:00
" <script type= \" dojo/method \" event= \" onChange \" args= \" item \" >
var elem = this ;
dojo . xhrPost ({
url : 'backend.php' ,
content : { op : 'pref-feeds' , subop : 'editCats' ,
action : 'save' ,
value : this . value ,
cid : this . srcNodeRef . getAttribute ( 'cat-id' )},
load : function ( response ) {
elem . attr ( 'value' , response );
2010-11-20 18:29:19 +00:00
updateFeedList ();
2010-11-18 13:44:51 +00:00
}
2011-03-28 11:53:48 +00:00
});
2010-11-18 13:44:51 +00:00
</ script >
</ span > " ;
print " </td></tr> " ;
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
++ $lnum ;
}
2011-03-28 11:53:48 +00:00
2006-10-04 05:40:00 +00:00
print " </table> " ;
2010-11-20 18:29:19 +00:00
# print "</form>";
2006-10-04 05:40:00 +00:00
print " </div> " ;
2006-10-04 06:14:16 +00:00
} else {
2007-03-05 09:37:40 +00:00
print " <p> " . __ ( 'No feed categories defined.' ) . " </p> " ;
2006-10-04 06:14:16 +00:00
}
2006-10-04 05:40:00 +00:00
2010-01-12 13:04:59 +00:00
print " <div class='dlgButtons'>
< div style = 'float : left' >
2010-11-20 18:29:19 +00:00
< button dojoType = \ " dijit.form.Button \" onclick= \" dijit.byId('feedCatEditDlg').removeSelected() \" > " .
__ ( 'Remove selected categories' ) . " </button>
2010-01-12 13:04:59 +00:00
</ div > " ;
2006-10-04 05:40:00 +00:00
2010-11-20 18:29:19 +00:00
print " <button dojoType= \" dijit.form.Button \" onclick= \" dijit.byId('feedCatEditDlg').hide() \" > " .
2010-01-12 13:04:59 +00:00
__ ( 'Close this window' ) . " </button></div> " ;
2006-10-04 05:40:00 +00:00
return ;
}
2006-10-01 10:05:20 +00:00
if ( $quiet ) return ;
2010-11-17 11:49:06 +00:00
print " <div dojoType= \" dijit.layout.AccordionContainer \" region= \" center \" > " ;
2010-11-20 21:52:20 +00:00
print " <div id= \" pref-feeds-feeds \" dojoType= \" dijit.layout.AccordionPane \" title= \" " . __ ( 'Feeds' ) . " \" > " ;
2010-11-17 11:49:06 +00:00
2006-12-01 06:26:05 +00:00
$result = db_query ( $link , " SELECT COUNT(id) AS num_errors
2006-10-01 10:05:20 +00:00
FROM ttrss_feeds WHERE last_error != '' AND owner_uid = " . $_SESSION["uid"] );
2006-12-01 06:26:05 +00:00
$num_errors = db_fetch_result ( $result , 0 , " num_errors " );
2006-10-01 10:05:20 +00:00
2006-12-01 06:26:05 +00:00
if ( $num_errors > 0 ) {
2006-10-01 10:05:20 +00:00
2010-11-18 07:15:14 +00:00
$error_button = " <button dojoType= \" dijit.form.Button \"
2011-03-28 11:53:48 +00:00
onclick = \ " showFeedsWithErrors() \" id= \" errorButton \" > " .
2010-11-18 07:15:14 +00:00
__ ( " Feeds with errors " ) . " </button> " ;
// print format_notice("<a href=\"javascript:showFeedsWithErrors()\">".
// __('Some feeds have update errors (click for details)')."</a>");
2006-10-01 10:05:20 +00:00
}
2011-03-28 11:53:48 +00:00
if ( DB_TYPE == " pgsql " ) {
$interval_qpart = " NOW() - INTERVAL '3 months' " ;
} else {
$interval_qpart = " DATE_SUB(NOW(), INTERVAL 3 MONTH) " ;
}
$result = db_query ( $link , " SELECT COUNT(*) AS num_inactive FROM ttrss_feeds WHERE
( SELECT MAX ( updated ) FROM ttrss_entries , ttrss_user_entries WHERE
ttrss_entries . id = ref_id AND
ttrss_user_entries . feed_id = ttrss_feeds . id ) < $interval_qpart AND
ttrss_feeds . owner_uid = " . $_SESSION["uid"] );
$num_inactive = db_fetch_result ( $result , 0 , " num_inactive " );
if ( $num_inactive > 0 ) {
$inactive_button = " <button dojoType= \" dijit.form.Button \"
onclick = \ " showInactiveFeeds() \" > " .
__ ( " Inactive feeds " ) . " </button> " ;
}
2009-12-29 15:49:27 +00:00
$feed_search = db_escape_string ( $_REQUEST [ " search " ]);
2006-10-01 10:05:20 +00:00
2009-12-29 15:49:27 +00:00
if ( array_key_exists ( " search " , $_REQUEST )) {
2006-10-01 10:05:20 +00:00
$_SESSION [ " prefs_feed_search " ] = $feed_search ;
} else {
$feed_search = $_SESSION [ " prefs_feed_search " ];
}
2010-11-17 11:49:06 +00:00
print " <div dojoType= \" dijit.Toolbar \" > " ;
2011-04-20 09:32:40 +00:00
print " <div style='float : right; padding-right : 4px;'>
< input dojoType = \ " dijit.form.TextBox \" id= \" feed_search \" size= \" 20 \" type= \" search \"
2011-09-25 12:49:48 +00:00
value = \ " $feed_search\ " >
2011-04-20 09:32:40 +00:00
< button dojoType = \ " dijit.form.Button \" onclick= \" updateFeedList() \" > " .
__ ( 'Search' ) . " </button>
</ div > " ;
2010-11-17 18:13:41 +00:00
print " <div dojoType= \" dijit.form.DropDownButton \" > " .
2010-11-17 18:39:51 +00:00
" <span> " . __ ( 'Select' ) . " </span> " ;
2010-11-17 18:13:41 +00:00
print " <div dojoType= \" dijit.Menu \" style= \" display: none; \" > " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" dijit.byId('feedTree').model.setAllChecked(true) \"
2010-11-17 18:13:41 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'All' ) . " </div> " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" dijit.byId('feedTree').model.setAllChecked(false) \"
2010-11-17 18:13:41 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'None' ) . " </div> " ;
2010-11-17 18:39:51 +00:00
print " </div></div> " ;
2010-01-11 15:43:53 +00:00
2010-11-18 10:46:11 +00:00
print " <div dojoType= \" dijit.form.DropDownButton \" > " .
" <span> " . __ ( 'Feeds' ) . " </span> " ;
print " <div dojoType= \" dijit.Menu \" style= \" display: none; \" > " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" quickAddFeed() \"
2010-11-18 10:46:11 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'Subscribe to feed' ) . " </div> " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" editSelectedFeed() \"
2010-11-18 11:20:43 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'Edit selected feeds' ) . " </div> " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" resetFeedOrder() \"
2010-11-18 10:46:11 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'Reset sort order' ) . " </div> " ;
print " </div></div> " ;
2010-01-11 15:43:53 +00:00
if ( get_pref ( $link , 'ENABLE_FEED_CATS' )) {
2010-11-18 10:46:11 +00:00
print " <div dojoType= \" dijit.form.DropDownButton \" > " .
" <span> " . __ ( 'Categories' ) . " </span> " ;
print " <div dojoType= \" dijit.Menu \" style= \" display: none; \" > " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" editFeedCats() \"
2010-11-18 10:46:11 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'Edit categories' ) . " </div> " ;
2011-03-28 11:53:48 +00:00
print " <div onclick= \" resetCatOrder() \"
2010-11-18 10:46:11 +00:00
dojoType = \ " dijit.MenuItem \" > " . __ ( 'Reset sort order' ) . " </div> " ;
print " </div></div> " ;
2010-01-11 15:43:53 +00:00
}
2010-11-18 07:15:14 +00:00
print $error_button ;
2011-03-28 11:53:48 +00:00
print $inactive_button ;
2010-11-18 07:15:14 +00:00
2010-11-17 18:13:41 +00:00
print " <button dojoType= \" dijit.form.Button \" onclick= \" removeSelectedFeeds() \" > "
. __ ( 'Unsubscribe' ) . " </button dojoType= \" dijit.form.Button \" > " ;
2010-01-11 15:43:53 +00:00
2010-01-28 15:52:46 +00:00
if ( defined ( '_ENABLE_FEED_DEBUGGING' )) {
2006-10-01 10:05:20 +00:00
2010-01-28 15:52:46 +00:00
print " <select id= \" feedActionChooser \" onchange= \" feedActionChange() \" >
< option value = \ " facDefault \" selected> " . __ ( 'More actions...' ) . " </option> " ;
2011-03-28 11:53:48 +00:00
2010-01-28 15:52:46 +00:00
if ( FORCE_ARTICLE_PURGE == 0 ) {
2011-03-28 11:53:48 +00:00
print
2010-01-28 15:52:46 +00:00
" <option value= \" facPurge \" > " . __ ( 'Manual purge' ) . " </option> " ;
}
2011-03-28 11:53:48 +00:00
2010-01-28 15:52:46 +00:00
print "
< option value = \ " facClear \" > " . __ ( 'Clear feed data' ) . " </option>
< option value = \ " facRescore \" > " . __ ( 'Rescore articles' ) . " </option> " ;
2011-03-28 11:53:48 +00:00
2010-01-28 15:52:46 +00:00
print " </select> " ;
2010-01-28 15:49:17 +00:00
2010-01-28 15:52:46 +00:00
}
2010-01-28 15:49:17 +00:00
2010-11-17 11:49:06 +00:00
print " </div> " ; # toolbar
2010-11-17 18:13:41 +00:00
print " <div id= \" feedlistLoading \" >
< img src = 'images/indicator_tiny.gif' > " .
__ ( " Loading, please wait... " ) . " </div> " ;
2011-03-28 11:53:48 +00:00
print " <div dojoType= \" fox.PrefFeedStore \" jsId= \" feedStore \"
2010-11-18 10:46:11 +00:00
url = \ " backend.php?op=pref-feeds&subop=getfeedtree \" >
2010-11-17 18:13:41 +00:00
</ div >
< div dojoType = \ " lib.CheckBoxStoreModel \" jsId= \" feedModel \" store= \" feedStore \"
query = \ " { id:'root'} \" rootId= \" root \" rootLabel= \" Feeds \"
childrenAttrs = \ " items \" checkboxStrict= \" false \" checkboxAll= \" false \" >
</ div >
2011-03-28 11:53:48 +00:00
< div dojoType = \ " fox.PrefFeedTree \" id= \" feedTree \"
dndController = \ " dijit.tree.dndSource \"
2010-11-18 10:46:11 +00:00
betweenThreshold = \ " 5 \"
2010-11-17 18:13:41 +00:00
model = \ " feedModel \" openOnClick= \" false \" >
< script type = \ " dojo/method \" event= \" onClick \" args= \" item \" >
var id = String ( item . id );
var bare_id = id . substr ( id . indexOf ( ':' ) + 1 );
2010-11-18 10:46:11 +00:00
if ( id . match ( 'FEED:' )) {
2010-11-21 20:05:51 +00:00
editFeed ( bare_id );
2010-11-18 10:46:11 +00:00
} else if ( id . match ( 'CAT:' )) {
2010-11-21 20:05:51 +00:00
editCat ( bare_id , item );
2011-03-28 11:53:48 +00:00
}
2010-11-17 18:13:41 +00:00
</ script >
< script type = \ " dojo/method \" event= \" onLoad \" args= \" item \" >
Element . hide ( \ " feedlistLoading \" );
</ script >
</ div > " ;
2010-11-18 12:49:26 +00:00
print " <div dojoType= \" dijit.Tooltip \" connectId= \" feedTree \" position= \" below \" >
2010-11-22 13:26:00 +00:00
" .__('<b>Hint:</b> you can drag feeds and categories around.'). "
2010-11-18 12:49:26 +00:00
</ div > " ;
2010-11-17 11:49:06 +00:00
print " </div> " ; # feeds pane
2006-10-04 06:16:13 +00:00
2010-11-17 11:49:06 +00:00
print " <div dojoType= \" dijit.layout.AccordionPane \" title= \" " . __ ( 'OPML' ) . " \" > " ;
2010-01-13 20:59:02 +00:00
2011-07-31 06:44:20 +00:00
print " <p> " . __ ( " Using OPML you can export and import your feeds and Tiny Tiny RSS settings. " ) . " " ;
2010-06-29 10:35:13 +00:00
2011-07-31 06:44:20 +00:00
print " <span class= \" insensitive \" > " . __ ( " Note: Only main settings profile can be migrated using OPML. " ) . " </span> " ;
2010-06-30 09:13:57 +00:00
2010-06-29 10:35:13 +00:00
print " </p> " ;
2011-07-31 06:44:20 +00:00
print " <h3> " . __ ( " Import " ) . " </h3> " ;
print " <br/><iframe id= \" upload_iframe \"
2010-11-21 15:01:14 +00:00
name = \ " upload_iframe \" onload= \" opmlImportComplete(this) \"
2010-01-13 20:59:02 +00:00
style = \ " width: 400px; height: 100px; display: none; \" ></iframe> " ;
2011-07-31 02:34:22 +00:00
print " <form name= \" opml_form \" style='display : block' target= \" upload_iframe \"
2011-03-28 11:53:48 +00:00
enctype = \ " multipart/form-data \" method= \" POST \"
2010-01-13 20:59:02 +00:00
action = \ " backend.php \" >
< input id = \ " opml_file \" name= \" opml_file \" type= \" file \" >
< input type = \ " hidden \" name= \" op \" value= \" dlg \" >
< input type = \ " hidden \" name= \" id \" value= \" importOpml \" >
2011-07-31 02:34:22 +00:00
< button dojoType = \ " dijit.form.Button \" onclick= \" return opmlImport(); \" type= \" submit \" > " .
2011-07-31 06:44:20 +00:00
__ ( 'Import' ) . " </button> " ;
print " <h3> " . __ ( " Export " ) . " </h3> " ;
print " <p> " . __ ( 'Filename:' ) .
" <input type= \" text \" id= \" filename \" value= \" TinyTinyRSS.opml \" /> " .
__ ( 'Include settings' ) . " <input type= \" checkbox \" id= \" settings \" CHECKED /> " .
2011-07-31 02:34:22 +00:00
" <button dojoType= \" dijit.form.Button \"
onclick = \ " gotoExportOpml(document.opml_form.filename.value, document.opml_form.settings.checked) \" > " .
2011-07-31 06:44:20 +00:00
__ ( 'Export' ) . " </button></p></form> " ;
print " <h3> " . __ ( " Publish " ) . " </h3> " ;
2006-10-04 06:16:13 +00:00
2011-07-31 06:44:20 +00:00
print " <p> " . __ ( 'Your OPML can be published publicly and can be subscribed by anyone who knows the URL below.' ) . " " ;
2010-06-30 09:13:57 +00:00
2011-07-31 06:44:20 +00:00
print " <span class= \" insensitive \" > " . __ ( " Note: Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds. " ) . " </span> " . " </p> " ;
2007-08-09 12:45:30 +00:00
2010-11-21 10:13:34 +00:00
print " <button dojoType= \" dijit.form.Button \" onclick= \" return displayDlg('pubOPMLUrl') \" > " .
2010-06-30 09:13:57 +00:00
__ ( 'Display URL' ) . " </button> " ;
2010-11-17 11:49:06 +00:00
print " </div> " ; # pane
2010-11-17 18:41:26 +00:00
if ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], " Firefox " ) !== false ) {
2010-11-17 11:49:06 +00:00
print " <div dojoType= \" dijit.layout.AccordionPane \" title= \" " . __ ( 'Firefox integration' ) . " \" > " ;
2011-03-28 11:53:48 +00:00
2010-06-30 09:13:57 +00:00
print " <p> " . __ ( 'This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below.' ) . " </p> " ;
2010-01-12 16:46:07 +00:00
2010-11-17 18:41:26 +00:00
print " <p> " ;
2010-01-12 16:46:07 +00:00
2010-06-30 09:13:57 +00:00
print " <button onclick='window.navigator.registerContentHandler( " .
2007-08-31 00:55:33 +00:00
" \" application/vnd.mozilla.maybe.feed \" , " .
" \" " . add_feed_url () . " \" , " . " \" Tiny Tiny RSS \" )'> " .
2011-03-28 11:53:48 +00:00
__ ( 'Click here to register this site as a feed reader.' ) .
2010-01-12 16:46:07 +00:00
" </button> " ;
2007-08-31 00:55:33 +00:00
2010-06-30 09:13:57 +00:00
print " </p> " ;
2007-08-31 00:55:33 +00:00
2010-11-17 11:49:06 +00:00
print " </div> " ; # pane
}
2010-09-11 07:34:42 +00:00
2010-11-17 11:49:06 +00:00
print " <div dojoType= \" dijit.layout.AccordionPane \" title= \" " . __ ( 'Subscribing using bookmarklet' ) . " \" > " ;
2011-03-28 11:53:48 +00:00
2010-09-11 07:34:42 +00:00
print " <p> " . __ ( " Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it. " ) . " </p> " ;
$bm_subscribe_url = str_replace ( '%s' , '' , add_feed_url ());
$confirm_str = __ ( 'Subscribe to %s in Tiny Tiny RSS?' );
$bm_url = htmlspecialchars ( " javascript: { if(confirm(' $confirm_str '.replace('%s',window.location.href)))window.location.href=' $bm_subscribe_url '+window.location.href} " );
2010-11-21 10:13:34 +00:00
print " <a href= \" $bm_url\ " class = 'bookmarklet' > " . __('Subscribe in Tiny Tiny RSS'). " </ a > " ;
2010-09-11 07:34:42 +00:00
2010-11-17 11:49:06 +00:00
print " </div> " ; #pane
2011-10-04 09:11:07 +00:00
print " <div dojoType= \" dijit.layout.AccordionPane \" title= \" " . __ ( 'Published & shared articles and generated feeds' ) . " \" > " ;
print " <h3> " . __ ( " Published articles and generated feeds " ) . " </h3> " ;
2007-08-09 12:45:30 +00:00
2008-03-20 05:34:43 +00:00
print " <p> " . __ ( 'Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below.' ) . " </p> " ;
2007-08-09 12:45:30 +00:00
2011-03-28 11:53:48 +00:00
$rss_url = '-2::' . htmlspecialchars ( get_self_url_prefix () .
2010-11-08 10:11:56 +00:00
" /backend.php?op=rss&id=-2&view-mode=all_articles " );;
2010-11-21 10:13:34 +00:00
print " <button dojoType= \" dijit.form.Button \" onclick= \" return displayDlg('generatedFeed', ' $rss_url ') \" > " .
2010-01-12 16:46:07 +00:00
__ ( 'Display URL' ) . " </button> " ;
2011-03-28 11:53:48 +00:00
2010-11-21 10:13:34 +00:00
print " <button dojoType= \" dijit.form.Button \" onclick= \" return clearFeedAccessKeys() \" > " .
2010-11-08 11:51:58 +00:00
__ ( 'Clear all generated URLs' ) . " </button> " ;
2007-08-09 12:45:30 +00:00
2011-10-04 09:11:07 +00:00
print " <h3> " . __ ( " Articles shared by URL " ) . " </h3> " ;
print " <p> " . __ ( " You can disable all articles shared by unique URLs here. " ) . " </p> " ;
print " <button dojoType= \" dijit.form.Button \" onclick= \" return clearArticleAccessKeys() \" > " .
__ ( 'Unshare all articles' ) . " </button> " ;
2010-11-17 11:49:06 +00:00
print " </div> " ; #pane
2010-11-22 13:26:00 +00:00
2010-11-22 13:31:01 +00:00
if ( defined ( 'CONSUMER_KEY' ) && CONSUMER_KEY != '' ) {
2010-11-22 13:26:00 +00:00
2010-11-22 13:31:01 +00:00
print " <div id= \" pref-feeds-twitter \" dojoType= \" dijit.layout.AccordionPane \" title= \" " . __ ( 'Twitter' ) . " \" > " ;
2011-03-28 11:53:48 +00:00
2010-11-22 13:31:01 +00:00
$result = db_query ( $link , " SELECT COUNT(*) AS cid FROM ttrss_users
WHERE twitter_oauth IS NOT NULL AND twitter_oauth != '' AND
id = " . $_SESSION['uid'] );
2011-03-28 11:53:48 +00:00
2010-11-22 13:31:01 +00:00
$is_registered = db_fetch_result ( $result , 0 , " cid " ) != 0 ;
2011-03-28 11:53:48 +00:00
2010-11-22 13:31:01 +00:00
if ( ! $is_registered ) {
print_notice ( __ ( 'Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com.' ));
} else {
print_notice ( __ ( 'You have been successfully registered with Twitter.com and should be able to access your Twitter feeds.' ));
}
2011-03-28 11:53:48 +00:00
2010-11-22 13:31:01 +00:00
print " <button dojoType= \" dijit.form.Button \" onclick= \" window.location.href = 'twitter.php?op=register' \" > " .
__ ( " Register with Twitter.com " ) . " </button> " ;
2011-03-28 11:53:48 +00:00
2010-11-22 13:31:01 +00:00
print " " ;
2011-03-28 11:53:48 +00:00
print " <button dojoType= \" dijit.form.Button \"
2010-11-22 13:31:01 +00:00
onclick = \ " return clearTwitterCredentials() \" > " .
__ ( " Clear stored credentials " ) . " </button> " ;
2011-03-28 11:53:48 +00:00
2010-11-22 13:31:01 +00:00
print " </div> " ; # pane
2010-11-22 13:26:00 +00:00
}
2010-11-17 11:49:06 +00:00
print " </div> " ; #container
2006-10-01 10:05:20 +00:00
}
2009-01-23 18:54:57 +00:00
2010-11-29 13:19:32 +00:00
function make_feed_browser ( $link , $search , $limit , $mode = 1 ) {
2009-01-23 18:54:57 +00:00
2010-11-29 13:19:32 +00:00
$owner_uid = $_SESSION [ " uid " ];
$rv = '' ;
2009-01-24 05:01:17 +00:00
if ( $search ) {
2011-03-28 11:53:48 +00:00
$search_qpart = " AND (UPPER(feed_url) LIKE UPPER('% $search %') OR
2009-01-24 05:01:17 +00:00
UPPER ( title ) LIKE UPPER ( '%$search%' )) " ;
} else {
$search_qpart = " " ;
}
2010-01-11 12:40:35 +00:00
if ( $mode == 1 ) {
2011-04-20 11:36:46 +00:00
/* $result = db_query ( $link , " SELECT feed_url, subscribers FROM
2010-01-11 12:40:35 +00:00
ttrss_feedbrowser_cache WHERE ( SELECT COUNT ( id ) = 0 FROM ttrss_feeds AS tf
WHERE tf . feed_url = ttrss_feedbrowser_cache . feed_url
2011-03-28 11:53:48 +00:00
AND owner_uid = '$owner_uid' ) $search_qpart
2011-04-20 11:36:46 +00:00
ORDER BY subscribers DESC LIMIT $limit " ); */
2011-04-21 04:43:37 +00:00
$result = db_query ( $link , " SELECT feed_url, site_url, title, SUM(subscribers) AS subscribers FROM
( SELECT feed_url , site_url , title , subscribers FROM ttrss_feedbrowser_cache UNION ALL
SELECT feed_url , site_url , title , subscribers FROM ttrss_linked_feeds ) AS qqq
2011-04-20 11:36:46 +00:00
WHERE
( SELECT COUNT ( id ) = 0 FROM ttrss_feeds AS tf
WHERE tf . feed_url = qqq . feed_url
AND owner_uid = '$owner_uid' ) $search_qpart
2011-04-21 04:43:37 +00:00
GROUP BY feed_url , site_url , title ORDER BY subscribers DESC LIMIT $limit " );
2011-04-20 11:36:46 +00:00
2010-01-11 12:40:35 +00:00
} else if ( $mode == 2 ) {
2010-01-13 10:44:20 +00:00
$result = db_query ( $link , " SELECT *,
( SELECT COUNT ( * ) FROM ttrss_user_entries WHERE
orig_feed_id = ttrss_archived_feeds . id ) AS articles_archived
FROM
ttrss_archived_feeds
2011-03-28 11:53:48 +00:00
WHERE
( SELECT COUNT ( * ) FROM ttrss_feeds
2010-01-11 12:40:35 +00:00
WHERE ttrss_feeds . feed_url = ttrss_archived_feeds . feed_url AND
2011-03-28 11:53:48 +00:00
owner_uid = '$owner_uid' ) = 0 AND
owner_uid = '$owner_uid' $search_qpart
2010-01-11 12:40:35 +00:00
ORDER BY id DESC LIMIT $limit " );
}
2009-01-23 18:54:57 +00:00
$feedctr = 0 ;
2011-03-28 11:53:48 +00:00
2009-01-23 18:54:57 +00:00
while ( $line = db_fetch_assoc ( $result )) {
2010-01-11 12:40:35 +00:00
if ( $mode == 1 ) {
2009-01-23 18:54:57 +00:00
2011-04-21 04:43:37 +00:00
$feed_url = htmlspecialchars ( $line [ " feed_url " ]);
$site_url = htmlspecialchars ( $line [ " site_url " ]);
2010-01-11 12:40:35 +00:00
$subscribers = $line [ " subscribers " ];
2010-07-01 07:47:39 +00:00
2011-03-28 11:53:48 +00:00
$check_box = " <input onclick='toggleSelectListRow2(this)'
2010-11-18 19:26:04 +00:00
dojoType = \ " dijit.form.CheckBox \"
2010-11-20 18:06:36 +00:00
type = \ " checkbox \" \" > " ;
2011-03-28 11:53:48 +00:00
2010-01-11 12:40:35 +00:00
$class = ( $feedctr % 2 ) ? " even " : " odd " ;
2011-03-28 11:53:48 +00:00
2011-04-21 04:43:37 +00:00
$site_url = " <a target= \" _blank \"
href = \ " $site_url\ " >
< span class = \ " fb_feedTitle \" > " .
htmlspecialchars ( $line [ " title " ]) . " </span></a> " ;
2010-07-01 07:47:39 +00:00
2011-04-21 04:43:37 +00:00
$feed_url = " <a target= \" _blank \" class= \" fb_feedUrl \"
href = \ " $feed_url\ " >< img src = 'images/feed-icon-12x12.png'
style = 'vertical-align : middle' ></ a > " ;
2010-01-18 12:10:37 +00:00
2011-04-21 04:43:37 +00:00
$rv .= " <li> $check_box $feed_url $site_url " .
" <span class='subscribers'>( $subscribers )</span></li> " ;
2011-03-28 11:53:48 +00:00
2010-01-11 12:40:35 +00:00
} else if ( $mode == 2 ) {
2010-01-13 10:44:20 +00:00
$feed_url = htmlspecialchars ( $line [ " feed_url " ]);
2011-03-28 11:53:48 +00:00
$site_url = htmlspecialchars ( $line [ " site_url " ]);
2010-01-13 10:44:20 +00:00
$title = htmlspecialchars ( $line [ " title " ]);
2010-01-11 13:42:11 +00:00
2010-11-20 18:06:36 +00:00
$check_box = " <input onclick='toggleSelectListRow2(this)' dojoType= \" dijit.form.CheckBox \"
type = \ " checkbox \" > " ;
2011-03-28 11:53:48 +00:00
2010-01-11 12:40:35 +00:00
$class = ( $feedctr % 2 ) ? " even " : " odd " ;
2010-01-13 10:44:20 +00:00
if ( $line [ 'articles_archived' ] > 0 ) {
$archived = sprintf ( __ ( " %d archived articles " ), $line [ 'articles_archived' ]);
$archived = " <span class='subscribers'>( $archived )</span> " ;
} else {
$archived = '' ;
}
2011-04-21 04:43:37 +00:00
$site_url = " <a target= \" _blank \"
href = \ " $site_url\ " >
< span class = \ " fb_feedTitle \" > " .
htmlspecialchars ( $line [ " title " ]) . " </span></a> " ;
2010-01-18 12:10:37 +00:00
2011-04-21 04:43:37 +00:00
$feed_url = " <a target= \" _blank \" class= \" fb_feedUrl \"
href = \ " $feed_url\ " >< img src = 'images/feed-icon-12x12.png'
style = 'vertical-align : middle' ></ a > " ;
2009-01-23 18:54:57 +00:00
2011-04-21 04:43:37 +00:00
$rv .= " <li id= \" FBROW- " . $line [ " id " ] . " \" > " .
" $check_box $feed_url $site_url $archived </li> " ;
2009-01-24 05:14:06 +00:00
}
2010-01-11 12:40:35 +00:00
++ $feedctr ;
2009-01-23 18:54:57 +00:00
}
if ( $feedctr == 0 ) {
2010-11-29 13:19:32 +00:00
$rv .= " <li style= \" text-align : center \" ><p> " . __ ( 'No feeds found.' ) . " </p></li> " ;
2009-01-23 18:54:57 +00:00
}
2010-11-29 13:19:32 +00:00
return $rv ;
2009-01-23 18:54:57 +00:00
}
2010-01-13 09:48:49 +00:00
2006-10-01 10:05:20 +00:00
?>