<?php
+ error_reporting(E_ERROR | E_WARNING | E_PARSE);
+
+ /* remove ill effects of magic quotes */
+
+ if (get_magic_quotes_gpc()) {
+ $_GET = array_map('stripslashes', $_GET);
+ $_POST = array_map('stripslashes', $_POST);
+ $_REQUEST = array_map('stripslashes', $_REQUEST);
+ $_COOKIE = array_map('stripslashes', $_COOKIE);
+ }
+
require_once "sessions.php";
require_once "modules/backend-rpc.php";
-
- header("Cache-Control: no-cache, must-revalidate");
- header("Pragma: no-cache");
- header("Expires: -1");
-
+
/* if ($_GET["debug"]) {
define('DEFAULT_ERROR_LEVEL', E_ALL);
} else {
error_reporting(DEFAULT_ERROR_LEVEL); */
- $op = $_REQUEST["op"];
-
- define('SCHEMA_VERSION', 12);
-
require_once "sanity_check.php";
require_once "config.php";
require_once "db-prefs.php";
require_once "functions.php";
+ no_cache_incantation();
+
+ if (ENABLE_TRANSLATIONS == true) {
+ startup_gettext();
+ }
+
+ $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'");
+ pg_set_client_encoding("UNICODE");
+ } else {
+ if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
+ db_query($link, "SET NAMES " . MYSQL_CHARSET);
+// db_query($link, "SET CHARACTER SET " . MYSQL_CHARSET);
+ }
+ }
+
+ $op = $_REQUEST["op"];
+
$print_exec_time = false;
- if ((!$op || $op == "rpc" || $op == "rss" || $op == "digestSend" ||
+ if ((!$op || $op == "rpc" || $op == "rss" || $op == "view" ||
+ $op == "digestSend" || $op == "viewfeed" || $op == "publish" ||
$op == "globalUpdateFeeds") && !$_REQUEST["noxml"]) {
- header("Content-Type: application/xml");
+ header("Content-Type: application/xml; charset=utf-8");
+ } else {
+ if (!$_REQUEST["noxml"]) {
+ header("Content-Type: text/html; charset=utf-8");
+ } else {
+ header("Content-Type: text/plain; charset=utf-8");
+ }
}
if (!$op) {
header("Content-Type: application/xml");
print_error_xml(7); exit;
}
+
+ if (!($_SESSION["uid"] && validate_session($link)) && $op != "globalUpdateFeeds"
+ && $op != "rss" && $op != "getUnread" && $op != "publish") {
- if (!$_SESSION["uid"] && $op != "globalUpdateFeeds" && $op != "rss" && $op != "getUnread") {
-
- if ($op == "rpc") {
+ if ($op == "rpc" || $op == "viewfeed" || $op == "view") {
print_error_xml(6); die;
} else {
print "
<p>Error: Not logged in.</p>
<script type=\"text/javascript\">
if (parent.window != 'undefined') {
- parent.window.location = \"login.php\";
+ parent.window.location = \"tt-rss.php\";
} else {
- window.location = \"login.php\";
+ window.location = \"tt-rss.php\";
}
</script>
</body></html>
}
$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"));
$access_level_names = array(
- 0 => "User",
- 10 => "Administrator");
+ 0 => __("User"),
+ 10 => __("Administrator"));
require_once "modules/pref-prefs.php";
require_once "modules/popup-dialog.php";
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") {
$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"]);
- $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds
- WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]);
+ print "<reply>";
- if (db_num_rows($result) == 1) {
- $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content"));
- } else {
- $rtl_content = false;
- }
+ // in prefetch mode we only output requested cids, main article
+ // just gets marked as read (it already exists in client cache)
- if ($rtl_content) {
- $rtl_tag = "dir=\"RTL\"";
- $rtl_class = "RTL";
+ if ($mode == "") {
+ outputArticleXML($link, $id, $feed_id);
} else {
- $rtl_tag = "";
- $rtl_class = "";
+ catchupArticleById($link, $id, 0);
}
- $result = db_query($link, "UPDATE ttrss_user_entries
- SET unread = false,last_read = NOW()
- WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
-
- $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"]);
-
- if ($result) {
-
- $link_target = "";
-
- if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) {
- $link_target = "target=\"_new\"";
- }
-
- $line = db_fetch_assoc($result);
-
- if ($line["icon_url"]) {
- $feed_icon = "<img class=\"feedIcon\" src=\"" . $line["icon_url"] . "\">";
- } else {
- $feed_icon = " ";
- }
-
-/* if ($line["comments"] && $line["link"] != $line["comments"]) {
- $entry_comments = "(<a href=\"".$line["comments"]."\">Comments</a>)";
- } 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"];
- }
- $entry_comments = "<a $link_target href=\"$comments_url\">$num_comments comments</a>";
- } else {
- if ($line["comments"] && $line["link"] != $line["comments"]) {
- $entry_comments = "<a $link_target href=\"".$line["comments"]."\">comments</a>";
- }
- }
-
- print "<div class=\"postReply\">";
-
- print "<div class=\"postHeader\">";
-
- $entry_author = $line["author"];
-
- if ($entry_author) {
- $entry_author = " - by $entry_author";
- }
-
- $parsed_updated = date(get_pref($link, 'LONG_DATE_FORMAT'),
- strtotime($line["updated"]));
-
- print "<div class=\"postDate$rtl_class\">$parsed_updated</div>";
-
- if ($line["link"]) {
- print "<div clear='both'><a $link_target href=\"" . $line["link"] . "\">" .
- $line["title"] . "</a>$entry_author</div>";
- } else {
- print "<div clear='both'>" . $line["title"] . "$entry_author</div>";
+ foreach ($cids as $cid) {
+ if ($cid) {
+ outputArticleXML($link, $cid, $feed_id, false);
}
+ }
- $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 = "";
-
- $num_tags = 0;
-
- while ($tmp_line = db_fetch_assoc($tmp_result)) {
- $num_tags++;
- $tag = $tmp_line["tag_name"];
- $tag_str = "<a href=\"javascript:viewfeed('$tag')\">$tag</a>, ";
-
- if ($num_tags == 6) {
- $tags_str .= "<a href=\"javascript:showBlockElement('allEntryTags')\">...</a>";
- } 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 (!$tags_str) $tags_str = '<span class="insensitive">no tags</span>';
-
- print "<div style='float : right'>$tags_str
- <a title=\"Edit tags for this article\"
- href=\"javascript:editArticleTags($id, $feed_id)\">(+)</a></div>
- <div clear='both'>$entry_comments</div>";
+ if ($mode != "prefetch_old") {
+ print "<counters>";
+ getAllCounters($link, $omode);
+ print "</counters>";
+ }
- print "</div>";
+ print "</reply>";
+ }
- print "<div class=\"postIcon\">" . $feed_icon . "</div>";
- print "<div class=\"postContent\">";
-
- if (db_num_rows($tmp_result) > 0) {
- print "<div id=\"allEntryTags\">Tags: $f_tags_str</div>";
- }
+ if ($op == "viewfeed") {
- if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) {
- $line["content"] = preg_replace("/href=/i", "target=\"_new\" href=", $line["content"]);
- }
+ $print_exec_time = true;
+ $timing_info = getmicrotime();
- $line["content"] = sanitize_rss($line["content"]);
+ print "<reply>";
- print $line["content"] . "</div>";
-
- print "</div>";
+ if ($_GET["debug"]) $timing_info = print_checkpoint("0", $timing_info);
- }
- }
-
- if ($op == "viewfeed") {
+ $omode = db_escape_string($_GET["omode"]);
$feed = db_escape_string($_GET["feed"]);
$subop = db_escape_string($_GET["subop"]);
$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"]);
- if ($subop == "undefined") $subop = "";
-
- if ($subop == "CatchupSelected") {
- $ids = split(",", db_escape_string($_GET["ids"]));
- $cmode = sprintf("%d", $_GET["cmode"]);
-
- catchupArticlesById($link, $ids, $cmode);
- }
+ set_pref($link, "_DEFAULT_VIEW_MODE", $view_mode);
+ set_pref($link, "_DEFAULT_VIEW_LIMIT", $limit);
- if ($subop == "ForceUpdate" && sprintf("%d", $feed) > 0) {
- update_generic_feed($link, $feed, $cat_view);
+ 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"]);
}
- if ($subop == "MarkAllRead") {
- catchup_feed($link, $feed, $cat_view);
-
- if (get_pref($link, 'ON_CATCHUP_SHOW_NEXT_FEED')) {
- if ($next_unread_feed) {
- $feed = $next_unread_feed;
- }
- }
- }
-
- 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 "<div align='center'>
- Feed not found.</div>";
- 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 "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
- <script type=\"text/javascript\" src=\"prototype.js\"></script>
- <script type=\"text/javascript\" src=\"functions.js?$script_dt_add\"></script>
- <script type=\"text/javascript\" src=\"viewfeed.js?$script_dt_add\"></script>
- <!--[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]-->
- </head><body $rtl_tag>
- <script type=\"text/javascript\">
- if (document.addEventListener) {
- document.addEventListener(\"DOMContentLoaded\", init, null);
- }
- window.onload = init;
- </script>"; */
-
- /// START /////////////////////////////////////////////////////////////////////////////////
-
- $search = db_escape_string($_GET["query"]);
- $search_mode = db_escape_string($_GET["search_mode"]);
- $match_on = db_escape_string($_GET["match_on"]);
+ print "<headlines id=\"$feed\"><![CDATA[";
- if (!$match_on) {
- $match_on = "both";
- }
+ $ret = outputHeadlinesList($link, $feed, $subop,
+ $view_mode, $limit, $cat_view, $next_unread_feed, $offset);
- $qfh_ret = queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on);
+ $topmost_article_ids = $ret[0];
+ $headlines_count = $ret[1];
+ $returned_feed = $ret[2];
+ $disable_cache = $ret[3];
- $result = $qfh_ret[0];
- $feed_title = $qfh_ret[1];
- $feed_site_url = $qfh_ret[2];
- $last_error = $qfh_ret[3];
-
- /// STOP //////////////////////////////////////////////////////////////////////////////////
+ print "]]></headlines>";
- print "<div id=\"headlinesContainer\" $rtl_tag>";
+ print "<headlines-count value=\"$headlines_count\"/>";
- if (!$result) {
- print "<div align='center'>
- Could not display feed (query failed). Please check label match syntax or local configuration.</div>";
- return;
- }
-
- if (db_num_rows($result) > 0) {
+ $headlines_unread = getFeedUnread($link, $returned_feed);
- print_headline_subtoolbar($link, $feed_site_url, $feed_title, false,
- $rtl_content, $feed, $cat_view, $search, $match_on, $search_mode);
+ print "<headlines-unread value=\"$headlines_unread\"/>";
+ printf("<disable-cache value=\"%d\"/>", $disable_cache);
- print "<div id=\"headlinesInnerContainer\">";
+ if ($_GET["debug"]) $timing_info = print_checkpoint("10", $timing_info);
- if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
- print "<table class=\"headlinesList\" id=\"headlinesList\"
- cellspacing=\"0\" width=\"100%\">";
- }
-
- $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 = "<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;
- $is_unread = true;
- } else {
- $is_unread = false;
- }
-
- if ($line["marked"] == "t" || $line["marked"] == "1") {
- $marked_pic = "<img id=\"FMARKPIC-$id\" src=\"images/mark_set.png\"
- alt=\"Reset mark\" onclick='javascript:toggleMark($id)'>";
- } else {
- $marked_pic = "<img id=\"FMARKPIC-$id\" src=\"images/mark_unset.png\"
- alt=\"Set mark\" onclick='javascript:toggleMark($id)'>";
- }
-
-# $content_link = "<a target=\"_new\" href=\"".$line["link"]."\">" .
-# $line["title"] . "</a>";
-
- $content_link = "<a href=\"javascript:view($id,$feed_id);\">" .
- $line["title"] . "</a>";
-
-# $content_link = "<a href=\"javascript:viewContentUrl('".$line["link"]."');\">" .
-# $line["title"] . "</a>";
-
- 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"]));
- }
-
- if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
- $content_preview = truncate_string(strip_tags($line["content_preview"]),
- 100);
- }
-
- $entry_author = $line["author"];
-
- if ($entry_author) {
- $entry_author = " - by $entry_author";
- }
-
- if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
-
- 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'>
- <a href=\"javascript:viewfeed($feed_id, '', false)\">".
- $line["feed_title"]."</a> </td>";
- } else {
- print "<td class='hlContent' valign='middle'>";
-
- print "<a href=\"javascript:view($id,$feed_id);\">" .
- $line["title"];
-
- if (get_pref($link, 'SHOW_CONTENT_PREVIEW') && !$rtl_tag) {
- 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 {
-
- if ($is_unread) {
- $add_class = "Unread";
- } else {
- $add_class = "";
- }
-
- print "<div class=\"cdmArticle$add_class\" id=\"RROW-$id\">";
-
- print "<div class=\"cdmHeader\">";
-
- print "<div style=\"float : right\">$updated_fmt,
- <a class=\"cdmToggleLink\"
- href=\"javascript:toggleUnread($id)\">Toggle unread</a>
- </div>";
-
- print "<a class=\"title\"
- onclick=\"javascript:toggleUnread($id, 0)\"
- target=\"new\" href=\"".$line["link"]."\">".$line["title"]."</a>";
-
- print $entry_author;
-
- if ($line["feed_title"]) {
- print " (<a href='javascript:viewfeed($feed_id)'>".$line["feed_title"]."</a>)";
- }
-
- print "</div>";
-
- print "<div class=\"cdmContent\">" . $line["content_preview"] . "</div><br clear=\"all\">";
-
- print "<div style=\"float : right\">$marked_pic</div>
- <div lass=\"cdmFooter\">
- <input type=\"checkbox\" onclick=\"toggleSelectRowById(this,
- 'RROW-$id')\" class=\"feedCheckBox\" id=\"RCHK-$id\"></div>";
-
-# print "<div align=\"center\"><a class=\"cdmToggleLink\"
-# href=\"javascript:toggleUnread($id)\">
-# Toggle unread</a></div>";
-
- print "</div>";
-
- }
-
- ++$lnum;
- }
-
- if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
- print "</table>";
+ if (is_array($topmost_article_ids) && !get_pref($link, 'COMBINED_DISPLAY_MODE')) {
+ print "<articles>";
+ foreach ($topmost_article_ids as $id) {
+ outputArticleXML($link, $id, $feed, false);
}
+ print "</articles>";
+ }
- print "</div>";
+ if ($_GET["debug"]) $timing_info = print_checkpoint("20", $timing_info);
-// print_headline_subtoolbar($link,
-// "javascript:catchupPage()", "Mark page as read", true, $rtl_content);
+ print "<counters>";
+ getAllCounters($link, $omode, $feed);
+ print "</counters>";
+ if ($_GET["debug"]) $timing_info = print_checkpoint("30", $timing_info);
- } else {
- print "<div class='whiteBox'>No articles found.</div>";
- }
+ print_runtime_info($link);
- print "</div>";
+ print "</reply>";
}
if ($op == "pref-feeds") {
module_popup_dialog($link);
}
+ if ($op == "pref-pub-items") {
+ module_pref_pub_items($link);
+ }
+
+
// update feeds of all users, may be used anonymously
if ($op == "globalUpdateFeeds") {
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
+ WHERE owner_uid = id) AS stored_articles,
+ SUBSTRING(created,1,16) AS created
FROM ttrss_users
WHERE id = '$uid'");
$last_login = date(get_pref($link, 'LONG_DATE_FORMAT'),
strtotime(db_fetch_result($result, 0, "last_login")));
+
+ $created = date(get_pref($link, 'LONG_DATE_FORMAT'),
+ strtotime(db_fetch_result($result, 0, "created")));
+
$access_level = db_fetch_result($result, 0, "access_level");
$stored_articles = db_fetch_result($result, 0, "stored_articles");
# print "<tr><td>Username</td><td>$login</td></tr>";
# print "<tr><td>Access level</td><td>$access_level</td></tr>";
- print "<tr><td>Last logged in</td><td>$last_login</td></tr>";
- print "<tr><td>Stored articles</td><td>$stored_articles</td></tr>";
+ print "<tr><td>".__('Registered')."</td><td>$created</td></tr>";
+ print "<tr><td>".__('Last logged in')."</td><td>$last_login</td></tr>";
+ print "<tr><td>".__('Stored articles')."</td><td>$stored_articles</td></tr>";
$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>";
+ print "<tr><td>".__('Subscribed feeds count')."</td><td>$num_feeds</td></tr>";
/* $result = db_query($link, "SELECT
SUM(LENGTH(content)+LENGTH(title)+LENGTH(link)+LENGTH(guid)) AS db_size
print "</table>";
- print "<h1>Subscribed feeds</h1>";
+ print "<h1>".__('Subscribed feeds')."</h1>";
$result = db_query($link, "SELECT id,title,site_url FROM ttrss_feeds
WHERE owner_uid = '$uid' ORDER BY title");
module_pref_feed_browser($link);
}
+ if ($op == "publish") {
+ $key = db_escape_string($_GET["key"]);
+
+ $result = db_query($link, "SELECT login, owner_uid
+ FROM ttrss_user_prefs, ttrss_users WHERE
+ pref_name = '_PREFS_PUBLISH_KEY' AND
+ value = '$key' AND
+ ttrss_users.id = owner_uid");
+
+ if (db_num_rows($result) == 1) {
+ $owner = db_fetch_result($result, 0, "owner_uid");
+ $login = db_fetch_result($result, 0, "login");
+
+ generate_syndicated_feed($link, $owner, -2, false);
+
+ } else {
+ print "<error>User not found</error>";
+ }
+
+ }
+
if ($op == "rss") {
$feed = db_escape_string($_GET["id"]);
$user = db_escape_string($_GET["user"]);
if ($_SESSION["uid"] ||
http_authenticate_user($link)) {
- generate_syndicated_feed($link, $feed, $is_cat,
+ generate_syndicated_feed($link, 0, $feed, $is_cat,
$search, $search_mode, $match_on);
}
+
}
if ($op == "labelFromSearch") {