/** * Add civicrm settings. * * @param array $params * Associated array of civicrm variables. */ public static function add(&$params) { $domain = new CRM_Core_DAO_Domain(); $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); if ($domain->config_backend) { $params = array_merge(unserialize($domain->config_backend), $params); } $params = CRM_Core_BAO_ConfigSetting::filterSkipVars($params); // also skip all Dir Params, we dont need to store those in the DB! foreach ($params as $name => $val) { if (substr($name, -3) == 'Dir') { unset($params[$name]); } } $domain->config_backend = serialize($params); $domain->save(); }
/** * Common Process. * * @todo Document what I do. * * @param array $params */ public function commonProcess(&$params) { // save autocomplete search options if (!empty($params['contact_autocomplete_options'])) { Civi::settings()->set('contact_autocomplete_options', CRM_Utils_Array::implodePadded(array_keys($params['contact_autocomplete_options']))); unset($params['contact_autocomplete_options']); } // save autocomplete contact reference options if (!empty($params['contact_reference_options'])) { Civi::settings()->set('contact_reference_options', CRM_Utils_Array::implodePadded(array_keys($params['contact_reference_options']))); unset($params['contact_reference_options']); } // save components to be enabled if (array_key_exists('enableComponents', $params)) { civicrm_api3('setting', 'create', array('enable_components' => $params['enableComponents'])); unset($params['enableComponents']); } // verify ssl peer option if (isset($params['verifySSL'])) { Civi::settings()->set('verifySSL', $params['verifySSL']); unset($params['verifySSL']); } // force secure URLs if (isset($params['enableSSL'])) { Civi::settings()->set('enableSSL', $params['enableSSL']); unset($params['enableSSL']); } $settings = array_intersect_key($params, $this->_settings); $result = civicrm_api('setting', 'create', $settings + array('version' => 3)); foreach ($settings as $setting => $settingGroup) { //@todo array_diff this unset($params[$setting]); } if (!empty($result['error_message'])) { CRM_Core_Session::setStatus($result['error_message'], ts('Save Failed'), 'error'); } //CRM_Core_BAO_ConfigSetting::create($params); $params = CRM_Core_BAO_ConfigSetting::filterSkipVars($params); if (!empty($params)) { CRM_Core_Error::fatal('Unrecognized setting. This may be a config field which has not been properly migrated to a setting. (' . implode(', ', array_keys($params)) . ')'); } CRM_Core_Config::clearDBCache(); CRM_Utils_System::flushCache(); CRM_Core_Resources::singleton()->resetCacheCode(); CRM_Core_Session::setStatus(" ", ts('Changes Saved'), "success"); }