PluginProbe
Bogo / 2.1
Bogo v2.1
3.9.3 trunk 1.0 1.1 2.0 2.0.1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.6 2.6.1 2.7 2.8 2.8.1 2.9 3.0 3.0.1 All 52 releases
bogo / includes / user-l10n.php

user-l10n.php in Bogo 2.1, at includes/user-l10n.php

95 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 add_action( 'personal_options_update', 'bogo_update_user_option' );
4
5 function bogo_update_user_option() {
6 if ( ! isset( $_POST['own_locale'] ) || empty( $_POST['own_locale'] ) )
7 $locale = null;
8 else
9 $locale = trim( $_POST['own_locale'] );
10
11 update_user_option( get_current_user_id(), 'locale', $locale, true );
12 }
13
14 add_action( 'personal_options', 'bogo_select_own_locale' );
15
16 function bogo_select_own_locale() {
17 $available_languages = bogo_available_languages( 'orderby=value' );
18
19 $selected = bogo_get_user_locale();
20
21 ?>
22
23 <!-- Bogo plugin -->
24 <tr>
25 <th scope="row"><?php echo esc_html( __( 'Locale', 'bogo' ) ); ?></th>
26 <td>
27 <select name="own_locale">
28 <?php foreach ( $available_languages as $locale => $lang ) : ?>
29 <option value="<?php echo esc_attr( $locale ); ?>" <?php selected( $locale, $selected ); ?>><?php echo esc_html( $lang ); ?></option>
30 <?php endforeach; ?>
31 </select>
32 </td>
33 </tr>
34
35 <?php
36 }
37
38 /* Admin Bar */
39
40 add_action( 'admin_bar_menu', 'bogo_admin_bar_menu' );
41
42 function bogo_admin_bar_menu( $wp_admin_bar ) {
43 $current_locale = bogo_get_user_locale();
44 $current_language = bogo_get_language( $current_locale );
45
46 if ( ! $current_language )
47 $current_language = $current_locale;
48
49 $wp_admin_bar->add_menu( array(
50 'parent' => 'top-secondary',
51 'id' => 'bogo-user-locale',
52 'title' => '&#10004; ' . $current_language ) );
53
54 $available_languages = bogo_available_languages(
55 array( 'exclude' => array( $current_locale ) ) );
56
57 foreach ( $available_languages as $locale => $lang ) {
58 $url = admin_url( 'profile.php?action=bogo-switch-locale&locale=' . $locale );
59
60 $url = add_query_arg(
61 array( 'redirect_to' => urlencode( $_SERVER['REQUEST_URI'] ) ),
62 $url );
63
64 $url = wp_nonce_url( $url, 'bogo-switch-locale' );
65
66 $wp_admin_bar->add_menu( array(
67 'parent' => 'bogo-user-locale',
68 'id' => 'bogo-user-locale-' . $locale,
69 'title' => $lang,
70 'href' => $url ) );
71 }
72 }
73
74 add_action( 'admin_init', 'bogo_switch_user_locale' );
75
76 function bogo_switch_user_locale() {
77 if ( empty( $_REQUEST['action'] ) || 'bogo-switch-locale' != $_REQUEST['action'] )
78 return;
79
80 check_admin_referer( 'bogo-switch-locale' );
81
82 $locale = isset( $_REQUEST['locale'] ) ? $_REQUEST['locale'] : '';
83
84 if ( ! bogo_is_available_locale( $locale ) || $locale == bogo_get_user_locale() )
85 return;
86
87 update_user_option( get_current_user_id(), 'locale', $locale, true );
88
89 if ( ! empty( $_REQUEST['redirect_to'] ) ) {
90 wp_safe_redirect( $_REQUEST['redirect_to'] );
91 exit();
92 }
93 }
94
95 ?>