Fix loading SystemResource files

This commit is contained in:
Philipp Holzer 2020-01-17 19:31:34 +01:00
parent b15c7bb357
commit 9bb5891645
No known key found for this signature in database
GPG Key ID: D8365C3D36B77D90
2 changed files with 12 additions and 7 deletions

View File

@ -62,7 +62,8 @@ class StorageManager
$currentName = $this->config->get('storage', 'name', ''); $currentName = $this->config->get('storage', 'name', '');
$this->currentBackend = $this->getByName($currentName); // you can only use user backends as a "default" backend, so the second parameter is true
$this->currentBackend = $this->getByName($currentName, true);
} }
/** /**
@ -79,13 +80,13 @@ class StorageManager
* @brief Return storage backend class by registered name * @brief Return storage backend class by registered name
* *
* @param string|null $name Backend name * @param string|null $name Backend name
* @param boolean $userBackend Just return instances in case it's a user backend (e.g. not SystemResource) * @param boolean $userBackend True, if just user specific instances should be returrned (e.g. not SystemResource)
* *
* @return Storage\IStorage|null null if no backend registered at $name * @return Storage\IStorage|null null if no backend registered at $name
* *
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public function getByName(string $name = null, $userBackend = true) public function getByName(string $name = null, $userBackend = false)
{ {
// If there's no cached instance create a new instance // If there's no cached instance create a new instance
if (!isset($this->backendInstances[$name])) { if (!isset($this->backendInstances[$name])) {
@ -133,7 +134,7 @@ class StorageManager
* *
* @return boolean True, if the backend is a valid backend * @return boolean True, if the backend is a valid backend
*/ */
public function isValidBackend(string $name = null, bool $userBackend = true) public function isValidBackend(string $name = null, bool $userBackend = false)
{ {
return array_key_exists($name, $this->backends) || return array_key_exists($name, $this->backends) ||
(!$userBackend && $name === Storage\SystemResource::getName()); (!$userBackend && $name === Storage\SystemResource::getName());
@ -148,12 +149,12 @@ class StorageManager
*/ */
public function setBackend(string $name = null) public function setBackend(string $name = null)
{ {
if (!$this->isValidBackend($name)) { if (!$this->isValidBackend($name, false)) {
return false; return false;
} }
if ($this->config->set('storage', 'name', $name)) { if ($this->config->set('storage', 'name', $name)) {
$this->currentBackend = $this->getByName($name); $this->currentBackend = $this->getByName($name, false);
return true; return true;
} else { } else {
return false; return false;

View File

@ -139,7 +139,11 @@ class StorageManagerTest extends DatabaseTest
{ {
$storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n); $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
$this->assertEquals($userBackend, $storageManager->isValidBackend($name)); // true in every of the backends
$this->assertEquals(!empty($assertName), $storageManager->isValidBackend($name));
// if userBackend is set to true, filter out e.g. SystemRessource
$this->assertEquals($userBackend, $storageManager->isValidBackend($name, true));
} }
/** /**