function qtranxf_resetConfig() { global $qtranslate_options; if (!current_user_can('manage_options')) { return; } if (isset($_POST['qtranslate_reset_admin_notices'])) { delete_option('qtranslate_admin_notices'); qtranxf_add_message(__('Admin notices have been reset. You will see all applicable notices on admin pages and may dismiss them again.', 'qtranslate')); } if (!isset($_POST['qtranslate_reset']) || !isset($_POST['qtranslate_reset2'])) { return; } // reset all settings foreach ($qtranslate_options['front'] as $ops) { foreach ($ops as $nm => $def) { delete_option('qtranslate_' . $nm); } } foreach ($qtranslate_options['admin'] as $ops) { foreach ($ops as $nm => $def) { delete_option('qtranslate_' . $nm); } } foreach ($qtranslate_options['default_value'] as $nm => $def) { delete_option('qtranslate_' . $nm); } foreach ($qtranslate_options['languages'] as $nm => $opn) { delete_option($opn); } // internal private options not loaded by default delete_option('qtranslate_next_update_mo'); delete_option('qtranslate_next_thanks'); // obsolete options delete_option('qtranslate_custom_pages'); delete_option('qtranslate_plugin_js_composer_off'); delete_option('qtranslate_widget_css'); delete_option('qtranslate_version'); delete_option('qtranslate_disable_header_css'); if (isset($_POST['qtranslate_reset3'])) { delete_option('qtranslate_term_name'); if (isset($_POST['qtranslate_reset4'])) { //not implemented yet delete_option('qtranslate_version_previous'); //and delete translations in posts } } remove_filter('locale', 'qtranxf_localeForCurrentLanguage', 99); qtranxf_reloadConfig(); add_filter('locale', 'qtranxf_localeForCurrentLanguage', 99); }
function qtranxf_migrate_export_qtranslate_slug() { //qtranxf_dbg_log('qtranxf_migrate_export_qtranslate_slug: REQUEST_TIME_FLOAT: ', $_SERVER['REQUEST_TIME_FLOAT']); $nm = '<a href="https://wordpress.org/plugins/qtranslate-slug/" target="_blank"><span style="color:blue"><strong>QTranslate Slug</strong></span></a>'; qtranxf_add_message(sprintf(__('Applicable options and slug data have been exported to plugin %s.', 'qtranslate'), $nm)); }
function qtranxf_migrate_export($plugin_name, $nm_to) { qtranxf_migrate_options_copy($nm_to, 'qtranslate'); $nm = '<span style="color:blue"><strong>' . $plugin_name . '</strong></span>'; qtranxf_add_message(sprintf(__('Applicable options have been exported to plugin %s. If you have done some post or page updates after migrating from %s, then "%s" operation is also required to convert the content to "dual language tag" style in order for plugin %s to function.', 'qtranslate'), $nm, $nm, '<a href="https://qtranslatexteam.wordpress.com/option-convert-database/" target="_blank"><span style="color:magenta">' . __('Convert Database', 'qtranslate') . '</span></a>', $nm)); }
function qtranxf_migrate_import_qtranslate_slug($default_language) { //$q_config is not yet available global $wpdb; //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: '); $nm = '<a href="https://wordpress.org/plugins/qtranslate-slug/" target="_blank"><span style="color:blue"><strong>QTranslate Slug</strong></span></a>'; $wpdb->show_errors(); @set_time_limit(0); $qts_options = get_option('qts_options'); if (!empty($qts_options)) { //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: $qts_options: ', $qts_options); if (is_array($qts_options)) { foreach ($qts_options as $k => $v) { } } else { qtranxf_error_log(sprintf(__('Failed to import options from plugin %s.', 'qtranslate'), $nm)); } } $sql = 'SELECT ID, post_name, post_type, post_parent, meta_key, meta_value FROM ' . $wpdb->postmeta . ' as m INNER JOIN ' . $wpdb->posts . ' as p ON p.ID = m.post_id WHERE p.post_status = "publish" AND p.post_name != "" AND m.meta_key LIKE "_qts_slug___" AND m.meta_value IS NOT NULL'; $sql .= ' AND NOT EXISTS (SELECT * FROM ' . $wpdb->prefix . 'i18n_slugs WHERE name = p.post_name AND lang = MID(m.meta_key,11))'; $result = $wpdb->get_results($sql); //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: $result: ', $result); //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: count($result): ', count($result)); if (!is_array($result)) { qtranxf_error_log(sprintf(__('Failed to import data from plugin %s.', 'qtranslate'), $nm) . ' ' . sprintf(__('It might be a good idea to review %smigration instructions%s, if you have not yet done so.', 'qtranslate'), '<a href="https://qtranslatexteam.wordpress.com/migration/" target="_blank">', '</a>')); return; } foreach ($result as $row) { $name = $row->post_name; if (empty($name)) { continue; } $slug = $row->meta_value; if (empty($slug)) { continue; } $lang = substr($row->meta_key, -2); if ($lang != $default_language) { continue; } if ($slug == $name) { continue; } //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: default language $slug('.$slug.') != $name('.$name.')'); $slug = wp_unique_post_slug($slug, $row->ID, 'publish', $row->post_type, $row->post_parent); $wpdb->query($wpdb->prepare('UPDATE ' . $wpdb->posts . ' SET post_name = %s WHERE ID = %d', $slug, $row->ID)); $row->post_name = $row->meta_value = $slug; } $cnt = 0; $cnt_renamed = 0; $lst = ''; $sql = 'INSERT INTO ' . $wpdb->prefix . 'i18n_slugs (slug, lang, name) VALUES (%s, %s, %s)'; foreach ($result as $row) { $lang = substr($row->meta_key, -2); if ($lang == $default_language) { continue; } $name = $row->post_name; if (empty($name)) { continue; } $slug = $row->meta_value; if (empty($slug)) { continue; } if (!qtranxf_isEnabled($lang)) { continue; } $slug = qtranxf_slug_unique($row->meta_value, $lang, $name); if ($slug != $row->meta_value) { $lst .= $row->ID . '\\t' . $name . '\\t' . $lang . '\\t' . $row->meta_value . ' => ' . $slug . PHP_EOL; ++$cnt_renamed; } //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: $lang='.$lang.'; row: ', $row); $query = $wpdb->prepare($sql, $slug, $lang, $row->post_name); $wpdb->query($query); ++$cnt; } $msg = ''; if ($cnt != 0) { $msg .= sprintf(__('Applicable options and slug data from plugin %s have been imported.', 'qtranslate'), $nm); } //if(!empty($lst))){ $upload_dir = wp_upload_dir(); //qtranxf_dbg_log('qtranxf_migrate_import_qtranslate_slug: upload_dir: ',$upload_dir); $fnm = '/qts-qtx-report-of-renamed.log'; $fn = $upload_dir['basedir'] . $fnm; //[01-Nov-2015 02:21:57 UTC] error_log(date('[d-M-Y H:i:s T]') . ': Slugs renamed during import:' . PHP_EOL . "Post_ID\tpost_name\tLANG\tQtranslate Slug => qTranslate-X Slug" . PHP_EOL . $lst . PHP_EOL, 3, $fn); $url = $upload_dir['baseurl'] . $fnm; $msg .= ' ' . sprintf(__('A number of post slugs have had to be renamed in order to provide uniqueness. The report of renamed slugs is saved in the file "%s".', 'qtranslate'), '<a href="' . $url . ' target="_blank">' . $url . '</a>'); //} if (!empty($msg)) { $msg .= ' ' . sprintf(__('It might be a good idea to review %smigration instructions%s, if you have not yet done so.', 'qtranslate'), '<a href="https://qtranslatexteam.wordpress.com/migration/" target="_blank">', '</a>'); qtranxf_add_message($msg); } }