]> git.mxchange.org Git - friendica.git/blob - src/Core/Cache/TraitCompareDelete.php
Fix config value type in MemcachedCacheDriver
[friendica.git] / src / Core / Cache / TraitCompareDelete.php
1 <?php
2
3 namespace Friendica\Core\Cache;
4
5 use Friendica\Core\Cache;
6
7 /**
8  * Trait TraitCompareSetDelete
9  *
10  * This Trait is to compensate non native "exclusive" sets/deletes in caches
11  *
12  * @package Friendica\Core\Cache
13  */
14 trait TraitCompareDelete
15 {
16         abstract public function get($key);
17
18         abstract public function set($key, $value, $ttl = Cache::FIVE_MINUTES);
19
20         abstract public function delete($key);
21
22         abstract public function add($key, $value, $ttl = Cache::FIVE_MINUTES);
23
24         /**
25          * NonNative - Compares if the old value is set and removes it
26          *
27          * @param string $key          The cache key
28          * @param mixed  $value        The old value we know and want to delete
29          * @return bool
30          */
31         public function compareDelete($key, $value) {
32                 if ($this->add($key . "_lock", true)) {
33                         if ($this->get($key) === $value) {
34                                 $this->delete($key);
35                                 $this->delete($key . "_lock");
36                                 return true;
37                         } else {
38                                 $this->delete($key . "_lock");
39                                 return false;
40                         }
41                 } else {
42                         return false;
43                 }
44         }
45 }