From 2e35a7070b17a7bbc01730071391382f9cbe09ea Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:08:32 +0400 Subject: [PATCH] generated feeds: support if-modified-since --- backend.php | 2 -- classes/handler/public.php | 24 +++++++++++++++++++++++- public.php | 2 -- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/backend.php b/backend.php index 41481a963..9eb3989e4 100644 --- a/backend.php +++ b/backend.php @@ -43,8 +43,6 @@ require_once "db.php"; require_once "db-prefs.php"; - no_cache_incantation(); - startup_gettext(); $script_started = microtime(true); diff --git a/classes/handler/public.php b/classes/handler/public.php index 37c704584..151447540 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -21,11 +21,32 @@ class Handler_Public extends Handler { else if ($feed == -1) $date_sort_field = "last_marked DESC"; + $qfh_ret = queryFeedHeadlines($this->link, $feed, + 1, $view_mode, $is_cat, $search, $search_mode, + $date_sort_field, $offset, $owner_uid, + false, 0, false, true); + + $result = $qfh_ret[0]; + + if (db_num_rows($result) != 0) { + $ts = strtotime(db_fetch_result($result, 0, "date_entered")); + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && + strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified) { + header('HTTP/1.0 304 Not Modified'); + return; + } + + $last_modified = gmdate("D, d M Y H:i:s", $ts) . " GMT"; + header("Last-Modified: $last_modified", true); + } + $qfh_ret = queryFeedHeadlines($this->link, $feed, $limit, $view_mode, $is_cat, $search, $search_mode, $date_sort_field, $offset, $owner_uid, false, 0, false, true); + $result = $qfh_ret[0]; $feed_title = htmlspecialchars($qfh_ret[1]); $feed_site_url = $qfh_ret[2]; @@ -53,7 +74,8 @@ class Handler_Public extends Handler { $tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true); - while ($line = db_fetch_assoc($result)) { + while ($line = db_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); diff --git a/public.php b/public.php index dccd77f43..8477f95fc 100644 --- a/public.php +++ b/public.php @@ -24,8 +24,6 @@ require_once "db.php"; require_once "db-prefs.php"; - no_cache_incantation(); - startup_gettext(); $script_started = microtime(true);