]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Cache/DatabaseCacheDriver.php
Update "mrpetovan" email address
[friendica.git] / src / Core / Cache / DatabaseCacheDriver.php
index 0aefc812b9bedb6e2ea4c6002598e94669dc49b4..ca4842a4686db98247fa41fb19bf06da3ffa11de 100644 (file)
@@ -1,56 +1,59 @@
-<?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` >= NOW()`', $key]);\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 + ' . Cache::duration($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\Util\DateTimeFormat;
+
+/**
+ * Database Cache Driver
+ *
+ * @author Hypolite Petovan <hypolite@mrpetovan.com>
+ */
+class DatabaseCacheDriver extends AbstractCacheDriver implements ICacheDriver
+{
+       public function get($key)
+       {
+               $cache = DBA::selectFirst('cache', ['v'], ['`k` = ? AND `expires` >= ?', $key, DateTimeFormat::utcNow()]);
+
+               if (DBA::isResult($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 ']);
+               }
+       }
+}