From 601361a3c6e0fef704fd484a672a48ef24e1b7be Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 27 Aug 2018 10:39:51 +1200 Subject: [PATCH] Move setting defaults to form --- CRM/Admin/Form/Preferences.php | 8 +++++--- CRM/Admin/Form/Setting.php | 13 ++----------- CRM/Admin/Form/SettingTrait.php | 13 +++++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/CRM/Admin/Form/Preferences.php b/CRM/Admin/Form/Preferences.php index 5bd2e73d34b4..00810d6001b9 100644 --- a/CRM/Admin/Form/Preferences.php +++ b/CRM/Admin/Form/Preferences.php @@ -90,6 +90,7 @@ public function preProcess() { $this->addFieldsDefinedInSettingsMetadata(); $settings = Civi::settings(); + // @todo replace this by defining all in settings. foreach ($this->_varNames as $groupName => $settingNames) { foreach ($settingNames as $settingName => $options) { $this->_config->$settingName = $settings->get($settingName); @@ -102,15 +103,16 @@ public function preProcess() { * @return array */ public function setDefaultValues() { - $defaults = array(); + $this->_defaults = array(); + $this->setDefaultsForMetadataDefinedFields(); foreach ($this->_varNames as $groupName => $settings) { foreach ($settings as $settingName => $settingDetails) { - $defaults[$settingName] = isset($this->_config->$settingName) ? $this->_config->$settingName : CRM_Utils_Array::value('default', $settingDetails, NULL); + $this->_defaults[$settingName] = isset($this->_config->$settingName) ? $this->_config->$settingName : CRM_Utils_Array::value('default', $settingDetails, NULL); } } - return $defaults; + return $this->_defaults; } /** diff --git a/CRM/Admin/Form/Setting.php b/CRM/Admin/Form/Setting.php index 09c0b0384229..93010df5aec9 100644 --- a/CRM/Admin/Form/Setting.php +++ b/CRM/Admin/Form/Setting.php @@ -56,18 +56,9 @@ public function setDefaultValues() { $formMode = TRUE; } - CRM_Core_BAO_ConfigSetting::retrieve($this->_defaults); - - // we can handle all the ones defined in the metadata here. Others to be converted - foreach ($this->_settings as $setting => $group) { - $this->_defaults[$setting] = civicrm_api('setting', 'getvalue', array( - 'version' => 3, - 'name' => $setting, - 'group' => $group, - ) - ); - } + $this->setDefaultsForMetadataDefinedFields(); + // @todo thise should be retrievable from the above function. $this->_defaults['contact_autocomplete_options'] = self::getAutocompleteContactSearch(); $this->_defaults['contact_reference_options'] = self::getAutocompleteContactReference(); $this->_defaults['enableSSL'] = Civi::settings()->get('enableSSL'); diff --git a/CRM/Admin/Form/SettingTrait.php b/CRM/Admin/Form/SettingTrait.php index ee31f1aa005d..baa312298fa9 100644 --- a/CRM/Admin/Form/SettingTrait.php +++ b/CRM/Admin/Form/SettingTrait.php @@ -168,4 +168,17 @@ protected function addFieldsDefinedInSettingsMetadata() { $this->assign('settings_fields', $settingMetaData); } + + /** + * Get the defaults for all fields defined in the metadata. + * + * All others are pending conversion. + */ + protected function setDefaultsForMetadataDefinedFields() { + CRM_Core_BAO_ConfigSetting::retrieve($this->_defaults); + foreach ($this->_settings as $setting => $group) { + $this->_defaults[$setting] = civicrm_api3('setting', 'getvalue', ['name' => $setting]); + } + } + }