X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=backend.php;h=ce2e73d85ea8ee02522779a535640fed73effeda;hb=45004d43408bb006f89dd2c46fb3b934966896b0;hp=a9543d9fe7d4ea0789ef7291c2ad58de47580f42;hpb=99206d5c796efed8457c9170560275ae069e9634;p=tt-rss.git diff --git a/backend.php b/backend.php index a9543d9f..ce2e73d8 100644 --- a/backend.php +++ b/backend.php @@ -1,11 +1,18 @@ Error: Not logged in.

@@ -59,28 +100,39 @@ } $purge_intervals = array( - 0 => "Use default", - -1 => "Never purge", - 5 => "1 week old", - 14 => "2 weeks old", - 31 => "1 month old", - 60 => "2 months old", - 90 => "3 months old"); + 0 => __("Use default"), + -1 => __("Never purge"), + 5 => __("1 week old"), + 14 => __("2 weeks old"), + 31 => __("1 month old"), + 60 => __("2 months old"), + 90 => __("3 months old")); $update_intervals = array( - 0 => "Use default", - -1 => "Disable updates", - 30 => "Each 30 minutes", - 60 => "Hourly", - 240 => "Each 4 hours", - 720 => "Each 12 hours", - 1440 => "Daily", - 10080 => "Weekly"); - + 0 => __("Use default"), + -1 => __("Disable updates"), + 15 => __("Each 15 minutes"), + 30 => __("Each 30 minutes"), + 60 => __("Hourly"), + 240 => __("Each 4 hours"), + 720 => __("Each 12 hours"), + 1440 => __("Daily"), + 10080 => __("Weekly")); + + $update_methods = array( + 0 => __("Use default"), + 1 => __("Magpie"), + 2 => __("SimplePie")); + + if (ENABLE_SIMPLEPIE) { + $update_methods[0] .= ' (SimplePie)'; + } else { + $update_methods[0] .= ' (Magpie)'; + } $access_level_names = array( - 0 => "User", - 10 => "Administrator"); + 0 => __("User"), + 10 => __("Administrator")); require_once "modules/pref-prefs.php"; require_once "modules/popup-dialog.php"; @@ -91,753 +143,441 @@ require_once "modules/pref-users.php"; require_once "modules/pref-feed-browser.php"; - $script_started = getmicrotime(); - - $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); - - if (!$link) { - if (DB_TYPE == "mysql") { - print mysql_error(); - } - // PG seems to display its own errors just fine by default. - return; - } - - if (DB_TYPE == "pgsql") { - pg_query("set client_encoding = 'utf-8'"); - } - if (!sanity_check($link)) { return; } - if ($op == "rpc") { - handle_rpc_request($link); - } - - if ($op == "feeds") { + switch($op) { // Select action according to $op value. + case "rpc": + // Handle remote procedure calls. + handle_rpc_request($link); + break; // rpc - $tags = $_GET["tags"]; + case "feeds": + $tags = $_GET["tags"]; - $subop = $_GET["subop"]; + $subop = $_GET["subop"]; - if ($subop == "catchupAll") { - db_query($link, "UPDATE ttrss_user_entries SET - last_read = NOW(),unread = false WHERE owner_uid = " . $_SESSION["uid"]); - } - - if ($subop == "collapse") { - $cat_id = db_escape_string($_GET["cid"]); - - db_query($link, "UPDATE ttrss_feed_categories SET - collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " . - $_SESSION["uid"]); - return; - } - - outputFeedList($link, $tags); - - } - - if ($op == "view") { + switch($subop) { + case "catchupAll": + db_query($link, "UPDATE ttrss_user_entries SET + last_read = NOW(),unread = false WHERE owner_uid = " . $_SESSION["uid"]); + break; - $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\""; - $rtl_class = "RTL"; - } else { - $rtl_tag = ""; - $rtl_class = ""; - } + case "collapse": + $cat_id = db_escape_string($_GET["cid"]); - $result = db_query($link, "UPDATE ttrss_user_entries - SET unread = false,last_read = NOW() - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); + db_query($link, "UPDATE ttrss_feed_categories SET + collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " . + $_SESSION["uid"]); + return; + break; + } - $result = db_query($link, "SELECT title,link,content,feed_id,comments,int_id, - SUBSTRING(updated,1,16) as updated, - (SELECT icon_url FROM ttrss_feeds WHERE id = feed_id) as icon_url, - num_comments, - author - FROM ttrss_entries,ttrss_user_entries - WHERE id = '$id' AND ref_id = id AND owner_uid = " . $_SESSION["uid"]); + outputFeedList($link, $tags); + break; // feeds - if ($result) { + case "view": - $link_target = ""; + $id = db_escape_string($_GET["id"]); + $feed_id = db_escape_string($_GET["feed"]); + $cids = split(",", db_escape_string($_GET["cids"])); + $mode = db_escape_string($_GET["mode"]); + $omode = db_escape_string($_GET["omode"]); - if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) { - $link_target = "target=\"_new\""; - } + print ""; - $line = db_fetch_assoc($result); + // in prefetch mode we only output requested cids, main article + // just gets marked as read (it already exists in client cache) - if ($line["icon_url"]) { - $feed_icon = ""; + if ($mode == "") { + outputArticleXML($link, $id, $feed_id); } else { - $feed_icon = " "; + catchupArticleById($link, $id, 0); } -/* if ($line["comments"] && $line["link"] != $line["comments"]) { - $entry_comments = "(Comments)"; - } else { - $entry_comments = ""; - } */ - - $num_comments = $line["num_comments"]; - $entry_comments = ""; - - if ($num_comments > 0) { - if ($line["comments"]) { - $comments_url = $line["comments"]; - } else { - $comments_url = $line["link"]; + foreach ($cids as $cid) { + if ($cid) { + outputArticleXML($link, $cid, $feed_id, false); } - $entry_comments = "$num_comments comments"; - } else { - if ($line["comments"] && $line["link"] != $line["comments"]) { - $entry_comments = "comments"; - } } - print "
"; - - print "
"; - - $entry_author = $line["author"]; - - if ($entry_author) { - $entry_author = " - by $entry_author"; + if ($mode != "prefetch_old") { + print ""; + getAllCounters($link, $omode); + print ""; } - $parsed_updated = date(get_pref($link, 'LONG_DATE_FORMAT'), - strtotime($line["updated"])); - - print "
$parsed_updated
"; + print ""; + break; // view - if ($line["link"]) { - print "
" . - $line["title"] . "$entry_author
"; - } else { - print "
" . $line["title"] . "$entry_author
"; - } + case "viewfeed": - $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 = ""; - $f_tags_str = ""; + $print_exec_time = true; + $timing_info = getmicrotime(); - $num_tags = 0; + print ""; - while ($tmp_line = db_fetch_assoc($tmp_result)) { - $num_tags++; - $tag = $tmp_line["tag_name"]; - $tag_str = "$tag, "; - - if ($num_tags == 6) { - $tags_str .= "..."; - } else if ($num_tags < 6) { - $tags_str .= $tag_str; - } - $f_tags_str .= $tag_str; - } - - $tags_str = preg_replace("/, $/", "", $tags_str); - $f_tags_str = preg_replace("/, $/", "", $f_tags_str); - - if (!$entry_comments) $entry_comments = " "; # placeholder + if ($_GET["debug"]) $timing_info = print_checkpoint("0", $timing_info); - if (!$tags_str) $tags_str = 'no tags'; + $omode = db_escape_string($_GET["omode"]); - print "
$tags_str - (+)
-
$entry_comments
"; + $feed = db_escape_string($_GET["feed"]); + $subop = db_escape_string($_GET["subop"]); + $view_mode = db_escape_string($_GET["view_mode"]); + $limit = db_escape_string($_GET["limit"]); + $cat_view = db_escape_string($_GET["cat"]); + $next_unread_feed = db_escape_string($_GET["nuf"]); + $offset = db_escape_string($_GET["skip"]); - print "
"; - - print "
" . $feed_icon . "
"; - print "
"; - - if (db_num_rows($tmp_result) > 0) { - print "
Tags: $f_tags_str
"; - } + set_pref($link, "_DEFAULT_VIEW_MODE", $view_mode); + set_pref($link, "_DEFAULT_VIEW_LIMIT", $limit); - if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) { - $line["content"] = preg_replace("/href=/i", "target=\"_new\" href=", $line["content"]); + if (!$cat_view && preg_match("/^[0-9][0-9]*$/", $feed)) { + db_query($link, "UPDATE ttrss_feeds SET last_viewed = NOW() + WHERE id = '$feed' AND owner_uid = ".$_SESSION["uid"]); } - $line["content"] = sanitize_rss($line["content"]); - - print $line["content"] . "
"; - - print "
"; - - } - } + print ""; - if ($subop == "CatchupSelected") { - $ids = split(",", db_escape_string($_GET["ids"])); - $cmode = sprintf("%d", $_GET["cmode"]); + print ""; - catchupArticlesById($link, $ids, $cmode); - } + $headlines_unread = getFeedUnread($link, $returned_feed); - if ($subop == "ForceUpdate" && sprintf("%d", $feed) > 0) { - update_generic_feed($link, $feed, $cat_view); - } + print ""; + printf("", $disable_cache); - if ($subop == "MarkAllRead") { - catchup_feed($link, $feed, $cat_view); + if ($_GET["debug"]) $timing_info = print_checkpoint("10", $timing_info); - if (get_pref($link, 'ON_CATCHUP_SHOW_NEXT_FEED')) { - if ($next_unread_feed) { - $feed = $next_unread_feed; + if (is_array($topmost_article_ids) && !get_pref($link, 'COMBINED_DISPLAY_MODE')) { + print ""; + foreach ($topmost_article_ids as $id) { + outputArticleXML($link, $id, $feed, false); } + print ""; } - } - - if ($feed_id > 0) { - $result = db_query($link, - "SELECT id FROM ttrss_feeds WHERE id = '$feed' LIMIT 1"); - - if (db_num_rows($result) == 0) { - print "
- Feed not found.
"; - return; - } - } - - 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"]); - - 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 = ""; - } - } else { - $rtl_tag = ""; - $rtl_content = false; - } - $script_dt_add = get_script_dt_add(); - -/* print " - - - - - - "; */ + if ($_GET["debug"]) $timing_info = print_checkpoint("20", $timing_info); - /// START ///////////////////////////////////////////////////////////////////////////////// + print ""; + getAllCounters($link, $omode, $feed); + print ""; - $search = db_escape_string($_GET["query"]); - $search_mode = db_escape_string($_GET["search_mode"]); - $match_on = db_escape_string($_GET["match_on"]); + if ($_GET["debug"]) $timing_info = print_checkpoint("30", $timing_info); - if (!$match_on) { - $match_on = "both"; - } + print_runtime_info($link); - $qfh_ret = queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on); + print "
"; + break; // viewfeed - $result = $qfh_ret[0]; - $feed_title = $qfh_ret[1]; - $feed_site_url = $qfh_ret[2]; - $last_error = $qfh_ret[3]; - - /// STOP ////////////////////////////////////////////////////////////////////////////////// + case "pref-feeds": + module_pref_feeds($link); + break; // pref-feeds - print "
"; + case "pref-filters": + module_pref_filters($link); + break; // pref-filters - if (!$result) { - print "
- Could not display feed (query failed). Please check label match syntax or local configuration.
"; - return; - } - - if (db_num_rows($result) > 0) { - - print_headline_subtoolbar($link, $feed_site_url, $feed_title, false, - $rtl_content, $feed, $cat_view, $search, $match_on, $search_mode); - - print "
"; + case "pref-labels": + module_pref_labels($link); + break; // pref-labels - if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) { - print ""; - } - - $lnum = 0; - - error_reporting (DEFAULT_ERROR_LEVEL); - - $num_unread = 0; - - while ($line = db_fetch_assoc($result)) { - - $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 = "\"Updated\""; - } else { - $update_pic = "\"Updated\""; - } - - if ($line["unread"] == "t" || $line["unread"] == "1") { - $class .= "Unread"; - ++$num_unread; - $is_unread = true; - } else { - $is_unread = false; - } - - if ($line["marked"] == "t" || $line["marked"] == "1") { - $marked_pic = "\"Reset"; - } else { - $marked_pic = "\"Set"; - } + case "pref-prefs": + module_pref_prefs($link); + break; // pref-prefs -# $content_link = "" . -# $line["title"] . ""; + case "pref-users": + module_pref_users($link); + break; // prefs-users - $content_link = "" . - $line["title"] . ""; + case "help": + module_help($link); + break; // help -# $content_link = "" . -# $line["title"] . ""; + case "dlg": + module_popup_dialog($link); + break; // dlg - 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"])); - } + case "pref-pub-items": + module_pref_pub_items($link); + break; // pref-pub-items - if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) { - $content_preview = truncate_string(strip_tags($line["content_preview"]), - 100); - } + case "globalUpdateFeeds": + // update feeds of all users, may be used anonymously - $entry_author = $line["author"]; + // Update all feeds needing a update. + update_daemon_common($link, 0, true, false); - if ($entry_author) { - $entry_author = " - by $entry_author"; - } + // FIXME : old feed update way. To be removed. + //$result = db_query($link, "SELECT id FROM ttrss_users"); - if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) { - - print ""; - - print ""; - - print ""; - - print ""; - - if ($line["feed_title"]) { - print ""; - print ""; - } else { - print ""; - } - - print ""; - - print ""; + //while ($line = db_fetch_assoc($result)) { + // $user_id = $line["id"]; + // print ""; + // update_all_feeds($link, false, $user_id); + //} - } else { - - if ($is_unread) { - $add_class = "Unread"; - } else { - $add_class = ""; - } - - print "
"; - - print "
"; - - print "
$updated_fmt, - Toggle unread -
"; - - print "".$line["title"].""; - - print $entry_author; - - if ($line["feed_title"]) { - print " (".$line["feed_title"].")"; - } + print " + + "; + break; // globalUpdateFeeds - print "
"; + case "user-details": - print "
" . $line["content_preview"] . "

