]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Admin/Storage.php
Rename Storage Backend labels
[friendica.git] / src / Module / Admin / Storage.php
index c74259c6e5a079457fc515827847fd5ce9b7e9bd..c6bc3878efdf41d40d672d5511487b28574ec598 100644 (file)
@@ -23,7 +23,8 @@ namespace Friendica\Module\Admin;
 
 use Friendica\Core\Renderer;
 use Friendica\DI;
-use Friendica\Model\Storage\IStorage;
+use Friendica\Model\Storage\InvalidClassStorageException;
+use Friendica\Model\Storage\IWritableStorage;
 use Friendica\Module\BaseAdmin;
 use Friendica\Util\Strings;
 
@@ -37,8 +38,13 @@ class Storage extends BaseAdmin
 
                $storagebackend = Strings::escapeTags(trim($parameters['name'] ?? ''));
 
-               /** @var IStorage $newstorage */
-               $newstorage = DI::storageManager()->getByName($storagebackend);
+               try {
+                       /** @var IWritableStorage $newstorage */
+                       $newstorage = DI::storageManager()->getWritableStorageByName($storagebackend);
+               } catch (InvalidClassStorageException $storageException) {
+                       notice(DI::l10n()->t('Storage backend, %s is invalid.', $storagebackend));
+                       DI::baseUrl()->redirect('admin/storage');
+               }
 
                // save storage backend form
                $storage_opts        = $newstorage->getOptions();
@@ -62,13 +68,20 @@ class Storage extends BaseAdmin
                $storage_form_errors = $newstorage->saveOptions($storage_opts_data);
                if (count($storage_form_errors)) {
                        foreach ($storage_form_errors as $name => $err) {
-                               notice('Storage backend, ' . $storage_opts[$name][1] . ': ' . $err);
+                               notice(DI::l10n()->t('Storage backend %s error: %s', $storage_opts[$name][1], $err));
                        }
                        DI::baseUrl()->redirect('admin/storage');
                }
 
                if (!empty($_POST['submit_save_set'])) {
-                       if (empty($storagebackend) || !DI::storageManager()->setBackend($storagebackend)) {
+                       try {
+                               /** @var IWritableStorage $newstorage */
+                               $newstorage = DI::storageManager()->getWritableStorageByName($storagebackend);
+
+                               if (!DI::storageManager()->setBackend($newstorage)) {
+                                       notice(DI::l10n()->t('Invalid storage backend setting value.'));
+                               }
+                       } catch (InvalidClassStorageException $storageException) {
                                notice(DI::l10n()->t('Invalid storage backend setting value.'));
                        }
                }
@@ -80,24 +93,16 @@ class Storage extends BaseAdmin
        {
                parent::content($parameters);
 
-               $current_storage_backend    = DI::storage();
-               $available_storage_backends = [];
-               $available_storage_forms    = [];
-
-               // show legacy option only if it is the current backend:
-               // once changed can't be selected anymore
-               if ($current_storage_backend == null) {
-                       $available_storage_backends[''] = DI::l10n()->t('Database (legacy)');
-               }
+               $current_storage_backend = DI::storage();
+               $available_storage_forms = [];
 
-               foreach (DI::storageManager()->listBackends() as $name => $class) {
-                       $available_storage_backends[$name] = $name;
+               foreach (DI::storageManager()->listBackends() as $name) {
 
                        // build storage config form,
                        $storage_form_prefix = preg_replace('|[^a-zA-Z0-9]|', '', $name);
 
                        $storage_form = [];
-                       foreach (DI::storageManager()->getByName($name)->getOptions() as $option => $info) {
+                       foreach (DI::storageManager()->getWritableStorageByName($name)->getOptions() as $option => $info) {
                                $type = $info[0];
                                // Backward compatibilty with yesno field description
                                if ($type == 'yesno') {
@@ -116,6 +121,7 @@ class Storage extends BaseAdmin
                                'name'   => $name,
                                'prefix' => $storage_form_prefix,
                                'form'   => $storage_form,
+                               'active' => $current_storage_backend instanceof IWritableStorage && $name === $current_storage_backend::getName(),
                        ];
                }
 
@@ -123,13 +129,17 @@ class Storage extends BaseAdmin
 
                return Renderer::replaceMacros($t, [
                        '$title'                 => DI::l10n()->t('Administration'),
+                       '$label_current'         => DI::l10n()->t('Current Storage Backend'),
+                       '$label_config'          => DI::l10n()->t('Storage Configuration'),
                        '$page'                  => DI::l10n()->t('Storage'),
                        '$save'                  => DI::l10n()->t('Save'),
-                       '$save_set'              => DI::l10n()->t('Save & Activate'),
-                       '$clear'                 => DI::l10n()->t('Clear'),
+                       '$save_use'              => DI::l10n()->t('Save & Use storage backend'),
+                       '$use'                   => DI::l10n()->t('Use storage backend'),
+                       '$save_reload'           => DI::l10n()->t('Save & Reload'),
+                       '$noconfig'              => DI::l10n()->t('This backend doesn\'t have custom settings'),
                        '$baseurl'               => DI::baseUrl()->get(true),
                        '$form_security_token'   => self::getFormSecurityToken("admin_storage"),
-                       '$storagebackend'        => $current_storage_backend,
+                       '$storagebackend'        => $current_storage_backend instanceof IWritableStorage ? $current_storage_backend::getName() : DI::l10n()->t('Database (legacy)'),
                        '$availablestorageforms' => $available_storage_forms,
                ]);
        }