X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FAdmin%2FStorage.php;h=c6bc3878efdf41d40d672d5511487b28574ec598;hb=687e6841bc81fde5c28ef84f5b74ae2fdd75cc8a;hp=a8f0b592509767379e1836f3f2197963f5345a1a;hpb=e34795762d72347746bd506f253495da7d0ab329;p=friendica.git diff --git a/src/Module/Admin/Storage.php b/src/Module/Admin/Storage.php index a8f0b59250..c6bc3878ef 100644 --- a/src/Module/Admin/Storage.php +++ b/src/Module/Admin/Storage.php @@ -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,7 +121,7 @@ class Storage extends BaseAdmin 'name' => $name, 'prefix' => $storage_form_prefix, 'form' => $storage_form, - 'active' => $name === $current_storage_backend::getName(), + 'active' => $current_storage_backend instanceof IWritableStorage && $name === $current_storage_backend::getName(), ]; } @@ -124,15 +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_activate' => DI::l10n()->t('Save & Activate'), - '$activate' => DI::l10n()->t('Activate'), + '$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, ]); }