Я хочу знать, как я могу реализовать что-то, чтобы сравнить значимость роли каждого пользователя.
Мои 3 роли: directeur_cr_, comptable_cr_ и salaries_cr _.
Где directeur_cr_> comptable_cr_> salaries_cr_
В моем цикле я могу получить всех пользователей на основе определенного значения (в field_val). Затем я смотрю роль каждого пользователя.
что я хочу сделать, это:
- Если мой пользователь - directeur_cr_, цикл заканчивается.
- иначе, если мой пользователь comptable_cr_, циклы заканчиваются.
- иначе, если мой пользователь salaries_cr_, циклы заканчиваются.
Идея состоит в том, что я хочу сохранить пользователя с самой высокой ролью (здесь, directeur_cr_). Если нет directeur_cr_, ищите роль под этим (так comptable_cr_). То же самое для уровня ниже этого.
У меня 3 пользователя:
- пользователь 1: comptable_cr_
- пользователь 2: salaries_cr_
- пользователь 3: directeur_cr_
Мой цикл фактически работает. У меня есть такой результат:
- USER 1 - directeur: false comptable: true
- Пользователь 2 - directeur: false comptable: false salarié: true
- Пользователь 3 - directeur: true
Я ищу вот что:
- Пользователь 3 - directeur: true
независимо от того, есть ли другая роль (потому что я хочу самую высокую доступную роль).
Если directeur недоступен, вместо этого покажите comptable.
Если comptable недоступен, показывать вместо этого оклады.
foreach($listeValuesDrupal2 as $valUnique){
echo $valUnique;
$users = \Drupal::entityTypeManager()->getStorage('user')
->loadByProperties(['field_val' => $valUnique]);
dump($users); //show my user with $valUnique in field_val
foreach ($users as $user){
/*
role : directeur_cr_ > comptable_cr_ > salaries_cr_
*/
echo "<br/>------------------------- USER -------------------------<br/>";
$user_has_role_directeur = $user && $user->hasRole('directeur_cr_'); //check if user has this role
echo "directeur : "; dump($user_has_role_directeur);
if(!$user_has_role_directeur){
$user_has_role_comptable = $user && $user->hasRole('comptable_cr_');
echo "comptable : "; dump($user_has_role_comptable);//check if user has this role
if(!$user_has_role_comptable){
$user_has_role_salarie = $user && $user->hasRole('salaries_cr_');
echo "salaries : "; dump($user_has_role_salarie);//check if user has this role
}
}
}
}