From b2794bb2c9587e5e5307a838b45f297067586772 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 9 Apr 2019 16:32:15 +0200 Subject: [PATCH 1/5] Allow set empty string storge class for legacy Legacy storage is defined by an empty string. `StorageManager::setBackend()` now accept an empty string as a valid backend storage. --- src/Core/StorageManager.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index 0a8b35ce24..4b74035ee8 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -29,7 +29,8 @@ class StorageManager } /** - * @brief Return current storage backend class + * @brief Return current storage backend class + * * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ @@ -52,6 +53,7 @@ class StorageManager /** * @brief Set current storage backend class + * If $class is an empty string, legacy db storage is used. * * @param string $class Backend class name * @return bool @@ -59,7 +61,7 @@ class StorageManager */ public static function setBackend($class) { - if (!in_array('Friendica\Model\Storage\IStorage', class_implements($class))) { + if ($class !== "" && !in_array('Friendica\Model\Storage\IStorage', class_implements($class))) { return false; } From 72bee45079a82ff3e8b664cf7dd74452bc488cc8 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 10 Apr 2019 08:35:44 +0200 Subject: [PATCH 2/5] Revert b2794bb2c 'Allow set empty string storge class for legacy' --- src/Core/StorageManager.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Core/StorageManager.php b/src/Core/StorageManager.php index 4b74035ee8..8cd7d43953 100644 --- a/src/Core/StorageManager.php +++ b/src/Core/StorageManager.php @@ -29,8 +29,8 @@ class StorageManager } /** - * @brief Return current storage backend class - * + * @brief Return current storage backend class + * * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ @@ -53,7 +53,6 @@ class StorageManager /** * @brief Set current storage backend class - * If $class is an empty string, legacy db storage is used. * * @param string $class Backend class name * @return bool @@ -61,7 +60,7 @@ class StorageManager */ public static function setBackend($class) { - if ($class !== "" && !in_array('Friendica\Model\Storage\IStorage', class_implements($class))) { + if (!in_array('Friendica\Model\Storage\IStorage', class_implements($class))) { return false; } From 47aa9daf5a08bbac4c5493265b49e1b4ca4a8505 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 10 Apr 2019 08:40:50 +0200 Subject: [PATCH 3/5] 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 0df907cbaa..7ee48f592e 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) { From 5a07afbc14d31be8dd6cd50884bbbe1f52e8b331 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 10 Apr 2019 20:57:22 +0200 Subject: [PATCH 4/5] Use direct logic --- mod/admin.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 7ee48f592e..fe06862962 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1157,9 +1157,7 @@ function admin_page_site_post(App $a) // save storage backend form if (!is_null($storagebackend) && $storagebackend != "") { - if (!StorageManager::setBackend($storagebackend)) { - info(L10n::t('Invalid storage backend setting value.')); - } else { + if (StorageManager::setBackend($storagebackend)) { $storage_opts = $storagebackend::getOptions(); $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storagebackend); $storage_opts_data = []; @@ -1185,6 +1183,8 @@ function admin_page_site_post(App $a) } $a->internalRedirect('admin/site' . $active_panel); } + } else { + info(L10n::t('Invalid storage backend setting value.')); } } From d2e43619b330ca21f8eff51307c91a83add92e9b Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 11 Apr 2019 10:44:28 +0200 Subject: [PATCH 5/5] Code standards --- mod/admin.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index fe06862962..343d6c76d9 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1159,17 +1159,17 @@ function admin_page_site_post(App $a) if (!is_null($storagebackend) && $storagebackend != "") { if (StorageManager::setBackend($storagebackend)) { $storage_opts = $storagebackend::getOptions(); - $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storagebackend); + $storage_form_prefix = preg_replace('|[^a-zA-Z0-9]|', '', $storagebackend); $storage_opts_data = []; - foreach($storage_opts as $name => $info) { + 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, ''); + case 'checkbox': + case 'yesno': + $value = !empty($_POST[$fieldname]); + break; + default: + $value = defaults($_POST, $fieldname, ''); } $storage_opts_data[$name] = $value; } @@ -1178,7 +1178,7 @@ function admin_page_site_post(App $a) $storage_form_errors = $storagebackend::saveOptions($storage_opts_data); if (count($storage_form_errors)) { - foreach($storage_form_errors as $name => $err) { + foreach ($storage_form_errors as $name => $err) { notice('Storage backend, ' . $storage_opts[$name][1] . ': ' . $err); } $a->internalRedirect('admin/site' . $active_panel); @@ -1508,7 +1508,7 @@ function admin_page_site(App $a) $storage_backends_choices[''] = L10n::t('Database (legacy)'); }; - foreach($storage_backends as $name=>$class) { + foreach ($storage_backends as $name => $class) { $storage_backends_choices[$class] = $name; } unset($storage_backends);