"; + if (WEB_DEMO_MODE || $_SESSION["access_level"] < 10) { + return; + } - print "
$marked_pic
-
-
"; + /* + print " + Tiny Tiny RSS : User Details + + + "; + */ -# print "
-# Toggle unread
"; + $uid = sprintf("%d", $_GET["id"]); - print "
"; + print "
User details
"; - } - - ++$lnum; - } + print "
"; - if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) { - print "
$update_pic - - $marked_pic$content_link - ". - $line["feed_title"]." "; - - print "" . - $line["title"]; - - if (get_pref($link, 'SHOW_CONTENT_PREVIEW') && !$rtl_tag) { - if ($content_preview) { - print " - $content_preview"; - } - } - - print ""; - print "$updated_fmt 
"; + $result = db_query($link, "SELECT login, + SUBSTRING(last_login,1,16) AS last_login, + access_level, + (SELECT COUNT(int_id) FROM ttrss_user_entries + WHERE owner_uid = id) AS stored_articles, + SUBSTRING(created,1,16) AS created + FROM ttrss_users + WHERE id = '$uid'"); + + if (db_num_rows($result) == 0) { + print "

User not found

"; + return; } + + // print "

User Details

"; - print "
"; + $login = db_fetch_result($result, 0, "login"); -// print_headline_subtoolbar($link, -// "javascript:catchupPage()", "Mark page as read", true, $rtl_content); + // print "

