* @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) {
}
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;
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;
*/
private $map;
- private $runtime, $locals;
+ private $runtime, $locals, $settings;
public function __construct() {
$this->map = self::getPropertyMap();
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};
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':
case 'setting':
case 'setting-path':
case 'setting-url':
- \Civi::settings()->revert($k);
+ $this->getSettings()->revert($k);
return;
case 'local':
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(