3 namespace Friendica\Core;
5 use Friendica\Core\Config;
10 * @brief Manage storage backends
12 * Core code uses this class to get and set current storage backend class.
13 * Addons use this class to register and unregister additional backends.
17 private static $default_backends = [
18 'Filesystem' => \Friendica\Model\Storage\Filesystem::class,
19 'Database' => \Friendica\Model\Storage\Database::class,
22 private static $backends = [];
24 private static function setup()
26 if (count(self::$backends)==0) {
27 self::$backends = Config::get('storage', 'backends', self::$default_backends);
32 * @brief Return current storage backend class
35 public static function getBackend()
37 return Config::get('storage', 'class', '');
41 * @brief Return storage backend class by registered name
43 * @param string $name Backend name
44 * @return string Empty if no backend registered at $name exists
46 public static function getByName($name)
49 return defaults(self::$backends, $name, '');
53 * @brief Set current storage backend class
55 * @param string $class Backend class name
57 public static function setBackend($class)
59 /// @todo Check that $class implements IStorage
60 Config::set('storage', 'class', $class);
64 * @brief Get registered backends
68 public static function listBackends()
71 return self::$backends;
77 * @brief Register a storage backend class
79 * @param string $name User readable backend name
80 * @param string $class Backend class name
82 public static function register($name, $class)
84 /// @todo Check that $class implements IStorage
86 self::$backends[$name] = $class;
87 Config::set('storage', 'backends', self::$backends);
92 * @brief Unregister a storage backend class
94 * @param string $name User readable backend name
96 public static function unregister($class)
99 unset(self::$backends[$name]);
100 Config::set('storage', 'backends', self::$backends);