En effet Etienne, mais on ne peut pas avoir le beurre et l'argent du beurre (la souplesse de combinaison des capacités et la simplicité de dévelppement pour le programmeur).
Réduire des "rôles" à des "presets" simples, cachés derrière un intitulé (identifiant simple) est évidemment plus concis au niveau de la programmation en boût de chaîne, mais évidemment plus rigide.
Nous devons nous faire à l'idée que la programmation de Moodle deviendra probablement de plus en plus compliquée, plus la plate-forme commence à évoluer vers un système "complet" et très "méta-renseigné".
Pour la cohérence, je pense qu'il faut mener une réflexion sur les capacités qu'on réutilise et les nouvelles que l'on crée. Les capacités fournies par le coeur de Moodle (moolde
ont eu une origine très précise. Il serait à mon avis erroné de n'en retenir que la "sémantique générale" portée par son nom. "moodle:viewdetails" par exemple, n'est pas une sémantique "générale" de "permettre de voir les détails" dans n'importe quel endroit de la plate forme. Elle doit rester liée à la visualisation des détails du profil de l'utilisateur. Donc on préférera localiser les capacités à son problème, et n'utiliser des capacités "externes" que si on connait parfaitement leur sémantique.
Cependant, pour parler de cohérence, le problème viendra de ce que tous les développeurs ne connaissent pas "par coeur" (et heureusement pour eux !!) la liste de toutes les capacités du coeur ou apportées par la suite. Et de nombreux développeurs sont tentés ou ont simplement besoin d'informations hors de leur problème propre. Difficile pour eux de savoir si ces informations sont sujettes à capacité ou non. C'est une vérification que l'on DEVRAIT faire en tant que développeur, mais qui reste difficile à assumer.
Je préconise toujours la règle de "solidité" dans ce cas, qui dit que chacun doit essayer, pour autant faire se peut, d'être le plus strict possible dans l' implémentation (le plus Moodle possible en fait) de son propre espace d'information et de rester "souple" avec ce que l'on utilise des modèles des autres. Ceci peut passer par le rapatriement, chez soi, de certaines vérifications ou contrôles que l'on aurait aimé voir pris en charge à l'extérieur.
Probablement que le développeur de ces blocs n'a pas assumé cette relation fonctionnelle (où que le code de la version précédente le faisait autrement et que la migration a produit un effet de bord).
Sur ce, salut Etienne !!
Valéry 