From 0ac9a84dcc53c93e18989f5720236f75005dd09d Mon Sep 17 00:00:00 2001
From: oliver <oliver@samera.com.py>
Date: Tue, 1 Aug 2006 06:11:18 +0200
Subject: [PATCH] http_conditionalRequest clean-up

darcs-hash:20060801041118-b3fbc-9240577694a28b3d4829a9c7ae1014f69d6422a9.gz
---
 inc/pageutils.php | 69 +++++++++++++++++++++++++++--------------------
 1 file changed, 40 insertions(+), 29 deletions(-)

diff --git a/inc/pageutils.php b/inc/pageutils.php
index 4814a7caf..a478ecd3a 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -398,37 +398,48 @@ function isVisiblePage($id){
 /**
  * Checks and sets HTTP headers for conditional HTTP requests
  *
- * @author Simon Willison <swillison@gmail.com>
- * @link   http://simon.incutio.com/archive/2003/04/23/conditionalGet
+ * @author   Simon Willison <swillison@gmail.com>
+ * @link     http://simon.incutio.com/archive/2003/04/23/conditionalGet
+ * @param    timestamp $timestamp lastmodified time of the cache file
+ * @returns  void or void with previously header() commands executed
  */
 function http_conditionalRequest($timestamp){
-    // A PHP implementation of conditional get, see
-    //   http://fishbowl.pastiche.org/archives/001132.html
-    $last_modified = substr(date('r', $timestamp), 0, -5).'GMT';
-    $etag = '"'.md5($last_modified).'"';
-    // Send the headers
-    header("Last-Modified: $last_modified");
-    header("ETag: $etag");
-    // See if the client has provided the required headers
-    $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
-        stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
-        false;
-    $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
-        stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
-        false;
-    if (!$if_modified_since && !$if_none_match) {
-        return;
-    }
-    // At least one of the headers is there - check them
-    if ($if_none_match && $if_none_match != $etag) {
-        return; // etag is there but doesn't match
-    }
-    if ($if_modified_since && $if_modified_since != $last_modified) {
-        return; // if-modified-since is there but doesn't match
-    }
-    // Nothing has changed since their last request - serve a 304 and exit
-    header('HTTP/1.0 304 Not Modified');
-    exit;
+  // A PHP implementation of conditional get, see
+  //   http://fishbowl.pastiche.org/archives/001132.html
+  $last_modified = substr(date('r', $timestamp), 0, -5).'GMT';
+  $etag = '"'.md5($last_modified).'"';
+  // Send the headers
+  header("Last-Modified: $last_modified");
+  header("ETag: $etag");
+  // See if the client has provided the required headers
+  if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
+    $if_modified_since = stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
+  }else{
+    $if_modified_since = false;
+  }
+
+  if (isset($_SERVER['HTTP_IF_NONE_MATCH'])){
+    $if_none_match = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
+  }else{
+    $if_none_match = false;
+  }
+
+  if (!$if_modified_since && !$if_none_match){
+    return;
+  }
+
+  // At least one of the headers is there - check them
+  if ($if_none_match && $if_none_match != $etag) {
+    return; // etag is there but doesn't match
+  }
+
+  if ($if_modified_since && $if_modified_since != $last_modified) {
+    return; // if-modified-since is there but doesn't match
+  }
+
+  // Nothing has changed since their last request - serve a 304 and exit
+  header('HTTP/1.0 304 Not Modified');
+  exit;
 }
 
 //Setup VIM: ex: et ts=2 enc=utf-8 :
-- 
GitLab