Filtre : Utiliser les paramètres selon le context ?

Filtre : Utiliser les paramètres selon le context ?

par Gaël Mifsud,
Nombre de réponses : 2

Bonjour à tous,

J'ai écrit un petit filtre Moodle qui fait à peu près la même chose que le filtre multimédia, pour les url d'un serveur de type pod.univ-lille1.fr. J'en ai fait la présentation avec Nicolas Can au MoodleMoot2015, d'ailleurs.
Mais bref, je coince sur un point désagréable : les paramètres locaux aux contexts !

Tout d'abord, j'ai lu la doc sur les filtres avant de créer cette discussion :
https://docs.moodle.org/dev/Filters

En particulier :
https://docs.moodle.org/dev/Filters#Local_configuration
et
https://docs.moodle.org/dev/Filter_enable/disable_by_context#Make_possible_per-filter_settings_page_in_each_context

J'ai un fichier filterlocalsettings.php avec tout ce qu'il faut dedans à priori.
Ils parlent de filterlocal.php dans le second lien mais ça semble être une erreur ou alors j'ai raté quelque chose. De plus, toujours dans cette seconde page, ils parlent d'options spécifiques par context du filtre glossaire, hors je ne les ai pas vues pour ce filtre !


En fait, ça marche "presque" sur mon filtre, (voir l'image attachée), c'est à dire que :
- j'ai bien des options au niveau global de Moodle, que seul l'administrateur peut changer.
- j'ai bien des options au niveau de l'activité dans laquelle se trouve une url à filtrer (souvent une étiquette).

Dans les deux cas, je parviens à récupérer les valeurs :
- $CFG->filter_podlille1_url renvoie la valeur globale
- $this->localconfig['url'] renvoie bien la valeur locale à l'activité.


Donc tout va bien ?
"Presque !"

Car un filtre peut s'activer à trois endroits !

1) au niveau global
2) au niveau du cours
3 au niveau de l'activité

Or je ne récupère la config qu'aux niveaux 1) et 3) et pas au niveau 2).
Il y a bien le formulaire d'options au niveau du cours, mais je ne connais pas le moyen de récupérer ces valeurs, ni même où elles sont stockées (elles ne sont pas dans $CFG) !

C'est ballot car c'est justement ce qui serait le plus pratique : permettre à un enseignant d'activer le filtre au niveau du cours, y mettre ses paramètres (l'url du serveur POD mais aussi la largeur des vidéos adaptées à son cours, par exemple), et ne plus s'en soucier pour toutes ses activités.


Je n'ai pas trouvé de filtres fournis avec Moodle qui propose d'options par contexte.
Avez-vous une piste à me donner pour récupérer les options au niveau du cours ?
Ou bien à la limite un filtre qui le ferait et dont je pourrais m'inspirer ?

Merci d'avance.

Annexe podlille1 - global - cours - etiquette.png
Moyenne des évaluations  -
En réponse à Gaël Mifsud

Re: Filtre : Utiliser les paramètres selon le context ?

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

Bonjour Gaël,

Je ne suis pas sur que cela t'aide, mais est-ce que le filtre Generico ne pourrait pas être utile pour les intégrations à réaliser ?

Séverin

En réponse à Séverin Terrier

Re: Filtre : Utiliser les paramètres selon le context ?

par Gaël Mifsud,

Merci Séverin.
J'ai regardé le code du filtre generico et ça m'a donné des idées pour la suite même si lui non-plus n'utilise pas les paramètres contextuels.

En fait, pour ceux qui viendraient lire ce thread plus tard, la réponse se trouve dans la doc Moodle à peu de chose près :
https://docs.moodle.org/dev/Filter_enable/disable_by_context#Getting_filter_configuration

Il faut se créer une fonction get_active_filters() qui va faire un appel à la BDD et récupérer les paramètres du filtre en fonction du contexte !
Comme mon filtre est le seul à proposer des paramètres contextuels, il est tout seul dans la table filter_config !

Ceux qui sont intéressés peuvent aller voir comment j'ai fait, les sources du filtre sont sur GitHub.

Je suis quand-même étonné qu'il soit si simple de récupérer les paramètres locaux et généraux, mais que rien de standard (genre getcontextconfig() ou $this->contextconfig, ou que sais-je) ne soit encore mis en place pour récupérer les paramètres contextuels, surtout que la doc montre qu'ils y ont déjà bien réfléchit !?

Bref, problème résolu. approbateur