3 Creates a cache entry in the database for retrieved objects.
9 #-- retrieve URL, but always create/check cache entry
10 function ewiki_cache_url($url, $cache_min=1200) {
11 global $ewiki_cache_ctype;
13 #-- check if fresh enough in cache (20min)
14 $data = ewiki_db::GET($url);
15 if (time() <= $data["lastmodified"] + $cache_min) {
16 $ewiki_cache_ctype = $data["Content-Type"];
17 return($data["content"]);
21 $req = new http_request("GET", $url);
22 $req->header["Accept"] = "application/atom+xml, application/rss+xml, text/rss, xml/*, */*rss*";
23 if ($data["meta"]["Last-Modified"]) {
24 $req->headers["If-Modified-Since"] = $data["meta"]["Last-Modified"];
26 if ($data["meta"]["Etag"]) {
27 $req->headers["If-None-Match"] = $data["meta"]["Etag"];
31 #-- create/overwrite cache entry
32 if ($result->status == 200) {
33 $data = ewiki_db::CREATE($url, 0x0000, "ewiki_cache_url");
34 $data["flags"] = 0x0000;
35 $data["content"] = $result->body;
36 foreach ($result->headers as $i=>$v) {
37 $data["meta"][$i] = $v;
39 $data["meta"]["class"] = "temp";
40 $data["meta"]["kill-after"] = time() + $cache_min;
41 if ($t = $data["meta"]["Last-Modified"]) {
42 // $data["lastmodified"] = ewiki_decode_datetime($t);
44 ewiki_db::WRITE($data,"_OVERWRITE=1");
47 $ewiki_cache_ctype = $data["Content-Type"];
48 return($data["content"]);