function qtranxf_updateSettings() { global $qtranslate_options, $q_config; $errors =& $q_config['url_info']['errors']; // update front settings /** * Opportunity to prepare special custom settings update on sub-plugins */ do_action('qtranslate_update_settings_pre'); // special cases handling for front options qtranxf_updateSetting('default_language', QTX_LANGUAGE); //enabled_languages are not changed at this place qtranxf_updateSettingFlagLocation('flag_location'); qtranxf_updateSettingIgnoreFileTypes('ignore_file_types'); $_POST['language_name_case'] = isset($_POST['camel_case']) ? '0' : '1'; // special cases handling for front options - end foreach ($qtranslate_options['front']['int'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_INTEGER, $def); } qtranxf_updateSettingDateI18N('date_i18n'); foreach ($qtranslate_options['front']['bool'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_BOOLEAN, $def); } qtranxf_updateSetting('qtrans_compatibility', QTX_BOOLEAN); foreach ($qtranslate_options['front']['str'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_STRING, $def); } foreach ($qtranslate_options['front']['text'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_TEXT, $def); } foreach ($qtranslate_options['front']['array'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_ARRAY, $def); } qtranxf_updateSetting('filter_options', QTX_ARRAY); switch ($q_config['url_mode']) { case QTX_URL_DOMAIN: case QTX_URL_DOMAINS: $q_config['disable_client_cookies'] = true; break; case QTX_URL_QUERY: case QTX_URL_PATH: default: qtranxf_updateSetting('disable_client_cookies', QTX_BOOLEAN); break; } $domains = isset($q_config['domains']) ? $q_config['domains'] : array(); foreach ($q_config['enabled_languages'] as $lang) { $id = 'language_domain_' . $lang; if (!isset($_POST[$id])) { continue; } $domain = preg_replace('#^/*#', '', untrailingslashit(trim($_POST[$id]))); //qtranxf_dbg_log('qtranxf_updateSettings: domain['.$lang.']: ',$domain); $domains[$lang] = $domain; } if (!empty($domains) && (!isset($q_config['domains']) || !qtranxf_array_compare($q_config['domains'], $domains))) { $q_config['domains'] = $domains; qtranxf_update_option('domains'); } // update admin settings //special cases handling for admin options if (isset($_POST['json_config_files'])) { //verify that files are loadable $json_config_files_post = sanitize_text_field(stripslashes($_POST['json_config_files'])); $json_files = preg_split('/[\\s,]+/', $json_config_files_post, null, PREG_SPLIT_NO_EMPTY); if (empty($json_files)) { $_POST['config_files'] = array(); unset($_POST['json_config_files']); } else { $nerr = isset($q_config['url_info']['errors']) ? count($q_config['url_info']['errors']) : 0; $cfg = qtranxf_load_config_files($json_files); if (!empty($q_config['url_info']['errors']) && $nerr != count($q_config['url_info']['errors'])) { //new errors occurred $_POST['json_config_files'] = implode(PHP_EOL, $json_files); remove_action('admin_notices', 'qtranxf_admin_notices_errors'); if ($json_files == $q_config['config_files']) { //option is not changed, apparently something happened to files, then make the error permanent update_option('qtranslate_config_errors', array_slice($q_config['url_info']['errors'], $nerr)); } } else { $_POST['config_files'] = implode(PHP_EOL, $json_files); unset($_POST['json_config_files']); delete_option('qtranslate_config_errors'); } } } if (isset($_POST['json_custom_i18n_config'])) { //verify that JSON string can be parsed $cfg_json = sanitize_text_field(stripslashes($_POST['json_custom_i18n_config'])); if (empty($cfg_json)) { $_POST['custom_i18n_config'] = array(); } else { $cfg = json_decode($cfg_json, true); if ($cfg) { $_POST['custom_i18n_config'] = $cfg; unset($_POST['json_custom_i18n_config']); } else { $_POST['json_custom_i18n_config'] = stripslashes($_POST['json_custom_i18n_config']); $errors[] = sprintf(__('Cannot parse JSON code in the field "%s".', 'qtranslate'), __('Custom Configuration', 'qtranslate')); } } } if ($_POST['highlight_mode'] != QTX_HIGHLIGHT_MODE_CUSTOM_CSS) { $_POST['highlight_mode_custom_css'] = ''; } if ($_POST['lsb_style'] != $q_config['lsb_style']) { $_POST['lsb_style_wrap_class'] = ''; $_POST['lsb_style_active_class'] = ''; } qtranxf_parse_post_type_excluded(); //special cases handling for admin options - end do_action('qtranslate_update_settings_admin'); foreach ($qtranslate_options['admin']['int'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_INTEGER, $def); } foreach ($qtranslate_options['admin']['bool'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_BOOLEAN, $def); } foreach ($qtranslate_options['admin']['str'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_STRING, $def); } foreach ($qtranslate_options['admin']['text'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_TEXT, $def); } foreach ($qtranslate_options['admin']['array'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_ARRAY, $def); } if (empty($_POST['json_config_files'])) { //only update if config files parsed successfully qtranxf_update_i18n_config(); } $q_config['i18n-cache'] = array(); //clear i18n-config cache /** * Opportunity to update special custom settings on sub-plugins */ do_action('qtranslate_update_settings'); }
function qtranxf_updateSettings() { global $qtranslate_options, $q_config; // update front settings qtranxf_updateSetting('default_language', QTX_LANGUAGE); //enabled_languages are not changed at this place qtranxf_updateSettingFlagLocation('flag_location'); qtranxf_updateSettingIgnoreFileTypes('ignore_file_types'); foreach ($qtranslate_options['front']['int'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_INTEGER, $def); } foreach ($qtranslate_options['front']['bool'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_BOOLEAN, $def); } qtranxf_updateSetting('qtrans_compatibility', QTX_BOOLEAN); foreach ($qtranslate_options['front']['str'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_STRING, $def); } foreach ($qtranslate_options['front']['text'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_TEXT, $def); } foreach ($qtranslate_options['front']['array'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_ARRAY, $def); } qtranxf_updateSetting('filter_options', QTX_ARRAY); switch ($q_config['url_mode']) { case QTX_URL_DOMAIN: case QTX_URL_DOMAINS: $q_config['disable_client_cookies'] = true; break; case QTX_URL_QUERY: case QTX_URL_PATH: default: qtranxf_updateSetting('disable_client_cookies', QTX_BOOLEAN); break; } $domains = isset($q_config['domains']) ? $q_config['domains'] : array(); foreach ($q_config['enabled_languages'] as $lang) { $id = 'language_domain_' . $lang; if (!isset($_POST[$id])) { continue; } $domain = preg_replace('#^/*#', '', untrailingslashit(trim($_POST[$id]))); //qtranxf_dbg_echo('qtranxf_conf: domain['.$lang.']: ',$domain); $domains[$lang] = $domain; } if (!empty($domains) && (!isset($q_config['domains']) || !qtranxf_array_compare($q_config['domains'], $domains))) { $q_config['domains'] = $domains; qtranxf_update_option('domains'); } // update admin settings //special cases handling if ($_POST['highlight_mode'] != QTX_HIGHLIGHT_MODE_CUSTOM_CSS) { $_POST['highlight_mode_custom_css'] = ''; } if ($_POST['lsb_style'] != $q_config['lsb_style']) { $_POST['lsb_style_wrap_class'] = ''; $_POST['lsb_style_active_class'] = ''; } //if(!(isset($_POST['plugin_js_composer']) && $_POST['plugin_js_composer']=='1')){ // $_POST['plugin_js_composer_off'] = '1'; //} qtranxf_parse_post_type_excluded(); foreach ($qtranslate_options['admin']['int'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_INTEGER, $def); } foreach ($qtranslate_options['admin']['bool'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_BOOLEAN, $def); } foreach ($qtranslate_options['admin']['str'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_STRING, $def); } foreach ($qtranslate_options['admin']['text'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_TEXT, $def); } foreach ($qtranslate_options['admin']['array'] as $nm => $def) { qtranxf_updateSetting($nm, QTX_ARRAY, $def); } }