From 23bb9c85dfd571bf91309ece5c02dc16c8b709cb Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Sat, 12 Sep 2015 16:23:58 -0700 Subject: [PATCH] CRM_Core_Config - Bind to the settings of the active domain at the moment of setup. I'm not sure this is actually a good behavior, but it's the old behavior, and there's a unit-test which checks for it. --- CRM/Core/BAO/Setting.php | 29 +++-------------------------- CRM/Core/Config.php | 4 ++++ CRM/Core/Config/MagicMerge.php | 26 ++++++++++++++++++-------- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/CRM/Core/BAO/Setting.php b/CRM/Core/BAO/Setting.php index 3d80bd0204..1de904c988 100644 --- a/CRM/Core/BAO/Setting.php +++ b/CRM/Core/BAO/Setting.php @@ -429,15 +429,12 @@ class CRM_Core_BAO_Setting extends CRM_Core_DAO_Setting { * @return array */ public static function setItems(&$params, $domains = NULL) { - /** @var \Civi\Core\SettingsManager $manager */ - $manager = \Civi::service('settings_manager'); $domains = empty($domains) ? array(CRM_Core_Config::domainID()) : $domains; // FIXME: redundant validation // FIXME: this whole thing should just be a loop to call $settings->add() on each domain. - $reloadConfig = FALSE; - $fields = $config_keys = array(); + $fields = array(); $fieldsToSet = self::validateSettingsInput($params, $fields); foreach ($fieldsToSet as $settingField => &$settingValue) { @@ -445,28 +442,8 @@ class CRM_Core_BAO_Setting extends CRM_Core_DAO_Setting { } foreach ($domains as $domainID) { - - if ($domainID != CRM_Core_Config::domainID()) { - $reloadConfig = TRUE; - CRM_Core_BAO_Domain::setDomain($domainID); - } - $result[$domainID] = array(); - $realSettingsToSet = array(); // need to separate config_backend stuff - foreach ($fieldsToSet as $name => $value) { - $realSettingsToSet[$name] = $value; - $result[$domainID][$name] = $value; - } - $manager->getBagByDomain($domainID)->add($realSettingsToSet); - if ($reloadConfig) { - CRM_Core_Config::singleton($reloadConfig, $reloadConfig); - } - - if (!empty($config_keys)) { - CRM_Core_BAO_ConfigSetting::create($config_keys); - } - if ($reloadConfig) { - CRM_Core_BAO_Domain::resetDomain(); - } + Civi::settings($domainID)->add($fieldsToSet); + $result[$domainID] = $fieldsToSet; } return $result; diff --git a/CRM/Core/Config.php b/CRM/Core/Config.php index d19bc978ad..ba1f0c5a86 100644 --- a/CRM/Core/Config.php +++ b/CRM/Core/Config.php @@ -106,6 +106,10 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { CRM_Utils_Hook::config(self::$_singleton); self::$_singleton->authenticate(); + + // Extreme backward compat: $config binds to active domain at moment of setup. + self::$_singleton->getSettings(); + Civi::service('settings_manager')->useDefaults(); } return self::$_singleton; diff --git a/CRM/Core/Config/MagicMerge.php b/CRM/Core/Config/MagicMerge.php index a1bd9c2a52..927ac69c5d 100644 --- a/CRM/Core/Config/MagicMerge.php +++ b/CRM/Core/Config/MagicMerge.php @@ -54,7 +54,7 @@ class CRM_Core_Config_MagicMerge { */ private $map; - private $runtime, $locals; + private $runtime, $locals, $settings; public function __construct() { $this->map = self::getPropertyMap(); @@ -190,13 +190,13 @@ class CRM_Core_Config_MagicMerge { switch ($type) { case 'setting': - return \Civi::settings()->get($name); + return $this->getSettings()->get($name); case 'setting-path': - return \Civi::settings()->getPath($name); + return $this->getSettings()->getPath($name); case 'setting-url': - return \Civi::settings()->getUrl($name, 'absolute'); + return $this->getSettings()->getUrl($name, 'absolute'); case 'runtime': return $this->getRuntime()->{$name}; @@ -228,15 +228,15 @@ class CRM_Core_Config_MagicMerge { switch ($type) { case 'setting': - \Civi::settings()->set($name, $v); + $this->getSettings()->set($name, $v); return; case 'setting-path': - \Civi::settings()->setPath($name, $v); + $this->getSettings()->setPath($name, $v); return; case 'setting-url': - \Civi::settings()->setUrl($name, $v); + $this->getSettings()->setUrl($name, $v); return; case 'runtime': @@ -275,7 +275,7 @@ class CRM_Core_Config_MagicMerge { case 'setting': case 'setting-path': case 'setting-url': - \Civi::settings()->revert($k); + $this->getSettings()->revert($k); return; case 'local': @@ -306,6 +306,16 @@ class CRM_Core_Config_MagicMerge { return $this->runtime; } + /** + * @return \Civi\Core\SettingsBag + */ + protected function getSettings() { + if ($this->settings === NULL) { + $this->settings = Civi::settings(); + } + return $this->settings; + } + private function initLocals() { if ($this->locals === NULL) { $this->locals = array( -- 2.25.1