function qtranxf_admin_loadConfig() { global $q_config, $qtranslate_options; qtranxf_admin_set_default_options($qtranslate_options); foreach ($qtranslate_options['admin']['int'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['admin']['bool'] as $nm => $def) { qtranxf_load_option_bool($nm, $def); } foreach ($qtranslate_options['admin']['str'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['admin']['text'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['admin']['array'] as $nm => $def) { qtranxf_load_option_array($nm, $def); } if (empty($q_config['admin_config'])) { require_once QTRANSLATE_DIR . '/admin/qtx_admin_options_update.php'; qtranxf_update_i18n_config(); } /** * Opportunity to load additional admin features. */ do_action('qtranslate_admin_loadConfig'); qtranxf_add_conf_filters(); }
function qtranxf_admin_loadConfig() { global $q_config, $qtranslate_options; qtranxf_admin_set_default_options($qtranslate_options); foreach ($qtranslate_options['admin']['int'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['admin']['bool'] as $nm => $def) { qtranxf_load_option_bool($nm, $def); } foreach ($qtranslate_options['admin']['str'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['admin']['text'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['admin']['array'] as $nm => $def) { qtranxf_load_option_array($nm, $def); } if (empty($q_config['admin_config'])) { require_once QTRANSLATE_DIR . '/admin/qtx_admin_options_update.php'; qtranxf_update_i18n_config(); } // Set Admin Sections Names $q_config['admin_sections'] = array(); $admin_sections =& $q_config['admin_sections']; $admin_sections['general'] = __('General', 'qtranslate'); //General Settings $admin_sections['advanced'] = __('Advanced', 'qtranslate'); //Advanced Settings do_action('qtranslate_admin_loadConfig'); $admin_sections['integration'] = __('Integration', 'qtranslate'); //Custom Integration $admin_sections['import'] = __('Import', 'qtranslate') . '/' . __('Export', 'qtranslate'); $admin_sections['languages'] = __('Languages', 'qtranslate'); //always last section qtranxf_add_admin_filters(); }
function qtranxf_loadConfig() { global $qtranslate_options, $q_config; qtranxf_set_default_options($qtranslate_options); $q_config = array(); qtranxf_load_option_func('default_language'); qtranxf_load_option_array('enabled_languages'); qtranxf_load_option_flag_location('flag_location'); foreach ($qtranslate_options['front']['int'] as $nm => $def) { qtranxf_load_option($nm, $def); } //qtranxf_dbg_log('qtranxf_loadConfig: $q_config[use_strftime]: ',$q_config['use_strftime']); if ($q_config['use_strftime'] != QTX_DATE_WP && qtranxf_windows_os()) { $q_config['use_strftime'] = QTX_DATE_WP; } qtranxf_load_languages_enabled(); foreach ($qtranslate_options['front']['bool'] as $nm => $def) { qtranxf_load_option_bool($nm, $def); } foreach ($qtranslate_options['front']['str'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['front']['text'] as $nm => $def) { qtranxf_load_option($nm, $def); } foreach ($qtranslate_options['front']['array'] as $nm => $def) { qtranxf_load_option_array($nm, $def); } qtranxf_load_option_array('term_name', array()); if ($q_config['filter_options_mode'] == QTX_FILTER_OPTIONS_LIST) { qtranxf_load_option_array('filter_options', QTX_FILTER_OPTIONS_DEFAULT); } $url_mode = $q_config['url_mode']; // check for invalid permalink/url mode combinations if (qtranxf_is_permalink_structure_query()) { switch ($url_mode) { case QTX_URL_QUERY: case QTX_URL_DOMAIN: case QTX_URL_DOMAINS: break; default: $q_config['url_mode'] = $url_mode = QTX_URL_QUERY; break; } } switch ($url_mode) { case QTX_URL_DOMAINS: $q_config['domains'] = array(); qtranxf_load_option_array('domains'); //qtranxf_dbg_echo('domains loaded: ',$q_config['domains']); foreach ($q_config['enabled_languages'] as $lang) { if (isset($q_config['domains'][$lang])) { continue; } $homeinfo = qtranxf_get_home_info(); $q_config['domains'][$lang] = $lang . '.' . $homeinfo['host']; } $q_config['disable_client_cookies'] = true; $q_config['hide_default_language'] = false; break; case QTX_URL_QUERY: case QTX_URL_PATH: $q_config['disable_client_cookies'] = false; qtranxf_load_option_bool('disable_client_cookies'); break; case QTX_URL_DOMAIN: default: $q_config['disable_client_cookies'] = true; break; } $ignore_file_types = get_option('qtranslate_ignore_file_types'); $val = explode(',', QTX_IGNORE_FILE_TYPES); if (!empty($ignore_file_types)) { $vals = preg_split('/[\\s,]+/', strtolower($ignore_file_types), null, PREG_SPLIT_NO_EMPTY); foreach ($vals as $v) { if (empty($v)) { continue; } if (in_array($v, $val)) { continue; } $val[] = $v; } } $q_config['ignore_file_types'] = $val; if (empty($q_config['front_config'])) { //todo this should be granulated to load only what is needed require_once QTRANSLATE_DIR . '/admin/qtx_activation_hook.php'; require_once QTRANSLATE_DIR . '/admin/qtx_admin_options_update.php'; qtranxf_update_i18n_config(); } /** * Opportunity to load additional front-end features. */ do_action('qtranslate_loadConfig'); }
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'); }