Merge pull request #6991 from fabrixxm/fix/invalid-storage-on-legacy

Allow set empty string storage class for legacy
This commit is contained in:
Hypolite Petovan 2019-04-11 09:04:48 -04:00 committed by GitHub
commit 75387ea171
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 31 deletions

View File

@ -1152,40 +1152,41 @@ 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', '')));
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 != "") {
$storage_opts = $storagebackend::getOptions(); if (StorageManager::setBackend($storagebackend)) {
$storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storagebackend); $storage_opts = $storagebackend::getOptions();
$storage_opts_data = []; $storage_form_prefix = preg_replace('|[^a-zA-Z0-9]|', '', $storagebackend);
foreach($storage_opts as $name => $info) { $storage_opts_data = [];
$fieldname = $storage_form_prefix . '_' . $name; foreach ($storage_opts as $name => $info) {
switch ($info[0]) { // type $fieldname = $storage_form_prefix . '_' . $name;
case 'checkbox': switch ($info[0]) { // type
case 'yesno': case 'checkbox':
$value = !empty($_POST[$fieldname]); case 'yesno':
break; $value = !empty($_POST[$fieldname]);
default: break;
$value = defaults($_POST, $fieldname, ''); default:
$value = defaults($_POST, $fieldname, '');
}
$storage_opts_data[$name] = $value;
} }
$storage_opts_data[$name] = $value; unset($name);
} unset($info);
unset($name);
unset($info); $storage_form_errors = $storagebackend::saveOptions($storage_opts_data);
if (count($storage_form_errors)) {
$storage_form_errors = $storagebackend::saveOptions($storage_opts_data); foreach ($storage_form_errors as $name => $err) {
if (count($storage_form_errors)) { notice('Storage backend, ' . $storage_opts[$name][1] . ': ' . $err);
foreach($storage_form_errors as $name => $err) { }
notice('Storage backend, ' . $storage_opts[$name][1] . ': ' . $err); $a->internalRedirect('admin/site' . $active_panel);
} }
$a->internalRedirect('admin/site' . $active_panel); } else {
info(L10n::t('Invalid storage backend setting value.'));
} }
} }
// Has the directory url changed? If yes, then resubmit the existing profiles there // Has the directory url changed? If yes, then resubmit the existing profiles there
if ($global_directory != Config::get('system', 'directory') && ($global_directory != '')) { if ($global_directory != Config::get('system', 'directory') && ($global_directory != '')) {
@ -1497,17 +1498,22 @@ function admin_page_site(App $a)
*/ */
$storage_current_backend = StorageManager::getBackend(); $storage_current_backend = StorageManager::getBackend();
$storage_backends_choices = [ $storage_backends_choices = [];
'' => L10n::t('Database (legacy)')
]; // show legacy option only if it is the current backend:
foreach($storage_backends as $name=>$class) { // once changed can't be selected anymore
if ($storage_current_backend == '') {
$storage_backends_choices[''] = L10n::t('Database (legacy)');
};
foreach ($storage_backends as $name => $class) {
$storage_backends_choices[$class] = $name; $storage_backends_choices[$class] = $name;
} }
unset($storage_backends); unset($storage_backends);
// build storage config form, // build storage config form,
$storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storage_current_backend); $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storage_current_backend);
$storage_form = []; $storage_form = [];
if (!is_null($storage_current_backend) && $storage_current_backend != "") { if (!is_null($storage_current_backend) && $storage_current_backend != "") {
foreach ($storage_current_backend::getOptions() as $name => $info) { foreach ($storage_current_backend::getOptions() as $name => $info) {

View File

@ -30,6 +30,7 @@ class StorageManager
/** /**
* @brief Return current storage backend class * @brief Return current storage backend class
*
* @return string * @return string
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */