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 * @var $storagebackend \Friendica\Model\Storage\IStorage
*/ */
$storagebackend = Strings::escapeTags(trim(defaults($_POST, 'storagebackend', ''))); $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 // save storage backend form
if (!is_null($storagebackend) && $storagebackend != "") { if (!is_null($storagebackend) && $storagebackend != "") {

View file

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

View file

@ -54,12 +54,18 @@ class StorageManager
* @brief Set current storage backend class * @brief Set current storage backend class
* *
* @param string $class Backend class name * @param string $class Backend class name
* @return bool
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public static function setBackend($class) 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); Config::set('storage', 'class', $class);
return true;
} }
/** /**