$login

"; + print ""; - } else { - print "
No articles found.
"; - } + $last_login = date(get_pref($link, 'LONG_DATE_FORMAT'), + strtotime(db_fetch_result($result, 0, "last_login"))); - print ""; - } + $created = date(get_pref($link, 'LONG_DATE_FORMAT'), + strtotime(db_fetch_result($result, 0, "created"))); - if ($op == "pref-feeds") { - module_pref_feeds($link); - } + $access_level = db_fetch_result($result, 0, "access_level"); + $stored_articles = db_fetch_result($result, 0, "stored_articles"); - if ($op == "pref-filters") { - module_pref_filters($link); - } + // print ""; + // print ""; + print ""; + print ""; + print ""; - if ($op == "pref-labels") { - module_pref_labels($link); - } + $result = db_query($link, "SELECT COUNT(id) as num_feeds FROM ttrss_feeds + WHERE owner_uid = '$uid'"); - if ($op == "pref-prefs") { - module_pref_prefs($link); - } + $num_feeds = db_fetch_result($result, 0, "num_feeds"); - if ($op == "pref-users") { - module_pref_users($link); - } + print ""; - if ($op == "help") { - module_help($link); - } + /* + $result = db_query($link, "SELECT + SUM(LENGTH(content)+LENGTH(title)+LENGTH(link)+LENGTH(guid)) AS db_size + FROM ttrss_user_entries,ttrss_entries + WHERE owner_uid = '$uid' AND ref_id = id"); - if ($op == "dlg") { - module_popup_dialog($link); - } + $db_size = round(db_fetch_result($result, 0, "db_size") / 1024); - // update feeds of all users, may be used anonymously - if ($op == "globalUpdateFeeds") { + print ""; + */ - $result = db_query($link, "SELECT id FROM ttrss_users"); + print "
Username$login
Access level$access_level
".__('Registered')."$created
".__('Last logged in')."$last_login
".__('Stored articles')."$stored_articles
".__('Subscribed feeds count')."$num_feeds
Approx. used DB size$db_size KBytes
"; - while ($line = db_fetch_assoc($result)) { - $user_id = $line["id"]; -// print ""; - update_all_feeds($link, false, $user_id); - } + print "

".__('Subscribed feeds')."

"; - print " - - "; + $result = db_query($link, "SELECT id,title,site_url FROM ttrss_feeds + WHERE owner_uid = '$uid' ORDER BY title"); - } + print "