PluginProbe
Bogo / 2.6
Bogo v2.6
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 3.9.32.6 View file →
@@ -3,13 +3,10 @@
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',
9 7 'bogo_access_all_locales' => 'manage_options',
10 - 'bogo_access_locale' => 'read',
11 - );
8 + 'bogo_access_locale' => 'read' );
12 9
13 10 $meta_caps = apply_filters( 'bogo_map_meta_cap', $meta_caps );
14 11
15 12 $caps = array_diff( $caps, array_keys( $meta_caps ) );
@@ -17,41 +14,22 @@
17 14 if ( isset( $meta_caps[$cap] ) ) {
18 15 $caps[] = $meta_caps[$cap];
19 16 }
20 17
21 - static $accessible_locales = array();
18 + if ( 'bogo_access_locale' == $cap
19 + && ! user_can( $user_id, 'bogo_access_all_locales' ) ) {
20 + $accessible_locales = bogo_get_user_accessible_locales( $user_id );
22 21
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 - }
22 + if ( ! empty( $accessible_locales ) ) {
23 + $accessible_locales = bogo_filter_locales( $accessible_locales );
24 + $locale = $args[0];
31 25
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';
26 + if ( ! in_array( $locale, $accessible_locales ) ) {
27 + $caps[] = 'do_not_allow';
28 + }
40 29 }
41 30 }
42 31
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';
53 - }
54 - }
55 -
56 32 return $caps;
57 33 }
34 +
35 +?>