]> git.mxchange.org Git - friendica.git/commitdiff
Tweak storage selection in admin page
authorfabrixxm <fabrix.xm@gmail.com>
Wed, 10 Apr 2019 06:40:50 +0000 (08:40 +0200)
committerfabrixxm <fabrix.xm@gmail.com>
Wed, 10 Apr 2019 06:40:50 +0000 (08:40 +0200)
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

index 0df907cbaa9718dda978bb83fa0b44829758644b..7ee48f592ef252920f5c40ef8d6cf59602124793 100644 (file)
@@ -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) {