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');
}
Example #2
0
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);
    }
}