3 * @copyright Copyright (C) 2020, Friendica
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Core;
24 use Friendica\Core\Cache\ICache;
27 * Abstract class for common used functions
29 abstract class BaseCache implements ICache
32 * @var string The hostname
36 public function __construct(string $hostName)
38 $this->hostName = $hostName;
42 * Returns the prefix (to avoid namespace conflicts)
47 protected function getPrefix()
49 // We fetch with the hostname as key to avoid problems with other applications
50 return $this->hostName;
54 * @param string $key The original key
55 * @return string The cache key used for the cache
58 protected function getCacheKey($key)
60 return $this->getPrefix() . ":" . $key;
64 * @param array $keys A list of cached keys
65 * @return array A list of original keys
67 protected function getOriginalKeys($keys)
72 // Keys are prefixed with the node hostname, let's remove it
73 array_walk($keys, function (&$value) {
74 $value = preg_replace('/^' . $this->hostName . ':/', '', $value);
84 * Filters the keys of an array with a given prefix
85 * Returns the filtered keys as an new array
87 * @param array $keys The keys, which should get filtered
88 * @param string|null $prefix The prefix (if null, all keys will get returned)
90 * @return array The filtered array with just the keys
92 protected function filterArrayKeysByPrefix(array $keys, string $prefix = null)
99 foreach ($keys as $key) {
100 if (strpos($key, $prefix) === 0) {
101 array_push($result, $key);