-<?php\r
-\r
-namespace Friendica\Core\Cache;\r
-\r
-use dba;\r
-use Friendica\Core\Cache;\r
-use Friendica\Database\DBM;\r
-use Friendica\Util\DateTimeFormat;\r
-\r
-/**\r
- * Database Cache Driver\r
- *\r
- * @author Hypolite Petovan <mrpetovan@gmail.com>\r
- */\r
-class DatabaseCacheDriver implements ICacheDriver\r
-{\r
- public function get($key)\r
- {\r
- $cache = dba::selectFirst('cache', ['v'], ['`k` = ? AND `expires` >= ?', $key, DateTimeFormat::utcNow()]);\r
-\r
- if (DBM::is_result($cache)) {\r
- $cached = $cache['v'];\r
- $value = @unserialize($cached);\r
-\r
- // Only return a value if the serialized value is valid.\r
- // We also check if the db entry is a serialized\r
- // boolean 'false' value (which we want to return).\r
- if ($cached === serialize(false) || $value !== false) {\r
- return $value;\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
- public function set($key, $value, $duration = Cache::MONTH)\r
- {\r
- $fields = [\r
- 'v' => serialize($value),\r
- 'expires' => DateTimeFormat::utc('now + ' . $duration . ' seconds'),\r
- 'updated' => DateTimeFormat::utcNow()\r
- ];\r
-\r
- return dba::update('cache', $fields, ['k' => $key], true);\r
- }\r
-\r
- public function delete($key)\r
- {\r
- return dba::delete('cache', ['k' => $key]);\r
- }\r
-\r
- public function clear()\r
- {\r
- return dba::delete('cache', ['`expires` < NOW()']);\r
- }\r
-}\r
+<?php
+
+namespace Friendica\Core\Cache;
+
+use Friendica\Core\Cache;
+use Friendica\Database\dba;
+use Friendica\Database\DBM;
+use Friendica\Util\DateTimeFormat;
+
+/**
+ * Database Cache Driver
+ *
+ * @author Hypolite Petovan <mrpetovan@gmail.com>
+ */
+class DatabaseCacheDriver extends AbstractCacheDriver implements ICacheDriver
+{
+ public function get($key)
+ {
+ $cache = dba::selectFirst('cache', ['v'], ['`k` = ? AND `expires` >= ?', $key, DateTimeFormat::utcNow()]);
+
+ if (DBM::is_result($cache)) {
+ $cached = $cache['v'];
+ $value = @unserialize($cached);
+
+ // Only return a value if the serialized value is valid.
+ // We also check if the db entry is a serialized
+ // boolean 'false' value (which we want to return).
+ if ($cached === serialize(false) || $value !== false) {
+ return $value;
+ }
+ }
+
+ return null;
+ }
+
+ public function set($key, $value, $ttl = Cache::FIVE_MINUTES)
+ {
+ $fields = [
+ 'v' => serialize($value),
+ 'expires' => DateTimeFormat::utc('now + ' . $ttl . 'seconds'),
+ 'updated' => DateTimeFormat::utcNow()
+ ];
+
+ return dba::update('cache', $fields, ['k' => $key], true);
+ }
+
+ public function delete($key)
+ {
+ return dba::delete('cache', ['k' => $key]);
+ }
+
+ public function clear($outdated = true)
+ {
+ if ($outdated) {
+ return dba::delete('cache', ['`expires` < NOW()']);
+ } else {
+ return dba::delete('cache', ['`k` IS NOT NULL ']);
+ }
+ }
+}