is_installed()) $gengo->install(get_option('gengo_version')); if (!current_user_can('configure_gengo')) { die( __('You do not have sufficient permissions to access this page.') ); } // Add a new language to the language list. function gengo_add_language() { global $wpdb, $wp_rewrite, $gengo; if (!$language = $_POST['gengo_language']) return $gengo->error_message(__("Please enter a name for the language.", GENGO_DOMAIN)); elseif (!$code = $_POST['gengo_language_code']) return $gengo->error_message(__("Please enter a two letter code for the language.", GENGO_DOMAIN)); elseif (!$locale = $_POST['gengo_language_locale']) return $gengo->error_message(__("Please enter a locale for the language.", GENGO_DOMAIN)); foreach ($gengo->languages as $entry) if ($entry->code == $code) return $gengo->error_message(sprintf(__("Duplicate language code '%s' could not be added.", GENGO_DOMAIN), $code)); $rtl = isset($_POST['gengo_language_rtl']) ? '1' : '0'; $charset = $_POST['gengo_language_charset']; // Cleanup title for low-privilege users. if (($blog_title = $_POST['gengo_language_blog_title']) && !current_user_can('unfiltered_html')) $blog_title = wp_filter_post_kses($blog_title); if (($blog_tagline = $_POST['gengo_language_blog_tagline']) && !current_user_can('unfiltered_html')) $blog_tagline = wp_filter_post_kses($blog_tagline); // Insert language and language code into the db. $wpdb->query("INSERT INTO $gengo->language_table(language, code, locale, rtl, charset) VALUES ('$language', '$code', '$locale', '$rtl', '$charset')"); $language_id = $wpdb->get_var("SELECT DISTINCT LAST_INSERT_ID() FROM $gengo->language_table;"); $synblock_values = "('blogtagline', $language_id, '$blog_tagline'), ('blogtitle', $language_id, '$blog_title')"; if ($synblocks = $wpdb->get_col("SELECT DISTINCT block_name FROM $gengo->synblock_table WHERE block_name != 'blogtagline' AND block_name != 'blogtitle'")) { $synblock_values .= ", ('" . implode ("', $language_id, ''), ('", $synblocks) . "', $language_id, '')"; } $wpdb->query("INSERT INTO $gengo->synblock_table(block_name, language_id, text) VALUES $synblock_values"); $gengo->set_defined_languages(); $wp_rewrite->flush_rules(); $gengo->update_message(sprintf(__("Language '%s' Added. Rewrite rules updated.", GENGO_DOMAIN), $language)); if(1 == count($gengo->languages)) { // Save the first language as the default and set all posts and categories to be this language. $gengo->save_blog_default_language($language_id); $gengo->set_no_lang_posts_default(true); $gengo->set_wplang($locale); $wpdb->query("INSERT INTO $gengo->term2syn_table(term_id, language_id, synonym, sanitised) SELECT term_id, $language_id, name, slug FROM $wpdb->terms"); $gengo->update_message(sprintf(__("All posts and categories set to the default language '%s'.", GENGO_DOMAIN), $language)); } else { $wpdb->query("INSERT INTO $gengo->term2syn_table(term_id, language_id, synonym, sanitised) SELECT term_id, $language_id, '', '' FROM $wpdb->terms"); } return true; } // Edit a language already in the language list. function gengo_edit_language() { global $wpdb, $wp_rewrite, $gengo; if (!$language = $_POST['gengo_language']) return $gengo->error_message(__("Please enter a name for the language.", GENGO_DOMAIN)); elseif (!$code = $_POST['gengo_language_code']) return $gengo->error_message(__("Please enter a two letter code for the language.", GENGO_DOMAIN)); elseif (!$locale = $_POST['gengo_language_locale']) return $gengo->error_message(__("Please enter a locale for the language.", GENGO_DOMAIN)); $id = $_POST['gengo_language_id']; $rtl = isset($_POST['gengo_language_rtl']) ? '1' : '0'; $charset = $_POST['gengo_language_charset']; // Cleanup title for low-privilege users. if (($blog_title = $_POST['gengo_language_blog_title']) && !current_user_can('unfiltered_html')) $blog_title = wp_filter_post_kses($blog_title); if (($blog_tagline = $_POST['gengo_language_blog_tagline']) && !current_user_can('unfiltered_html')) $blog_tagline = wp_filter_post_kses($blog_tagline); foreach ($gengo->languages as $language_id => $entry) { if ($entry->code == $code) { if ($language_id != $id) return $gengo->error_message(sprintf(__("Language code '%s' already exists, please choose another.", GENGO_DOMAIN), $code)); $existing_code_id = $language_id; break; } } $wpdb->query("UPDATE $gengo->language_table SET language = '$language', code = '$code', locale = '$locale', rtl = '$rtl', charset = '$charset' WHERE language_id = $id"); $wpdb->query("UPDATE $gengo->synblock_table SET text = '$blog_title' WHERE block_name = 'blogtitle' AND language_id = $id"); $wpdb->query("UPDATE $gengo->synblock_table SET text = '$blog_tagline' WHERE block_name = 'blogtagline' AND language_id = $id"); $gengo->set_defined_languages(); if ($existing_code_id != $id) { $wp_rewrite->flush_rules(); $rewrite_message = __(' Rewrite rules updated.', GENGO_DOMAIN); } return $gengo->update_message(sprintf(__("Language updated: '%s' with code '%s' and locale '%s'.%s", GENGO_DOMAIN), $language, $code, $locale, $rewrite_message)); } // Delete a language already in the language list. function gengo_delete_language($language_id) { global $wpdb, $wp_rewrite, $gengo; $default_language_id = $gengo->blog_default_language_id; $deleted_language = $gengo->languages[$language_id]->language; if ($language_id == $default_language_id) return $gengo->error_message(sprintf(__("You cannot delete the default language. If you want to delete '%s', set another language as the default first. If you want to delete all language data, run the uninstaller.", GENGO_DOMAIN), $gengo->languages[$language_id]->language)); $deleted = $wpdb->query("DELETE FROM $gengo->language_table WHERE language_id = $language_id"); if (!$deleted) return $gengo->error_message(__("The specified language does not exist. It may already have been deleted.", GENGO_DOMAIN)); $posts_affected = $wpdb->query("UPDATE $gengo->post2lang_table SET language_id = $default_language_id, translation_group = 0 WHERE language_id = $language_id"); if ($orphaned_translations = $wpdb->get_col("SELECT translation_group FROM $gengo->post2lang_table GROUP BY translation_group HAVING 1 = COUNT(*)")) { $orphaned_groups = implode(',', $orphaned_translations); $wpdb->query("UPDATE $gengo->post2lang_table SET translation_group = 0 WHERE translation_group IN ($orphaned_groups)"); } $summaries_affected = $wpdb->query("DELETE FROM $gengo->summary_table WHERE language_id = $language_id"); $wpdb->query("UPDATE $gengo->post2lang_table AS p2l INNER JOIN $gengo->summary_table AS s ON p2l.summary_group = s.summary_group SET p2l.summary_group = 0 WHERE s.summary_group IS NULL"); $users_affected = $wpdb->query("UPDATE $wpdb->usermeta SET meta_value = $default_language_id WHERE meta_key = 'gengo_default_language' AND meta_value = $language_id"); $gengo->set_defined_languages(); $wp_rewrite->flush_rules(); $wpdb->query("DELETE FROM $gengo->term2syn_table WHERE language_id = $language_id"); $wpdb->query("DELETE FROM $gengo->synblock_table WHERE language_id = $language_id"); return $gengo->update_message(sprintf(__("Language '%s' removed. %d summar(ies) removed. %d post(s) and %d user(s) reset to the blog default language, '%s'. Rewrite rules updated.", GENGO_DOMAIN), $deleted_language, $summaries_affected, posts_affected, $users_affected, $gengo->languages[$default_language_id]->language)); } // Handle Actions. if (isset($_POST['gengo_set_blog_default_submit']) && current_user_can('set_blog_default_language')) { $gengo->save_blog_default_language($_POST['gengo_blog_default_language']); } elseif (isset($_POST['gengo_update_language_submit'])) { $gengo_editing_language = $add_edit_language_failed = !gengo_edit_language(); } elseif (isset($_POST['gengo_add_language_submit'])) { $add_edit_language_failed = !gengo_add_language(); } elseif ($_GET['gengo_action'] == "cancel") { } elseif ($_GET['gengo_action'] == "edit_language") { $gengo_editing_language = true; $language_id = $_GET['language_id']; } elseif (($_GET['gengo_action'] == "delete_language") && current_user_can('delete_languages')) { gengo_delete_language($_GET['language_id']); } elseif (isset($_POST['gengo_language_settings_submit']) && current_user_can('modify_gengo_settings')) { $append = isset($_POST['gengo_append_urls']) ? '1' : '0'; update_option('gengo_append_urls', $append); $gengo->append_urls = $append; $multiread = isset($_POST['gengo_allow_multiread']) ? '1' : '0'; update_option('gengo_allow_multiread', $multiread); if ('MANUAL' == $_POST['gengo_default_reading_choice']) { update_option('gengo_default_reading_language', $_POST['gengo_default_reading_language']); } else { update_option('gengo_default_reading_language', '0'); } $gengo->update_message(__('Settings updated.', GENGO_DOMAIN)); } if ($gengo_editing_language && !$add_edit_language_failed) { $gengo_language = $gengo->languages[$language_id]->language; $gengo_code = $gengo->languages[$language_id]->code; $gengo_locale = $gengo->languages[$language_id]->locale; $gengo_charset = $gengo->languages[$language_id]->charset; $gengo_rtl = $gengo->languages[$language_id]->rtl; $gengo_blog_title = $gengo->get_synblock('blogtitle', $language_id); $gengo_blog_tagline = $gengo->get_synblock('blogtagline', $language_id); } elseif ($add_edit_language_failed) { $gengo_language = $_POST['gengo_language']; $gengo_code = $_POST['gengo_language_code']; $gengo_locale = $_POST['gengo_language_locale']; $gengo_rtl = isset($_POST['gengo_language_rtl']) ? '1' : '0'; $gengo_blog_title = $_POST['gengo_language_blog_title']; $gengo_blog_tagline = $_POST['gengo_language_blog_tagline']; } if ($language_count = count($gengo->languages)) { $default_language_id = $gengo->blog_default_language_id; if (!WPLANG && !$gengo->wplang) { $gengo->error_message(sprintf(__("WPLANG has not been set and could not be set automatically. This can cause problems with your blog. Please edit wp-config.php and change WPLANG to your default locale, '%s'.", GENGO_DOMAIN), $gengo->languages[$default_language_id]->locale)); } } // Output Gengo's Language Management Page. if (!$gengo_editing_language) { ?>
language; ?> | code ?> | locale ?> | charset ?> | rtl) ? 'RTL' : 'LTR' ?> | language) ?>');"> |
not delete posts in that language.', GENGO_DOMAIN) ?>
not delete any of your posts, but may cause theme errors if you are using Gengo template functions.', GENGO_DOMAIN) ?>