2
/////////////////////////////////////////////////////////
4
// include/cache.FS.inc
6
// (C)Copyright 2003 Ryo Chijiiwa <Ryo@IlohaMail.org>
8
// This file is part of IlohaMail, and released under GPL.
9
// See COPYING, or http://www.fsf.org/copyleft/gpl.html
11
/////////////////////////////////////////////////////////
12
/********************************************************
13
PURPOSE: Unified interface to read/write cache
15
********************************************************/
17
$EXISTING_CACHES = array();
19
function cache_read($user, $host, $key){
20
global $DB_CACHE_TABLE;
21
global $EXISTING_CACHES;
22
global $session_dataID;
25
if (!$db->connect()) return false;
28
$sql = "SELECT * FROM $DB_CACHE_TABLE WHERE owner='$session_dataID' and cache_key='$key'";
29
$result = $db->query($sql);
30
if (($result) && ($db->num_rows($result)>0)){
31
$a = $db->fetch_row($result);
32
$data = unserialize($a["cache_data"]);
33
$EXISTING_CACHES[$key] = $a["id"];
36
$EXISTING_CACHES[$key] = false;
42
function cache_write($user, $host, $key, $data, $volatile=true){
43
global $DB_CACHE_TABLE;
44
global $session_dataID;
47
if (!$db->connect()) return false;
49
if (!$EXISTING_CACHES[$key]){
50
$sql = "SELECT id FROM $DB_CACHE_TABLE WHERE owner='$session_dataID' and cache_key='$key'";
51
$result = $db->query($sql);
52
if (($result) && ($db->num_rows($result)>0)){
53
$a = $db->fetch_row($result);
54
$EXISTING_CACHES[$key] = $a["id"];
56
$EXISTING_CACHES[$key] = false;
60
$data = serialize($data);
61
if ($EXISTING_CACHES[$key]){
62
$id = $EXISTING_CACHES[$key];
63
$ownerID = $session_dataID;
64
$sql = "UPDATE $DB_CACHE_TABLE SET cache_data='$data',volatile='$volatile' WHERE id='$id' AND owner='$session_dataID'";
65
$result = $db->query($sql);
67
$ownerID = $session_dataID;
68
$sql = "INSERT INTO $DB_CACHE_TABLE (owner, cache_key, cache_data, cache_ts, volatile) ";
69
$sql.= "VALUES ('$session_dataID', '$key', '$data', '".time()."', '$volatile')";
70
$result = $db->query($sql);
76
function cache_clear($user, $host, $key){
77
global $DB_CACHE_TABLE;
78
global $session_dataID;
81
if (!$db->connect()) return false;
83
$sql = "UPDATE $DB_CACHE_TABLE SET cache_data='' WHERE owner='$session_dataID' and cache_key=$key'";
84
return $db->query($sql);
87
function cache_clear_all($user, $host){
88
global $session_dataID;
89
global $DB_CACHE_TABLE;
92
if (!$db->connect()) return false;
94
$expire = time() - (60 * 60 * 24 * 30); //timestamp 30 days ago
95
$sql = "DELETE FROM $DB_CACHE_TABLE ";
96
$sql.= " WHERE (owner='$session_dataID' and volatile='1')";
97
$sql.= " OR (cache_ts < '$expire' and volatile='1')";
98
return $db->query($sql);
b'\\ No newline at end of file'