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