Inscription sur catégorie de cours - s'assurer du bon fonctionnement

Inscription sur catégorie de cours - s'assurer du bon fonctionnement

par Séverin TERRIER,
Nombre de réponses : 5
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Il y a déjà eu plusieurs discussions liées à l'inscription sur catégorie de cours (voir documentation francophone), qui comportent des éléments utiles ; chronologiquement :

Je rappelle que cette méthode d'inscription permet, en attribuant à une personne un rôle sur une catégorie, de l'inscrire (forcément) à tous les cours de la catégorie (et des sous-catégories).

Malgré tout, je me permet un résumé des éléments nécessaires à un bon fonctionnement.

Il faut que l'administrateur :

  • dans "Administration du site > Plugins > Inscriptions > Gérer les plugins d'inscription", active "Inscription par catégorie"
  • dans "Administration du site > Utilisateurs > Permissions > Définition des rôles", modifie les rôles souhaités et vérifie que pour chacun d'eux :
    • pour "Types de contextes où ce rôle peut être attribué", le choix "Catégorie" soit bien coché
    • la capacité "Synchroniser les attributions de rôles avec l'inscription au cours" (enrol/category:synchronised) soit bien autorisée
  • dans "Administration du site > Serveur > Tâches > Tâches programmées", vérifie que la tâche "Synchronisation des inscriptions de catégories" (\enrol_category\task\enrol_category_sync) soit bien programmée
  • s'assure que le cron est bien programmé pour s'exécuter régulièrement (le cas échéant, il sera possible de lancer manuellement la tâche programmée indiquée ci-dessus)

