3 * @copyright Copyright (C) 2010-2022, the Friendica project
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\Cache\Type;
24 use Friendica\Core\Cache\Capability\ICanCache;
27 * Abstract class for common used functions
29 abstract class AbstractCache implements ICanCache
32 * @var string The hostname
36 public function __construct(string $hostName)
38 $this->hostName = $hostName;
42 * Returns the prefix (to avoid namespace conflicts)
46 protected function getPrefix(): string
48 // We fetch with the hostname as key to avoid problems with other applications
49 return $this->hostName;
53 * @param string $key The original key
55 * @return string The cache key used for the cache
57 protected function getCacheKey(string $key): string
59 return $this->getPrefix() . ":" . $key;
63 * @param string[] $keys A list of cached keys
65 * @return string[] A list of original keys
67 protected function getOriginalKeys(array $keys): array
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 string[] $keys The keys, which should get filtered
88 * @param string|null $prefix The prefix (if null, all keys will get returned)
90 * @return string[] The filtered array with just the keys
92 protected function filterArrayKeysByPrefix(array $keys, string $prefix = null): array
99 foreach ($keys as $key) {
100 if (strpos($key, $prefix) === 0) {
101 array_push($result, $key);