Synchroniser Moodle /Moodlebox

Re: Synchroniser Moodle /Moodlebox

par Patrick Lemaire,
Nombre de réponses : 3
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,
Je pense en effet que les WebServices seraient une "bonne approche" pour ce type de fonction. D'ailleurs, une première étape serait, un peu comme pour faire une sauvegarde, d'avoir un état de ce qui diffère entre la source et la destination. On coche ce qu'on souhaite écraser ou pas.
J'ai déjà pu me pencher sur ce type de plugin via Remote backup provider qu'Anne cite dans son préambule. Combiné avec l'excellent Restore courses from remote Moodles de Céline, c'est redoutable. J'ai développé un plugin pour transférer des cours d'un Moodle à un autre, une commande trop spécifique pour proposer ce développement à la communauté. Mais ça donne envie de se pencher sur cette question à l'aide des WebServices.

À bientôt,
Patrick
En réponse à Patrick Lemaire

Re: Synchroniser Moodle /Moodlebox

par Céline Perves,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles
Restore courses from remote Moodles ne restaure malheureusement pas les données utilisateurs seulement le cours épuré de ces données utilisateurs
Intéressée également par le sujet car certains enseignants demandent une restauration des cours avec données utilisateurs que nous devons alors opérer manuellement à l'aide moosh
la difficulté dans une synchronisation des données étant de "capter" les différences et ceci correctement (pas évident).
Quand on voit comment des synchronisation de catalogue de formation dans moodle peuvent être compliquées on imagine la complexité de la synchronisation d'un cours.
Merci donc pour ce beau sujet
sujet lancé cerveaux lancés
@ bientôt
Céline
En réponse à Céline Perves

Re: Synchroniser Moodle /Moodlebox

par didier cadiou,
Bonjour à tous, bonjour Céline.

Il faudra que je te contacte pour en savoir plus sur ton plugin.

Merci pour vos commentaires les uns et les autres.

Coté avancement, je n'ai pas énormément avancé sur mon cahier des charges techniques. J'envisage 2 familles de solutions très différentes et j'en suis à me poser la question de la faisabilité pour l'une et l'autre.

La première exploiterait les sauvegardes/restaurations de cours natives de Moodle. Conceptuellement, c'est simple pour les modules (activités) ajoutées ou supprimées. En revanche, je ne vois pas d'autres solutions que de faire cohabiter ancienne et nouvelle version d'un module modifié. A charge pour le responsable du cours coté MoodleBox de les fusionner manuellement et de gérer les traces tout aussi manuellement.

La deuxième famille, très ambitieuse voire trop, envisage une synchronisation bas niveau, de la base de données d'une part et des fichiers du dataroot d'autre part. Pour le dataroot, j'aperçois plusieurs solutions. Cela suppose une bonne maîtrise du système de fichiers Moodle avec son hashage et ses informations en base, mais c'est peut-être atteignable.
En revanche pour la base de données, c'est bien plus compliqué, voire acrobatique. Il faudrait écraser les données de certaines tables sur la MoodleBox par les nouvelles, mais sans affecter les tables qui contiennent des traces étudiantes. Conceptuellement déjà cela pose plein de questions : es-t-on sur que pour tous les plugins d'activités données de configuration du module et traces étudiantes sont bien dans des tables différentes (exception faite de la table de log) ? Comment avoir une liste de tables à écraser qui fonctionne toujours quel que soit la liste des plugins d'activités installés ? Comment toujours avoir les mêmes clés primaires sur les 2 Moodles ?

Pour la liste des tables j'imaginais m'appuyer sur une analyse comparative dynamique des sauvegardes du même cours sur les 2 plateformes ou sur celle d'origine mais entre 2 synchronisations, sans les traces étudiantes. Pour la problématique des clés, il est peut-être envisageable de définir une utilisation stricte de la MoodleBox sans aucune restauration de cours, ni action qui créerait de nouvelle données (donc de nouveaux id), autres que les données synchronisées à bas niveau. Une restauration SQL restaure aussi les ids, mais est-ce toujours vrai ? ça parait fragile.

Je me suis monté une infrastructure virtuelle avec 2 Moodles, maintenant il faut que je fasse des tests pour voir si déjà dans ce cadre restreint ça passe.

Quand sur le papier quelque chose parait simple, c'est généralement compliqué en pratique. Alors quand ça parait déjà compliqué sur le papier...
Moyenne des évaluations Utile (2)
En réponse à didier cadiou

Re: Synchroniser Moodle /Moodlebox

par didier cadiou,
Petit point d'avancement : J'ai abandonnée la solution bas niveau (impossible de synchroniser les bases de données en ne restaurant que certains enregistrements dans certaines tables).
Même pour la solution applicative avec les sauvegardes restaurations, ça parait complexe. Comme écrit précédemment, je ne vois pas de moyen de synchroniser une modification de module, puisque les restaurations en mode fusion ne le font pas et qu'il nous faut impérativement conserver les traces étudiantes sur le Moodle de destination.
Pire, la détection des modifications à synchroniser est plus compliquée que ce que j'avais initialement cru. Je pensais pas exemple exploiter le champs 'timemodified' de chaque module, mais celui-ci n'est pas toujours mis à jour (exemple : l'ajout d'une question dans un quiz ne change pas 'timemodified' dans 'mdl_quiz').
Donc pour l'instant, la faisabilité du projet n'est pas démontrée.
Moyenne des évaluations Utile (1)