PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / addons / wpml-dependencies / lib / classes / wpml-wp / class-wpml-wp-roles.php
woocommerce-multilingual / addons / wpml-dependencies / lib / classes / wpml-wp Last commit date
class-wpml-wp-api.php 1 month ago class-wpml-wp-roles.php 1 month ago class-wpml-wp-taxonomy.php 1 month ago iwpml-wp-element-type.php 1 month ago wpml-php-functions.php 1 month ago wpml-wp-post-type.php 1 month ago
class-wpml-wp-roles.php
92 lines
1 <?php
2
3 class WPML_WP_Roles {
4 const ROLES_ADMINISTRATOR = 'administrator';
5 const ROLES_EDITOR = 'editor';
6 const ROLES_CONTRIBUTOR = 'contributor';
7 const ROLES_SUBSCRIBER = 'subscriber';
8
9 const EDITOR_LEVEL = 'level_7';
10 const CONTRIBUTOR_LEVEL = 'level_1';
11 const SUBSCRIBER_LEVEL = 'level_0';
12
13 public static function get_editor_roles() {
14 return self::get_roles_for_level( self::EDITOR_LEVEL, self::ROLES_EDITOR );
15 }
16
17 public static function get_contributor_roles() {
18 return self::get_roles_for_level( self::CONTRIBUTOR_LEVEL, self::ROLES_CONTRIBUTOR );
19 }
20
21 public static function get_subscriber_roles() {
22 return self::get_roles_for_level( self::SUBSCRIBER_LEVEL, self::ROLES_SUBSCRIBER );
23 }
24
25 public static function get_roles_up_to_user_level( WP_User $user ) {
26 return self::get_roles_with_max_level( self::get_user_max_level( $user ), self::ROLES_SUBSCRIBER );
27 }
28
29 public static function get_user_max_level( WP_User $user ) {
30 return self::get_highest_level( $user->get_role_caps() );
31 }
32
33 public static function get_highest_level( array $capabilities ) {
34 $capabilitiesWithLevel = function ( $has, $cap ) {
35 return $has && strpos( $cap, 'level_' ) === 0;
36 };
37 $levelToNumber = function ( $cap ) {
38 return (int) substr( $cap, strlen( 'level_' ) );
39 };
40
41 return \wpml_collect( $capabilities )
42 ->filter( $capabilitiesWithLevel )
43 ->keys()
44 ->map( $levelToNumber )
45 ->sort()
46 ->last();
47 }
48
49 private static function get_roles_for_level( $level, $default = null ) {
50 return \wpml_collect( get_editable_roles() )
51 ->filter(
52 function ( $role ) use ( $level ) {
53 return isset( $role['capabilities'][ $level ] ) && $role['capabilities'][ $level ];
54 }
55 )
56 ->map( self::create_build_role_entity( $level, $default ) )
57 ->values()
58 ->toArray();
59 }
60
61 private static function get_roles_with_max_level( $level, $default = null ) {
62 $isRoleLowerThanLevel = function ( $role ) use ( $level ) {
63 return self::get_highest_level( $role['capabilities'] ) <= $level;
64 };
65
66 return \wpml_collect( get_editable_roles() )
67 ->filter( $isRoleLowerThanLevel )
68 ->map( self::create_build_role_entity( $level, $default ) )
69 ->values()
70 ->toArray();
71 }
72
73 private static function create_build_role_entity( $level, $default = null ) {
74 $is_default = self::create_is_default( $level, $default );
75
76 return function ( $role, $id ) use ( $is_default ) {
77 return [
78 'id' => $id,
79 'name' => $role['name'],
80 'default' => $is_default( $id ),
81 ];
82 };
83 }
84
85 private static function create_is_default( $level, $default = null ) {
86 $default = apply_filters( 'wpml_role_for_level_default', $default, $level );
87 return function ( $id ) use ( $default ) {
88 return $default && ( $default === $id );
89 };
90 }
91 }
92