]> git.mxchange.org Git - friendica.git/blob - src/Core/Cache/AbstractCacheDriver.php
Adding force to update routine
[friendica.git] / src / Core / Cache / AbstractCacheDriver.php
1 <?php
2
3 namespace Friendica\Core\Cache;
4 use Friendica\BaseObject;
5
6
7 /**
8  * Abstract class for common used functions
9  *
10  * Class AbstractCacheDriver
11  *
12  * @package Friendica\Core\Cache
13  */
14 abstract class AbstractCacheDriver extends BaseObject
15 {
16         /**
17          * @param string $key   The original key
18          * @return string               The cache key used for the cache
19          */
20         protected function getCacheKey($key)
21         {
22                 // We fetch with the hostname as key to avoid problems with other applications
23                 return self::getApp()->getHostName() . ":" . $key;
24         }
25
26         /**
27          * @param array $keys   A list of cached keys
28          * @return array        A list of original keys
29          */
30         protected function getOriginalKeys($keys)
31         {
32                 if (empty($keys)) {
33                         return [];
34                 } else {
35                         // Keys are prefixed with the node hostname, let's remove it
36                         array_walk($keys, function (&$value) {
37                                 $value = preg_replace('/^' . self::getApp()->getHostName() . ':/', '', $value);
38                         });
39
40                         sort($keys);
41
42                         return $keys;
43                 }
44         }
45
46         /**
47          * Filters the keys of an array with a given prefix
48          * Returns the filtered keys as an new array
49          *
50          * @param array $array The array, which should get filtered
51          * @param string|null $prefix The prefix (if null, all keys will get returned)
52          *
53          * @return array The filtered array with just the keys
54          */
55         protected function filterArrayKeysByPrefix($array, $prefix = null)
56         {
57                 if (empty($prefix)) {
58                         return array_keys($array);
59                 } else {
60                         $result = [];
61
62                         foreach (array_keys($array) as $key) {
63                                 if (strpos($key, $prefix) === 0) {
64                                         array_push($result, $key);
65                                 }
66                         }
67
68                         return $result;
69                 }
70
71         }
72 }