forked from Sysix/dynao-CMS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cache.php
139 lines (100 loc) · 2.12 KB
/
cache.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
class cache {
static protected $cache = true;
static protected $time = 100;
/**
* Setzt den Cache auf an/aus
*
* @param bool $bool An/Aus
*
*/
static public function setCache($bool) {
self::$cache = (bool)$bool;
}
/**
* Gibt einen Namen für die Datei raus
*
* @param mixed $id eine ID
* @param mixed $table eine Tabelle
* @return string
*
*/
static public function getFileName($id, $table) {
return md5($id.$table).'.cache';
}
/**
* Löscht eine Cache Datei
*
* @param string $file Der Dateiname
* @return bool
*
*/
static public function deleteFile($file) {
return unlink(dir::cache($file));
return true;
}
/**
* Überprüft ob die Cache Datei noch vorhanden ist
*
* @param string $file Der Dateiname
* @param int $time Zeit zum Leben der Datei, wenn auf false wird die Standardzeit genommen
* @return bool
*
*/
static public function exist($file, $time = false) {
if($time === false) {
$time = self::$time;
}
if(file_exists(dir::cache($file))) {
if((time() - filemtime(dir::cache($file))) >= $time) {
self::deleteFile($file);
clearstatcache();
return false;
}
clearstatcache();
return true;
}
return false;
}
/**
* Die Datei erstellen
*
* @param string $content Der Inhalt der Datei
* @param string $file Der Dateiname
* @return bool
*
*/
static public function write($content, $file) {
if(self::$cache === true) {
if(!file_put_contents(dir::cache($file), $content, LOCK_EX)) {
return false;
}
}
return true;
}
/**
* Auslesen der Datei
*
* @param string $file Der Dateiname
* @return string
*
*/
static public function read($file) {
return file_get_contents(dir::cache($file));
}
/**
* Die ganzen Cache Dateien löschen
*
*/
static public function clear($folder = '') {
if($dir = opendir(dir::cache($folder))) {
while (($file = readdir($dir)) !== false) {
if(is_file($file)) {
self::deleteFile($file);
}
}
closedir($dir);
}
}
}
?>