LLMS_User_Permissions::editable_roles( array $all_roles )
Determines what other user roles can be managed by a user role
Description Description
Allows LMS Managers to create instructors and other managers. Allows instructors to create & manage assistants.
Parameters Parameters
- $all_roles
-
(array) (Required) All roles array.
Return Return
(array)
Source Source
File: includes/class.llms.user.permissions.php
public function editable_roles( $all_roles ) {
/**
* Prevent issues when other plugins call get_editable_roles() before `init`.
*
* @link https://github.com/gocodebox/lifterlms/issues/1727
*/
if ( ! function_exists( 'wp_get_current_user' ) ) {
return $all_roles;
}
if ( is_multisite() && is_super_admin() ) {
return $all_roles;
}
$user = wp_get_current_user();
$user_roles = $user->roles;
if ( in_array( 'administrator', $user_roles, true ) ) {
return $all_roles;
}
$editable_roles = self::get_editable_roles();
if ( empty( array_intersect( $user_roles, array_keys( $editable_roles ) ) ) ) {
return $all_roles;
}
$roles = array();
foreach ( $user_roles as $user_role ) {
if ( isset( $editable_roles[ $user_role ] ) ) {
$roles = array_merge( $roles, $editable_roles[ $user_role ] );
}
}
$roles = array_unique( $roles );
foreach ( array_keys( $all_roles ) as $role ) {
if ( ! in_array( $role, $roles, true ) ) {
unset( $all_roles[ $role ] );
}
}
return $all_roles;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.10.0 | Better handling of users with multiple roles. |
| 3.37.14 | Use strict comparison. |
| 3.34.0 | Moved the llms_editable_roles filter to the class method get_editable_roles(). |
| 3.13.0 | Introduced. |