Bonjour,
Depuis Moodle 1.7 la situation n'est pas aussi simple qu'avant. Chaque utilisateur peut avoir un role différent selon le contexte (site,
cours ou même
activité). De plus les dérogations aux
rôles viennent encore compliquer la situation, par exemple un
étudiant d'un cours peut avoir le
rôle enseignant juste pour un forum de ce cours ...
Tu peux utiliser les rôles "legacy" pour avoir une petite idée, mais ca reste très grossier et ne prendra pas en
compte les dérogations, ni les rôles personnalisés qui auraient pu être ajoutés au niveau du site ...
En admettant que tu connais $userid et $courseid tu peux essayer faire :
has_capability('moodle/legacy:admin', get_context_instance(CONTEXT_SYSTEM, SITEID), $userid, false);
Ca te dira si il est admin au niveau du site, donc normalement partout ...
has_capability('moodle/legacy:coursecreator', get_context_instance(CONTEXT_SYSTEM, SITEID), $userid, false);
Ca te dira s'il est
créateur de cours au niveau du site...attention dans de nombreux sites il y a des créateurs aux niveaux des
catégories et pas au niveau site ... donc il te faudra d'abord chercher la
catégorie du cours, son contexte et refaire le
test ...
has_capability('moodle/legacy:
teacher', get_context_instance(CONTEXT_COURSE, $courseid), $userid, false) || has_capability('moodle/legacy:editingteacher', get_context_instance(CONTEXT_COURSE, $courseid), $userid, false);
Ca te dira si il est "prof" du cours. Un meilleur test serait la
capacité "moodle/
course:update" pour un vrai "prof éditeur"
Enfin, si ces
tests ont échoués, il est peut être étudiant, si il a la capacité "moodle/course:view" et qu'il n'est pas l'
invité...
Bref ces tests émuleront à peu près le comportement de Moodle 1.6 sans rôles... ils sont aussi disponibles avec les fonctions isadmin() et isteacher($courseid), MAIS ces fonctions ont été dépreciées ...
Tout ca sans oublier que la
page d'accueil est un cours très particulier avec ses propres rôles ...
Voila.