Bonjour,
Voila, je le savais que ma documentation (partagée) en ligne me resservirait
Mais du coup, cette année, j'ai légèrement modifié le mode de fonctionnement. En effet, il était compliqué de s'appuyer sur les restrictions de dates comme critère pour modifier celles-ci, notamment parce qu'avec la réinitialisation des cours (au fil du temps), il y avait un trop grand nombre de restrictions différentes.
Du coup, je suis parti sur autre chose, en me basant sur les titres du questionnaire et de l'espace de cours. Il faut donc s'assurer que les cours sont bien rangés dans les bonnes catégories, et possèdent des titres adéquates. Les questionnaires (d'évaluation des enseignements) doivent également porter la bonne mention de semestre notamment.
J'ai donc lancé plusieurs requêtes de vérification et de correction, dont voici quelques exemples.
Liste des questionnaires de "M1" ayant dans leur titre "Licence"
(suite à mauvaise mise en place). Cette liste permettra une comparaison visuelle :
SELECT c.id, c.fullname, cm.id, cm.instance, q.name
, REPLACE(q.name, 'Licence', 'Master 1') AS Nom
FROM
mdl_course AS c
,mdl_course_modules AS cm
,mdl_questionnaire AS q
WHERE cm.module = 23
AND q.id = cm.instance
AND cm.course = c.id
AND c.visible = 1
AND q.name LIKE 'Questionnaire évaluation des enseignements%'
AND c.fullname LIKE '[% M1 %'
AND cm.availability LIKE '%date%'
ORDER BY c.fullname;
Et requête de correction de ces questionnaires :
UPDATE
mdl_course AS c
,mdl_course_modules AS cm
,mdl_questionnaire AS q
SET q.name = REPLACE(q.name, 'Licence', 'Master 1')
WHERE cm.module = 23
AND q.id = cm.instance
AND cm.course = c.id
AND c.visible = 1
AND q.name LIKE 'Questionnaire évaluation des enseignements%'
AND c.fullname LIKE '[% M1 %'
AND cm.availability LIKE '%date%'
;
Liste des questionnaires de semestre 1 ("S1") ayant dans leur titre " pair"
(suite à mauvaise mise en place). Cette liste permettra une comparaison visuelle :
SELECT c.id, c.fullname, cm.id, cm.instance, q.name
, REPLACE(q.name, ' pair', ' impair') AS Nom
FROM
mdl_course AS c
,mdl_course_modules AS cm
,mdl_questionnaire AS q
WHERE cm.module = 23
AND q.id = cm.instance
AND cm.course = c.id
AND c.visible = 1
AND q.name LIKE 'Questionnaire évaluation des enseignements%'
AND c.fullname LIKE '[% S1]%'
AND cm.availability LIKE '%date%'
ORDER BY c.fullname;
Et requête de correction de ces questionnaires :
UPDATE
mdl_course AS c
,mdl_course_modules AS cm
,mdl_questionnaire AS q
SET q.name = REPLACE(q.name, ' pair', ' impair')
WHERE cm.module = 23
AND q.id = cm.instance
AND cm.course = c.id
AND c.visible = 1
AND q.name LIKE 'Questionnaire évaluation des enseignements%'
AND c.fullname LIKE '[% S1]%'
AND cm.availability LIKE '%date%'
;
En regardant cela, je me suis aperçu que certains cours comportaient
des doubles espaces dans leurs titres. Cette liste permettra une comparaison visuelle :
SELECT c.id, c.fullname, REPLACE(c.fullname, ' ', ' ') AS Nom
FROM mdl_course AS c
WHERE c.fullname LIKE '% %';
J'ai donc corrigé cela :
UPDATE mdl_course AS c
SET c.fullname = REPLACE(c.fullname, ' ', ' ')
WHERE c.fullname LIKE '% %';
Reste maintenant à passer aux choses sérieuses, à propos des questionnaires en eux-même.
Liste des questionnaires concernés pour le droit (commençant par "[D") :
SELECT c.id, c.fullname, cm.id, cm.instance, q.name, cm.availability
FROM
mdl_course AS c
,mdl_course_modules AS cm
,mdl_questionnaire AS q
WHERE cm.module = 23
AND q.id = cm.instance
AND cm.course = c.id
AND c.visible = 1
AND c.fullname LIKE '[D%'
AND q.name LIKE 'Questionnaire évaluation des enseignements% impair%'
AND cm.availability LIKE '%date%'
ORDER BY c.fullname;
Et mise à jour des dates, à la fois en "restriction de disponibilité"
et directement au sein des questionnaires (en une seule requête, mieux que l'année dernière) :
UPDATE
mdl_course AS c
,mdl_course_modules AS cm
,mdl_questionnaire AS q
SET
cm.availability = '{"op":"&","showc":[true,false],"c":[{"type":"date","d":">=","t":1479801600},{"type":"date","d":"<","t":1481495400}]}'
,q.opendate = 1479801600
,q.closedate = 1481495400
WHERE cm.module = 23
AND q.id = cm.instance
AND cm.course = c.id
AND c.visible = 1
AND c.fullname LIKE '[D%'
AND q.name LIKE 'Questionnaire évaluation des enseignements% impair%'
AND cm.availability LIKE '%date%'
;
Les lecteurs attentifs remarqueront que j'ai retouché la présentation de mes requêtes, afin d'en améliorer la lisibilité.
En espérant que cela puisse servir à d'autres, ou donner des idées/inspirations. Au pire, ça me resservira l'année prochaine
Séverin