blob: 865825e25880fb1fa72fe9ef0584c609a52add4c (
plain)
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
|
<?php
/**
* StudipCache implementation using database table
*
* @package studip
* @subpackage cache
*
* @author Elmar Ludwig <elmar.ludwig@uos.de>
*/
class StudipDbCache implements StudipCache
{
/**
* @return string A translateable display name for this cache class.
*/
public static function getDisplayName(): string
{
return _('Datenbank');
}
/**
* Expire item from the cache.
*
* @param string $arg a single key
*/
public function expire($arg)
{
$db = DBManager::get();
$stmt = $db->prepare('DELETE FROM cache WHERE cache_key = ?');
$stmt->execute([$arg]);
}
/**
* Expire all items from the cache.
*/
public function flush()
{
$db = DBManager::get();
$db->exec('TRUNCATE TABLE cache');
}
/**
* Delete all expired items from the cache.
*/
public function purge()
{
$db = DBManager::get();
$stmt = $db->prepare('DELETE FROM cache WHERE expires < ?');
$stmt->execute([time()]);
}
/**
* Retrieve item from the server.
*
* @param string $arg a single key
*
* @return mixed the previously stored data if an item with such a key
* exists on the server or FALSE on failure.
*/
public function read($arg)
{
$db = DBManager::get();
$stmt = $db->prepare('SELECT content FROM cache WHERE cache_key = ? AND expires > ?');
$stmt->execute([$arg, time()]);
$result = $stmt->fetchColumn();
return $result !== false ? unserialize($result) : false;
}
/**
* Store data at the server.
*
* @param string $name the item's key.
* @param mixed $content the item's content (will be serialized if necessary).
* @param int $expired the item's expiry time in seconds. Optional, defaults to 12h.
*
* @return bool returns TRUE on success or FALSE on failure.
*/
public function write($name, $content, $expires = self::DEFAULT_EXPIRATION)
{
$db = DBManager::get();
$stmt = $db->prepare('REPLACE INTO cache VALUES(?, ?, ?)');
return $stmt->execute([$name, serialize($content), time() + $expires]);
}
/**
* Return statistics.
*
* @see StudipCache::getStats()
*
* @return array|array[]
*/
public function getStats(): array
{
return [
__CLASS__ => [
'name' => _('Anzahl Einträge'),
'value' => DBManager::get()->fetchColumn("SELECT COUNT(*) FROM `cache`")
]
];
}
/**
* Return the Vue component name and props that handle configuration.
*
* @see StudipCache::getConfig()
*
* @return array
*/
public static function getConfig(): array
{
return [
'component' => null,
'props' => []
];
}
}
|