/
Proxy.php
169 lines (153 loc) · 3.84 KB
/
Proxy.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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<?php
/**
* This file is part of the sfCacheTaggingPlugin package.
* (c) 2009-2010 Ilya Sabelnikov <fruit.dev@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* Class to replace doctrine cache engine with symfony's cache engine
* This is only for storing cache with its associated tags
* (Doctrine does not yet supports ability to add tags on stored cache)
*
* @package sfCacheTaggingPlugin
* @subpackage doctrine
* @author Ilya Sabelnikov <fruit.dev@gmail.com>
*/
class Doctrine_Cache_Proxy extends Doctrine_Cache_Driver
{
/**
* Short method to retrieve sfTaggingCache for internal use
*
* @throws sfCacheDisabledException when some mandatory objects are missing
* @return sfTaggingCache
*/
protected function getTaggingCache ()
{
return sfCacheTaggingToolkit::getTaggingCache();
}
/**
* @see parent::_doSave()
* @return boolean
*/
protected function _doSave ($id, $data, $ttl = false)
{
try
{
return $this->getTaggingCache()->set($id, $data, ! $ttl ? null : $ttl);
}
catch (sfCacheDisabledException $e)
{
sfCacheTaggingToolkit::notifyApplicationLog(
__CLASS__, $e->getMessage(), sfLogger::NOTICE
);
}
return false;
}
/**
* @see parent::_doSave()
* @return boolean
*/
protected function _doSaveWithTags ($id, $data, $ttl, $tags)
{
try
{
return $this
->getTaggingCache()
->set($id, $data, ! $ttl ? null : $ttl, $tags);
}
catch (sfCacheDisabledException $e)
{
sfCacheTaggingToolkit::notifyApplicationLog(
__CLASS__, $e->getMessage(), sfLogger::NOTICE
);
}
return false;
}
/**
* @return array
*/
protected function _getCacheKeys ()
{
try
{
return $this->getTaggingCache()->getCacheKeys();
}
catch (sfCacheDisabledException $e)
{
sfCacheTaggingToolkit::notifyApplicationLog(
__CLASS__, $e->getMessage(), sfLogger::NOTICE
);
}
return;
}
/**
* @see parent::_doDelete()
* @return boolean
*/
protected function _doDelete ($id)
{
try
{
return $this->getTaggingCache()->remove($id);
}
catch (sfCacheDisabledException $e)
{
sfCacheTaggingToolkit::notifyApplicationLog(
__CLASS__, $e->getMessage(), sfLogger::NOTICE
);
}
return false;
}
/**
* @see parent::_doContains()
* @return boolean
*/
protected function _doContains ($id)
{
try
{
return $this->getTaggingCache()->has($id);
}
catch (sfCacheDisabledException $e)
{
sfCacheTaggingToolkit::notifyApplicationLog(
__CLASS__, $e->getMessage(), sfLogger::NOTICE
);
}
return false;
}
/**
* @see parent::_doFetch()
* @return mixed
*/
protected function _doFetch ($id, $testCacheValidity = true)
{
try
{
$value = $this->getTaggingCache()->get($id);
return null === $value ? false : $value;
}
catch (sfCacheDisabledException $e)
{
sfCacheTaggingToolkit::notifyApplicationLog(
__CLASS__, $e->getMessage(), sfLogger::NOTICE
);
}
return false;
}
/**
* Saves cache with its tags
*
* @param string $id
* @param string $data
* @param int $ttl Time To Live
* @param array $tags
* @return boolean
*/
public function saveWithTags ($id, $data, $ttl = false, array $tags = array())
{
return $this->_doSaveWithTags($this->_getKey($id), $data, $ttl, $tags);
}
}