Check that provided class implements IStorage in StorageManager::setBackend

- Add notice in admin if setting value change failed
- Add notice in console if setting value change failed
This commit is contained in:
Hypolite Petovan 2019-03-17 19:12:20 -04:00
parent f225a6c51a
commit 7e2e2f425e
3 changed files with 15 additions and 3 deletions

View file

@ -1200,7 +1200,9 @@ function admin_page_site_post(App $a)
* @var $storagebackend \Friendica\Model\Storage\IStorage
*/
$storagebackend = Strings::escapeTags(trim(defaults($_POST, 'storagebackend', '')));
StorageManager::setBackend($storagebackend);
if (!StorageManager::setBackend($storagebackend)) {
info(L10n::t('Invalid storage backend setting value.'));
}
// save storage backend form
if (!is_null($storagebackend) && $storagebackend != "") {

View file

@ -106,7 +106,11 @@ HELP;
return -1;
}
StorageManager::setBackend($class);
if (!StorageManager::setBackend($class)) {
$this->out($class . ' is not a valid backend storage class.');
return -1;
}
return 0;
}

View file

@ -54,12 +54,18 @@ class StorageManager
* @brief Set current storage backend class
*
* @param string $class Backend class name
* @return bool
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function setBackend($class)
{
/// @todo Check that $class implements IStorage
if (!in_array('Friendica\Model\Storage\IStorage', class_implements($class))) {
return false;
}
Config::set('storage', 'class', $class);
return true;
}
/**