From 6c5bb4362957c26e8b340c3d7bdc49d14b51ad5e Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 4 Jan 2010 09:09:21 -0800 Subject: Apply patch for Kohana ticket #2477 --- system/helpers/expires.php | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'system/helpers') diff --git a/system/helpers/expires.php b/system/helpers/expires.php index ce0482c8..5f599e13 100644 --- a/system/helpers/expires.php +++ b/system/helpers/expires.php @@ -17,12 +17,16 @@ class expires_Core { * @param integer Seconds before the content expires * @return integer Timestamp when the content expires */ - public static function set($seconds = 60) + public static function set($seconds = 60, $last_modified=null) { $now = time(); $expires = $now + $seconds; + if (empty($last_modified)) + { + $last_modified = $now; + } - header('Last-Modified: '.gmdate('D, d M Y H:i:s T', $now)); + header('Last-Modified: '.gmdate('D, d M Y H:i:s T', $last_modified)); // HTTP 1.0 header('Expires: '.gmdate('D, d M Y H:i:s T', $expires)); @@ -66,26 +70,32 @@ class expires_Core { * @uses expires::get() * * @param integer Maximum age of the content in seconds + * @param integer Last modified timestamp in seconds * @return integer|boolean Timestamp of the If-Modified-Since header or FALSE when header is lacking or malformed */ - public static function check($seconds = 60) + public static function check($seconds = 60, $modified=null) { if ($last_modified = expires::get()) { - $expires = $last_modified + $seconds; - $max_age = $expires - time(); + $now = time(); + + if (empty($modified)) + { + $modified = $now; + } - if ($max_age > 0) + if ($modified <= $last_modified) { // Content has not expired header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified'); header('Last-Modified: '.gmdate('D, d M Y H:i:s T', $last_modified)); + $expires = $now + $seconds; // HTTP 1.0 header('Expires: '.gmdate('D, d M Y H:i:s T', $expires)); // HTTP 1.1 - header('Cache-Control: max-age='.$max_age); + header('Cache-Control: max-age='.$seconds); // Clear any output Event::add('system.display', create_function('', 'Kohana::$output = "";')); -- cgit v1.2.3