PluginProbe
Bogo / 2.9
Bogo v2.9
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
← All changes | includes/capabilities.php +12 -34 trunk2.9 View file →
@@ -3,13 +3,12 @@
3 3 add_filter( 'map_meta_cap', 'bogo_map_meta_cap', 10, 4 );
4 4
5 5 function bogo_map_meta_cap( $caps, $cap, $user_id, $args ) {
6 6 $meta_caps = array(
7 - 'bogo_manage_language_packs' => 'install_languages',
8 - 'bogo_edit_terms_translation' => 'manage_categories',
7 + 'bogo_manage_language_packs' => 'update_core',
8 + 'bogo_edit_text_translation' => 'manage_options',
9 9 'bogo_access_all_locales' => 'manage_options',
10 - 'bogo_access_locale' => 'read',
11 - );
10 + 'bogo_access_locale' => 'read' );
12 11
13 12 $meta_caps = apply_filters( 'bogo_map_meta_cap', $meta_caps );
14 13
15 14 $caps = array_diff( $caps, array_keys( $meta_caps ) );
@@ -17,40 +16,19 @@
17 16 if ( isset( $meta_caps[$cap] ) ) {
18 17 $caps[] = $meta_caps[$cap];
19 18 }
20 19
21 - static $accessible_locales = array();
20 + if ( 'bogo_access_locale' == $cap
21 + && ! user_can( $user_id, 'bogo_access_all_locales' ) ) {
22 + $accessible_locales = bogo_get_user_accessible_locales( $user_id );
22 23
23 - if (
24 - 'bogo_access_all_locales' !== $cap and
25 - ! isset( $accessible_locales[$user_id] )
26 - ) {
27 - $accessible_locales[$user_id] = bogo_get_user_accessible_locales(
28 - $user_id
29 - );
30 - }
24 + if ( ! empty( $accessible_locales ) ) {
25 + $accessible_locales = bogo_filter_locales( $accessible_locales );
26 + $locale = $args[0];
31 27
32 - if (
33 - 'bogo_access_locale' === $cap and
34 - ! user_can( $user_id, 'bogo_access_all_locales' )
35 - ) {
36 - $locale = $args[0];
37 -
38 - if ( ! in_array( $locale, $accessible_locales[$user_id] ) ) {
39 - $caps[] = 'do_not_allow';
40 - }
41 - }
42 -
43 - if (
44 - in_array( $cap, array( 'edit_post', 'delete_post' ), true ) and
45 - $post = get_post( $args[0] ) and
46 - $user_id !== $post->post_author and
47 - ! user_can( $user_id, 'bogo_access_all_locales' )
48 - ) {
49 - $locale = bogo_get_post_locale( $post->ID );
50 -
51 - if ( ! in_array( $locale, $accessible_locales[$user_id] ) ) {
52 - $caps[] = 'do_not_allow';
28 + if ( ! in_array( $locale, $accessible_locales ) ) {
29 + $caps[] = 'do_not_allow';
30 + }
53 31 }
54 32 }
55 33
56 34 return $caps;