/** * Function to add civicrm settings * * @params array $params associated array of civicrm variables * * @return null * @static */ static function add(&$params) { self::fixParams($params); // also set a template url so js files can use this // CRM-6194 $params['civiRelativeURL'] = CRM_Utils_System::url('CIVI_BASE_TEMPLATE'); $params['civiRelativeURL'] = str_replace('CIVI_BASE_TEMPLATE', '', $params['civiRelativeURL']); $domain = new CRM_Core_DAO_Domain(); $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); if ($domain->config_backend) { $values = unserialize($domain->config_backend); self::formatParams($params, $values); } // CRM-6151 if (isset($params['localeCustomStrings']) && is_array($params['localeCustomStrings'])) { $domain->locale_custom_strings = serialize($params['localeCustomStrings']); } // unset any of the variables we read from file that should not be stored in the database // the username and certpath are stored flat with _test and _live // check CRM-1470 $skipVars = self::skipVars(); foreach ($skipVars as $var) { unset($params[$var]); } CRM_Core_BAO_Setting::fixAndStoreDirAndURL($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]); } } //keep user preferred language upto date, CRM-7746 $session = CRM_Core_Session::singleton(); $lcMessages = CRM_Utils_Array::value('lcMessages', $params); if ($lcMessages && $session->get('userID')) { $languageLimit = CRM_Utils_Array::value('languageLimit', $params); if (is_array($languageLimit) && !in_array($lcMessages, array_keys($languageLimit))) { $lcMessages = $session->get('lcMessages'); } $ufm = new CRM_Core_DAO_UFMatch(); $ufm->contact_id = $session->get('userID'); if ($lcMessages && $ufm->find(TRUE)) { $ufm->language = $lcMessages; $ufm->save(); $session->set('lcMessages', $lcMessages); $params['lcMessages'] = $lcMessages; } } $domain->config_backend = serialize($params); $domain->save(); }