Sans l'ensemble de ces éléments, les inscriptions aux catégories ne fonctionneront pas correctement. On pourrait effectivement attribuer des rôles sur des catégories, sans que cela n'inscrive les utilisateurs aux différents cours (ce qui n'est pas le but)...

Séverin

Moyenne des évaluations Utile (6)
En réponse à Séverin TERRIER

Re: Inscription sur catégorie de cours - s'assurer du bon fonctionnement

par Séverin TERRIER,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Re-bonjour,

Et comme il peut être pénible et compliqué de vérifier manuellement ces différents éléments (surtout si vous gérez plusieurs plateformes), voici quelques requêtes SQL qui pourront permettre d'effectuer facilement certaines vérifications. Ces requêtes sont à lancer par exemple grâce au plugin Moodle Adminer.

Pour trouver les rôles qui sont définis comme attribuables sur des catégories :

SELECT r.id, r.name, r.shortname
FROM  mdl_role r, mdl_role_context_levels rcl WHERE rcl.roleid = r.id   AND rcl.contextlevel = '40';

Pour trouver les rôles ayant défini des droits sur la capacité de synchronisation des inscriptions par catégorie  ("permission" doit être à 1 pour que cela puisse fonctionner) :

SELECT r.id, r.name, r.shortname, rc.contextid, rc.permission, FROM_UNIXTIME(rc.timemodified) AS Modifié, rc.modifierid
FROM  mdl_role r, mdl_role_capabilities rc
WHERE rc.roleid = r.id
  AND rc.capability = 'enrol/category:synchronised'
ORDER By Modifié;

Si des rôles issus de la première requête n’apparaissent pas dans la deuxième, cela ne fonctionnera pas correctement pour eux. Il faut donc ajouter les droits sur cette capacité pour les rôles manquants.

Par ailleurs, il sera nécessaire que la tâche planifiée de "Synchronisation des inscriptions de catégorie" soit lancée après l'attribution du rôle sur la catégorie afin que les utilisateurs inscrits sur une catégorie se retrouvent correctement inscrits aux cours !

Pour trouver les dernières exécutions de la tâche de synchronisation des inscriptions par catégorie (ordre chronologique inversé) :

SELECT FROM_UNIXTIME(timestart), FROM_UNIXTIME(timeend)
FROM mdl_task_log
WHERE component = 'enrol_category' AND classname = 'enrol_category\\task\\enrol_category_sync'
ORDER BY id DESC
LIMIT 10;

Si cette requête ne renvoi pas de résultat en adéquation, il faut vérifier si cette tâche est bien programmée et si le cron est bien actif !
Il reste éventuellement possible de la lancer manuellement si on ne souhaite pas lancer la totalité du cron (sur une plateforme de test par exemple).

Pour trouver les personnes ayant des rôles attribués sur des catégories :

SELECT
  cc.id, cc.name AS Catégorie, cc.depth, cc.path,
  r.name AS rôle, r.shortname,
  u.lastname AS Nom, u.firstname AS Prénom, u.username, u.email
FROM  mdl_course_categories cc
 JOIN mdl_context           cx ON cc.id     = cx.instanceid AND cx.contextlevel = '40'
 JOIN mdl_role_assignments  ra ON cx.id     = ra.contextid
 JOIN mdl_role               r ON ra.roleid = r.id
 JOIN mdl_user               u ON ra.userid = u.id
WHERE 1=1
ORDER BY cc.depth, cc.path, u.lastname, u.firstname, r.name, cc.name;


Cette requête, adaptée en rapport utilisable avec le plugin "Rapports personnalisés", intégrant des liens :

SELECT
  concat('<a target="_new" href="%%WWWROOT%%/course/category.php?id=',cc.id,'">',cc.id,'</a>') AS id,
  concat('<a target="_new" href="%%WWWROOT%%/course/category.php?id=',cc.id,'">',cc.name,'</a>') AS Catégorie,
  cc.depth, cc.path, r.name AS rôle, r.shortname,
  concat('<a target="_new" href="%%WWWROOT%%/user/view.php?id=',u.id,'">',u.lastname,'</a>') AS Nom,
  u.firstname AS Prénom, u.username, u.email
FROM       prefix_course_categories cc
INNER JOIN prefix_context           cx ON cc.id     = cx.instanceid AND cx.contextlevel = '40'
INNER JOIN prefix_role_assignments  ra ON cx.id     = ra.contextid
INNER JOIN prefix_role               r ON ra.roleid = r.id
INNER JOIN prefix_user               u ON ra.userid = u.id
WHERE 1=1
--  AND r.id !=5 -- Décommenter cette ligne pour ne pas sélectionner le rôle étudiant
ORDER BY cc.depth, cc.path, u.lastname, u.firstname, r.name, cc.name

Voila, j'espère que ces éléments vous permettront d'éviter les soucis avec les inscriptions sur les catégories.

Séverin

Moyenne des évaluations Utile (5)
En réponse à Séverin TERRIER

Re: Inscription sur catégorie de cours - s'assurer du bon fonctionnement

par Séverin TERRIER,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Je reviens (tardivement) compléter cette discussion, avec les détails sur la façon d'attribuer un rôle sur une catégorie, lorsque tout a été paramétré pour :

  • aller sur la catégorie souhaitée
  • ouvrir l'attribution des rôles :
    • avec le thème Boost :
      • cliquer sur l'onglet "Plus", puis "Permissions"
      • dans le menu déroulant "Permissions", choisir "Attribution des rôles"
    • avec le thème Classic : 
      • dans le bloc "Administration", cliquer sur "Attribution des rôles"
  • cliquer sur le nom du rôle souhaité
  • en partie droite, utiliser le champ "Rechercher" pour cibler facilement le(s) utilisateur(s) souhaité(s)
  • sélectionner le(s) utilisateur(s) souhaité(s) et cliquer sur le bouton "Ajouter"

Astuce : si le changement de thème via l'URL ("allowthemechangeonurl") est autorisé , il est possible de changer de thème à la volée (pour vous uniquement), en ajoutant en fin d'URL :

  • s'il n'y a pas déjà de paramètre (avec ?) : ?theme=boost ou ?theme=classic
  • s'il y a déjà un paramètre (avec ?) : &theme=boost ou &theme=classic

Cela peut également être fait (sans bidouiller l'URL) en utilisant le bloc "Sélecteur de thème".

Séverin

Moyenne des évaluations Utile (2)
En réponse à Séverin TERRIER

Re: Inscription sur catégorie de cours - s'assurer du bon fonctionnement

par Clément Bathellier,

Bonjour,

Merci pour ce récapitulatif.

En faisant cela et en me connectant avec un profil élève inscrit dans une catégorie, un dossier "Plus" apparaît dans le menu à gauche (moodle 3.9, Moove). Il n'y a rien dedans. Savez-vous s'il vous plaît à quoi cela correspond? Est-ce possible de l'enlever?

Clément

Annexe Capture d’écran 2021-03-26 à 10.58.14.png
En réponse à Clément Bathellier

Re: Inscription sur catégorie de cours - s'assurer du bon fonctionnement

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour,

Cet étudiant se retrouve probablement inscrit à plus de 10 cours.

Essayer d'augmenter le paramètre navcourselimit  en suivant le chemin
Administration -> Présentation -> Navigation.

Voir ce fil de discussion :
https://moodle.org/mod/forum/discuss.php?d=386044


Christian

Moyenne des évaluations Utile (1)