RoleValidator.php
841 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
namespace WPML\TM\Menu\TranslationRoles;
use WPML\FP\Obj;
class RoleValidator {
/**
* Checks if a specific role is valid.
*
* @param string $roleName
* @return bool
*/
public static function isValid( $roleName ) {
$wp_role = get_role( $roleName );
return $wp_role instanceof \WP_Role;
}
/**
* @param string $roleName
*
* @return string|null
*/
public static function getTheHighestPossibleIfNotValid( $roleName ) {
$wp_role = get_role( $roleName );
$user = wp_get_current_user();
if ( \WPML_WP_Roles::get_highest_level( $wp_role->capabilities ) > \WPML_WP_Roles::get_user_max_level( $user ) ) {
$wp_role = current( \WPML_WP_Roles::get_roles_up_to_user_level( $user ) );
if ( ! $wp_role ) {
return null;
}
$roleName = Obj::prop( 'name', $wp_role );
}
return $roleName;
}
}