X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=classes%2Fhandler%2Fpublic.php;h=79ed9d0aed74331cfd583b6d8a57cc9ecbfa7068;hb=1ffe3391f902c4baa984982f19e61a0e45de21ff;hp=f2a7730c895f9a9e961d486b623aed1a0b96daa6;hpb=1b4d1a6b449de081f2d45983df11950ac4c453bc;p=tt-rss.git
diff --git a/classes/handler/public.php b/classes/handler/public.php
index f2a7730c..79ed9d0a 100644
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -2,7 +2,7 @@
class Handler_Public extends Handler {
private function generate_syndicated_feed($owner_uid, $feed, $is_cat,
- $limit, $offset, $search, $search_mode, $match_on,
+ $limit, $offset, $search, $search_mode,
$view_mode = false, $format = 'atom') {
require_once "lib/MiniTemplator.class.php";
@@ -12,20 +12,40 @@ class Handler_Public extends Handler {
"padding : 5px; border-style : dashed; border-color : #e7d796;".
"margin-bottom : 1em; color : #9a8c59;";
- if (!$limit) $limit = 100;
+ if (!$limit) $limit = 60;
- if (get_pref($this->link, "SORT_HEADLINES_BY_FEED_DATE", $owner_uid)) {
- $date_sort_field = "updated";
- } else {
- $date_sort_field = "date_entered";
- }
+ $date_sort_field = "date_entered DESC, updated DESC";
if ($feed == -2)
- $date_sort_field = "last_read";
+ $date_sort_field = "last_published DESC";
+ else if ($feed == -1)
+ $date_sort_field = "last_marked DESC";
+
+ $qfh_ret = queryFeedHeadlines($feed,
+ 1, $view_mode, $is_cat, $search, $search_mode,
+ $date_sort_field, $offset, $owner_uid,
+ false, 0, false, true);
+
+ $result = $qfh_ret[0];
+
+ if ($this->dbh->num_rows($result) != 0) {
+ $ts = strtotime($this->dbh->fetch_result($result, 0, "date_entered"));
+
+ if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&
+ strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $ts) {
+ header('HTTP/1.0 304 Not Modified');
+ return;
+ }
- $qfh_ret = queryFeedHeadlines($this->link, $feed,
+ $last_modified = gmdate("D, d M Y H:i:s", $ts) . " GMT";
+ header("Last-Modified: $last_modified", true);
+ }
+
+ $qfh_ret = queryFeedHeadlines($feed,
$limit, $view_mode, $is_cat, $search, $search_mode,
- $match_on, "$date_sort_field DESC", $offset, $owner_uid);
+ $date_sort_field, $offset, $owner_uid,
+ false, 0, false, true);
+
$result = $qfh_ret[0];
$feed_title = htmlspecialchars($qfh_ret[1]);
@@ -34,7 +54,7 @@ class Handler_Public extends Handler {
$feed_self_url = get_self_url_prefix() .
"/public.php?op=rss&id=-2&key=" .
- get_feed_access_key($this->link, -2, false, $owner_uid);
+ get_feed_access_key(-2, false, $owner_uid);
if (!$feed_site_url) $feed_site_url = get_self_url_prefix();
@@ -54,18 +74,20 @@ class Handler_Public extends Handler {
$tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true);
- while ($line = db_fetch_assoc($result)) {
+ while ($line = $this->dbh->fetch_assoc($result)) {
+
$tpl->setVariable('ARTICLE_ID', htmlspecialchars($line['link']), true);
$tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true);
$tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true);
$tpl->setVariable('ARTICLE_EXCERPT',
truncate_string(strip_tags($line["content_preview"]), 100, '...'), true);
- $content = sanitize($this->link, $line["content_preview"], false, $owner_uid);
+ $content = sanitize($line["content_preview"], false, $owner_uid);
if ($line['note']) {
$content = "
Article note: " . $line['note'] . "
" .
$content;
+ $tpl->setVariable('ARTICLE_NOTE', htmlspecialchars($line['note']), true);
}
$tpl->setVariable('ARTICLE_CONTENT', $content, true);
@@ -77,14 +99,14 @@ class Handler_Public extends Handler {
$tpl->setVariable('ARTICLE_AUTHOR', htmlspecialchars($line['author']), true);
- $tags = get_article_tags($this->link, $line["id"], $owner_uid);
+ $tags = get_article_tags($line["id"], $owner_uid);
foreach ($tags as $tag) {
$tpl->setVariable('ARTICLE_CATEGORY', htmlspecialchars($tag), true);
$tpl->addBlock('category');
}
- $enclosures = get_article_enclosures($this->link, $line["id"]);
+ $enclosures = get_article_enclosures($line["id"]);
foreach ($enclosures as $e) {
$type = htmlspecialchars($e['content_type']);
@@ -106,7 +128,11 @@ class Handler_Public extends Handler {
$tpl->addBlock('feed');
$tpl->generateOutputToString($tmp);
- header("Content-Type: text/xml; charset=utf-8");
+ if (@!$_REQUEST["noxml"]) {
+ header("Content-Type: text/xml; charset=utf-8");
+ } else {
+ header("Content-Type: text/plain; charset=utf-8");
+ }
print $tmp;
} else if ($format == 'json') {
@@ -125,20 +151,20 @@ class Handler_Public extends Handler {
$feed['articles'] = array();
- while ($line = db_fetch_assoc($result)) {
+ while ($line = $this->dbh->fetch_assoc($result)) {
$article = array();
$article['id'] = $line['link'];
$article['link'] = $line['link'];
$article['title'] = $line['title'];
$article['excerpt'] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
- $article['content'] = sanitize($this->link, $line["content_preview"], false, $owner_uid);
+ $article['content'] = sanitize($line["content_preview"], false, $owner_uid);
$article['updated'] = date('c', strtotime($line["updated"]));
if ($line['note']) $article['note'] = $line['note'];
if ($article['author']) $article['author'] = $line['author'];
- $tags = get_article_tags($this->link, $line["id"], $owner_uid);
+ $tags = get_article_tags($line["id"], $owner_uid);
if (count($tags) > 0) {
$article['tags'] = array();
@@ -148,7 +174,7 @@ class Handler_Public extends Handler {
}
}
- $enclosures = get_article_enclosures($this->link, $line["id"]);
+ $enclosures = get_article_enclosures($line["id"]);
if (count($enclosures) > 0) {
$article['enclosures'] = array();
@@ -165,8 +191,7 @@ class Handler_Public extends Handler {
array_push($feed['articles'], $article);
}
- header("Content-Type: text/plain; charset=utf-8");
-
+ header("Content-Type: text/json; charset=utf-8");
print json_encode($feed);
} else {
@@ -176,19 +201,19 @@ class Handler_Public extends Handler {
}
function getUnread() {
- $login = db_escape_string($_REQUEST["login"]);
+ $login = $this->dbh->escape_string($_REQUEST["login"]);
$fresh = $_REQUEST["fresh"] == "1";
- $result = db_query($this->link, "SELECT id FROM ttrss_users WHERE login = '$login'");
+ $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE login = '$login'");
- if (db_num_rows($result) == 1) {
- $uid = db_fetch_result($result, 0, "id");
+ if ($this->dbh->num_rows($result) == 1) {
+ $uid = $this->dbh->fetch_result($result, 0, "id");
- print getGlobalUnread($this->link, $uid);
+ print getGlobalUnread($uid);
if ($fresh) {
print ";";
- print getFeedArticles($this->link, -3, false, true, $uid);
+ print getFeedArticles(-3, false, true, $uid);
}
} else {
@@ -198,16 +223,16 @@ class Handler_Public extends Handler {
}
function getProfiles() {
- $login = db_escape_string($_REQUEST["login"]);
+ $login = $this->dbh->escape_string($_REQUEST["login"]);
- $result = db_query($this->link, "SELECT * FROM ttrss_settings_profiles,ttrss_users
+ $result = $this->dbh->query("SELECT * FROM ttrss_settings_profiles,ttrss_users
WHERE ttrss_users.id = ttrss_settings_profiles.owner_uid AND login = '$login' ORDER BY title");
print "