From 47aa9daf5a08bbac4c5493265b49e1b4ca4a8505 Mon Sep 17 00:00:00 2001 From: fabrixxm <fabrix.xm@gmail.com> Date: Wed, 10 Apr 2019 08:40:50 +0200 Subject: [PATCH] Tweak storage selection in admin page Don't call `StorageManager::setBackend()` on save when legacy is selected, dont't show legacy option in selectbox after backend is changed from legacy --- mod/admin.php | 54 ++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 0df907cba..7ee48f592 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1154,40 +1154,41 @@ function admin_page_site_post(App $a) * @var $storagebackend \Friendica\Model\Storage\IStorage */ $storagebackend = Strings::escapeTags(trim(defaults($_POST, 'storagebackend', ''))); - if (!StorageManager::setBackend($storagebackend)) { - info(L10n::t('Invalid storage backend setting value.')); - } // save storage backend form if (!is_null($storagebackend) && $storagebackend != "") { - $storage_opts = $storagebackend::getOptions(); - $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storagebackend); - $storage_opts_data = []; - foreach($storage_opts as $name => $info) { - $fieldname = $storage_form_prefix . '_' . $name; - switch ($info[0]) { // type + if (!StorageManager::setBackend($storagebackend)) { + info(L10n::t('Invalid storage backend setting value.')); + } else { + $storage_opts = $storagebackend::getOptions(); + $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storagebackend); + $storage_opts_data = []; + foreach($storage_opts as $name => $info) { + $fieldname = $storage_form_prefix . '_' . $name; + switch ($info[0]) { // type case 'checkbox': case 'yesno': $value = !empty($_POST[$fieldname]); break; default: $value = defaults($_POST, $fieldname, ''); + } + $storage_opts_data[$name] = $value; } - $storage_opts_data[$name] = $value; - } - unset($name); - unset($info); - - $storage_form_errors = $storagebackend::saveOptions($storage_opts_data); - if (count($storage_form_errors)) { - foreach($storage_form_errors as $name => $err) { - notice('Storage backend, ' . $storage_opts[$name][1] . ': ' . $err); + unset($name); + unset($info); + + $storage_form_errors = $storagebackend::saveOptions($storage_opts_data); + if (count($storage_form_errors)) { + 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); } } - + // Has the directory url changed? If yes, then resubmit the existing profiles there if ($global_directory != Config::get('system', 'directory') && ($global_directory != '')) { @@ -1499,9 +1500,14 @@ function admin_page_site(App $a) */ $storage_current_backend = StorageManager::getBackend(); - $storage_backends_choices = [ - '' => L10n::t('Database (legacy)') - ]; + $storage_backends_choices = []; + + // show legacy option only if it is the current backend: + // 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; } @@ -1509,7 +1515,7 @@ function admin_page_site(App $a) // build storage config form, $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storage_current_backend); - + $storage_form = []; if (!is_null($storage_current_backend) && $storage_current_backend != "") { foreach ($storage_current_backend::getOptions() as $name => $info) {