/**
  * 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();
 }