db_id] = $item->bogo_locales; } $prefix = 'menu-item-bogo-locale'; wp_enqueue_script( 'bogo-admin', plugins_url( 'admin/includes/js/admin.js', BOGO_PLUGIN_BASENAME ), array( 'jquery' ), BOGO_VERSION, true ); wp_localize_script( 'bogo-admin', '_bogo', array( 'availableLanguages' => bogo_available_languages( array( 'exclude_enus_if_inactive' => true, 'orderby' => 'value' ) ), 'locales' => $locales, 'selectorLegend' => __( 'Displayed on pages in', 'bogo' ), 'cbPrefix' => $prefix ) ); wp_enqueue_style( 'bogo-admin', plugins_url( 'admin/includes/css/admin.css', BOGO_PLUGIN_BASENAME ), array(), BOGO_VERSION, 'all' ); return; } if ( 'options-general.php' == $hook_suffix ) { wp_enqueue_script( 'bogo-admin', plugins_url( 'admin/includes/js/admin.js', BOGO_PLUGIN_BASENAME ), array( 'jquery' ), BOGO_VERSION, true ); wp_localize_script( 'bogo-admin', '_bogo', array( 'defaultLocale' => bogo_get_default_locale() ) ); return; } } add_action( 'admin_menu', 'bogo_admin_menu' ); function bogo_admin_menu() { $tools = add_management_page( __( 'Bogo Tools', 'bogo' ), __( 'Bogo', 'bogo' ), 'update_core', 'bogo-tools', 'bogo_tools_page' ); add_action( 'load-' . $tools, 'bogo_load_tools_page' ); } function bogo_load_tools_page() { require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; if ( 'install_translation' == $action ) { check_admin_referer( 'bogo-tools' ); if ( ! current_user_can( 'update_core' ) ) { wp_die( __( 'You are not allowed to install translations.', 'bogo' ) ); } $locale = isset( $_GET['locale'] ) ? $_GET['locale'] : null; if ( wp_download_language_pack( $locale ) ) { $redirect_to = add_query_arg( array( 'locale' => $locale, 'message' => 'install_success' ), menu_page_url( 'bogo-tools', false ) ); } else { $redirect_to = add_query_arg( array( 'locale' => $locale, 'message' => 'install_failed' ), menu_page_url( 'bogo-tools', false ) ); } wp_safe_redirect( $redirect_to ); exit(); } if ( 'delete_translation' == $action ) { check_admin_referer( 'bogo-tools' ); if ( ! current_user_can( 'update_core' ) ) { wp_die( __( 'You are not allowed to delete translations.', 'bogo' ) ); } $locale = isset( $_GET['locale'] ) ? $_GET['locale'] : null; if ( bogo_delete_language_pack( $locale ) ) { $redirect_to = add_query_arg( array( 'locale' => $locale, 'message' => 'delete_success' ), menu_page_url( 'bogo-tools', false ) ); } else { $redirect_to = add_query_arg( array( 'locale' => $locale, 'message' => 'delete_failed' ), menu_page_url( 'bogo-tools', false ) ); } wp_safe_redirect( $redirect_to ); exit(); } if ( 'deactivate_enus' == $action ) { check_admin_referer( 'bogo-tools' ); bogo_set_prop( 'enus_deactivated', true ); $redirect_to = add_query_arg( array( 'message' => 'enus_deactivated' ), menu_page_url( 'bogo-tools', false ) ); wp_safe_redirect( $redirect_to ); exit(); } if ( 'activate_enus' == $action ) { check_admin_referer( 'bogo-tools' ); bogo_set_prop( 'enus_deactivated', false ); $redirect_to = add_query_arg( array( 'message' => 'enus_activated' ), menu_page_url( 'bogo-tools', false ) ); wp_safe_redirect( $redirect_to ); exit(); } } function bogo_tools_page() { $enus_deactivated = bogo_get_prop( 'enus_deactivated' ); $can_install = wp_can_install_language_pack(); $default_locale = bogo_get_default_locale(); $available_locales = bogo_available_locales(); ?>

'activate_enus' ), $activate_link ); $activate_link = wp_nonce_url( $activate_link, 'bogo-tools' ); $activate_link = sprintf( '%2$s', $activate_link, esc_html( __( 'Activate', 'bogo' ) ) ); $status = sprintf( '
%s | %s
', $status, $activate_link ); $class = ''; } else { $deactivate_link = menu_page_url( 'bogo-tools', false ); $deactivate_link = add_query_arg( array( 'action' => 'deactivate_enus' ), $deactivate_link ); $deactivate_link = wp_nonce_url( $deactivate_link, 'bogo-tools' ); $deactivate_link = sprintf( '%2$s', $deactivate_link, esc_html( __( 'Deactivate', 'bogo' ) ) ); $status = sprintf( '
%s | %s
', $status, $deactivate_link ); } } elseif ( $can_install ) { $delete_link = menu_page_url( 'bogo-tools', false ); $delete_link = add_query_arg( array( 'action' => 'delete_translation', 'locale' => $locale ), $delete_link ); $delete_link = wp_nonce_url( $delete_link, 'bogo-tools' ); if ( ! $delete_language = bogo_get_language( $locale ) ) { $delete_language = $locale; } $delete_confirm = sprintf( __( "You are about to delete %s language pack.\n 'Cancel' to stop, 'OK' to delete.", 'bogo' ), $delete_language ); $delete_link = sprintf( '%2$s', $delete_link, esc_html( __( 'Delete', 'bogo' ) ), esc_js( $delete_confirm ) ); $status = sprintf( '
%s | %s
', $status, $delete_link ); } ?> $translation ) { if ( in_array( $locale, $available_locales ) ) { continue; } $count += 1; $install_link = ''; if ( $can_install ) { $install_link = menu_page_url( 'bogo-tools', false ); $install_link = add_query_arg( array( 'action' => 'install_translation', 'locale' => $locale ), $install_link ); $install_link = wp_nonce_url( $install_link, 'bogo-tools' ); $install_link = sprintf( '%2$s', $install_link, esc_html( __( 'Install', 'bogo' ) ) ); } ?>
1

[]

[]

[]

%s

', esc_html( $message ) ); } else { echo sprintf( '

%s

', esc_html( $message ) ); } } function bogo_delete_language_pack( $locale ) { if ( 'en_US' == $locale || ! bogo_is_available_locale( $locale ) || bogo_is_default_locale( $locale ) ) { return false; } if ( ! is_dir( WP_LANG_DIR ) || ! $files = scandir( WP_LANG_DIR ) ) { return false; } $target_files = array( sprintf( '%s.mo', $locale ), sprintf( '%s.po', $locale ), sprintf( 'admin-%s.mo', $locale ), sprintf( 'admin-%s.po', $locale ), sprintf( 'admin-network-%s.mo', $locale ), sprintf( 'admin-network-%s.po', $locale ), sprintf( 'continents-cities-%s.mo', $locale ), sprintf( 'continents-cities-%s.po', $locale ) ); foreach ( $files as $file ) { if ( '.' === $file[0] || is_dir( $file ) ) { continue; } if ( in_array( $file, $target_files ) ) { $result = @unlink( path_join( WP_LANG_DIR, $file ) ); if ( ! $result ) { return false; } } } return true; }