function qts_config_pre_hook($message) { global $q_config; if (isset($_POST['default_language'])) { qtranxf_updateSetting('qtranslate_services', QTX_BOOLEAN); qts_load(); if ($q_config['qtranslate_services']) { $services = qts_queryQS(QTS_GET_SERVICES); $service_settings = get_option('qts_service_settings'); if (!is_array($service_settings)) { $service_settings = array(); } foreach ($services as $service_id => $service) { // check if there are already settings for the field if (!isset($service_settings[$service_id]) || !is_array($service_settings[$service_id])) { $service_settings[$service_id] = array(); } // update fields foreach ($service['service_required_fields'] as $field) { if (isset($_POST['qts_' . $service_id . '_' . $field['name']])) { // skip empty passwords to keep the old value if ($_POST['qts_' . $service_id . '_' . $field['name']] == '' && $field['name'] == 'password') { continue; } $service_settings[$service_id][$field['name']] = $_POST['qts_' . $service_id . '_' . $field['name']]; } } } update_option('qts_service_settings', $service_settings); } } if (isset($_GET['qts_delete'])) { $_GET['qts_delete'] = intval($_GET['qts_delete']); $orders = get_option('qts_orders'); if (is_array($orders)) { foreach ($orders as $key => $order) { if ($orders[$key]['order']['order_id'] == $_GET['qts_delete']) { unset($orders[$key]); update_option('qts_orders', $orders); } } } $message[] = __('Order deleted.', 'qtranslate'); } if (isset($_GET['qts_cron'])) { qts_cron(); $message[] = __('Status updated for all open orders.', 'qtranslate'); } return $message; }
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); } }