Apport d'améliorations à la plateforme pédagogique Moodle
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Olivier RAULIN IUT Informatique Promotion 2010 ONIRIS Nantes Rue de la Géraudière BP 82225 44322 Nantes cedex 3 Rapport de stage Apport d'améliorations à la plateforme pédagogique Moodle Stage du 12 avril au 18 juin 2010 Enseignant tuteur : M. Jean-François REMM Maître de Stage : M. Frédéric Auffray 1/30
Remerciements Remerciements à toute l'équipe du SAPREC¹, qui m'a permis d'effectuer ce stage dans d'excellentes conditions, et d'obtenir une très enrichissante première expérience du monde de l'entreprise. Remerciements aux professeurs de l'IUT : - Mme Jacquin, pour ses cours de Programmation Objet et de technologies Web - M. Remm, pour son soutien durant ce stage, et durant ces deux années d'IUT - M Cazalas, pour ses cours de communication - Ainsi que l'ensemble du corps professoral en général, qui m'a permis d'atteindre le niveau de compétences que j'ai aujourd'hui qui me permettra d'évoluer. ¹ : Service d'Appui à la Pédagogie, à la Recherche Et à la Communication 2/30
Résumé Mon stage portait sur la plateforme pédagogique Moodle², utilisée par de nombreuses universités, y compris par l'Université de Nantes, par le biais de son service Madoc. Suite à la fusion des deux écoles (Enitiaa³ et vétérinaire), la base de données des étudiants et personnels va être fusionnée, et les effectifs de la plateforme du site Géraudière (Enitiaa) triplés. De nombreuses difficultés d'usage ayant été rencontrées par les administrateurs, mon but était de les corriger, le tout dans un code existant, qu'il n'était pas envisageable de reprendre à zéro. Mon objectif principal était de permettre une meilleure recherche des utilisateurs, en proposant plusieurs champs : Sur le nom, la classe, le groupe, etc … Mes objectifs secondaires étaient principalement d'ordre ergonomique : Affichage des cours, menu « automatique », etc … Summary My internship was on pedagogic platform Moodle, used by several universities, including the University of Nantes, through its Madoc service. Due to the fusion of two schools, (Enitiaa and veterinary), the student and employees database will be joined, and the number of people on Geraudière's (Enitiaa) Moodle will be multiplied by three. Several ergonomic defaults were found by administrators, my goal was to fix them. My major objective was to allow a better searching function of users, including more field of search : By class, group, etc … My secondary objectives were ergonomic too, Courses display, automatic menu, etc ... ² : « Modular Object-Oriented Dynamic Learning Environment » (Environnement d'apprentissage dynamique, modulaire, orienté objet) ³ : Ecole Nationale d'Ingénieurs des Techniques des Industries Agricoles et Alimentaires 3/30
Sommaire Remerciements......................................................................................................... 2 Résumé / Summary …...............................................................................................3 Sommaire ..................................................................................................................4 Introduction.............................................................................................................. 6 I) Avant-Propos.........................................................................................................6 I.1) Chapitre préliminaire.........................................................................................7 I.1.a) Présentation de l'école ....................................................................................7 I.1.b) Présentation du service SAPREC ..................................................................9 I.2) Plateforme pédagogique Moodle ....................................................................10 I.2.a) Présentation..................................................................................................10 I.2.b) Besoins exprimés par les administrateurs de la plateforme pédagogique ..10 III) Paramétrage des rôles........................................................................................11 III.1) Numérotation automatique des capacités .....................................................11 III.2) Modification de style ....................................................................................12 III.2.a) Lisibilité, capacités par défaut du rôle et modifications effectuées ..........12 IV) Attribution des rôles : Administration des utilisateurs.....................................14 IV.1) Catégories, cours et activités .........................................................................14 V) Adaptations au niveau de la gestion des utilisateurs..........................................16 V.1) Affichage des profils utilisateurs ....................................................................16 V.2) Liste des participants sur les différents contextes …......................................18 VI) Développements d'utilitaires.............................................................................20 4/30
VI.1) Activité « Questionnaire ».............................................................................20 VI.2) Carte interactive des partenaires Oniris en Europe ......................................21 VII) Autres modifications mineures........................................................................22 VII.1) Fichiers de langue .......................................................................................22 VII.2) Affichage de la liste des cours .....................................................................23 VII.3) Affichage de la bannière à partir de ressources externes ............................24 VIII) Divers..............................................................................................................25 VIII.1) Menu automatique ......................................................................................25 VIII.2) Lettre d'information interne .......................................................................25 VIII.3) Modules Moodle ........................................................................................26 Perspectives et prolongement..................................................................................28 Glossaire..................................................................................................................29 Bibliographie / Sitographie......................................................................................30 5/30
Introduction (1 page) Dans le cadre de mon stage de fin de DUT, j'ai effectué un stage de 10 semaines au service SAPREC de l'école Oniris, sur le site de la Géraudière (en effet, l'école est divisée en deux sites : Géraudière (ex-Enitiaa) et Chantrerie (ex ENVN⁴) ) J'ai choisi ce stage principalement car ma préférence s'orientait vers le domaine du Web, et j'ai profité de cette opportunité sur la plateforme pédagogique open-source Moodle. Mes attentes concernant ce stage étaient principalement de pouvoir mettre en pratique et renforcer mes connaissances théoriques acquises à l'IUT, et me permettre de mieux appréhender la vie de l'entreprise. Cette offre de stage a été proposée suite à la fusion de deux écoles, l'ex-Enitiaa (école agroalimentaire), et l'ex école vétérinaire de Nantes, créant ainsi Oniris. Le principal besoin fût de personnaliser l'ergonomie de la plateforme pédagogique, afin de pouvoir gérer trois fois plus d'utilisateurs. Ce stage avait pour principale contrainte l'intégration d'un code nouveau à un code existant de la version 1.9.8 : Il n'était pas question de tout refaire à partir de rien. ⁴ : Ecole Nationale Vétérinaire de Nantes 6/30
Chapitre préliminaire Afin de présenter l'école, je me permets de reprendre le discours du Directeur Général sur le site d'Oniris : « ONIRIS est un établissement d'enseignement supérieur et de recherche du Ministère de l’Alimentation, de l’Agriculture et de la Pêche. Ancré dans son territoire et ouvert sur l’espace européen, il dispose d’une palette thématique très large incluant la santé animale, la santé publique, les domaines clinique et biomédical, les sciences de l’alimentation et le génie des procédés. Il forme plus de 1 100 élèves en proposant notamment les formations correspondant : - aux métiers de vétérinaire (diplôme de docteur vétérinaire) d'une part. La spécificité de cette formation de pathologistes et de biologistes de haut niveau est d'associer les aptitudes acquises par une formation par la clinique, notamment au sein d’un hôpital de niveau européen, à celles résultant d'une formation par la recherche, - aux métiers d'ingénieur agroalimentaire (diplôme d’ingénieur) d'autre part. Cette formation bénéficie d’un ancrage très fort dans le tissu industriel et d’outils très spécifiques professionnalisants et de recherche comme une halle technologique performante. Tout en demeurant spécifiques, ces deux cursus vont interagir de façon à apporter une valeur ajoutée à chacun d’entre eux dans l’optique d’une diversification des métiers et d’une meilleure employabilité. Les étudiants sont immergés dans une « Ecole citoyenne », par exemple par leur contribution à des opérations d’ouverture sociale du type « cordées de la réussite ». ONIRIS a pour ambition d’être un acteur fort de l’enseignement supérieur et de la recherche dans les domaines de la santé animale et humaine, en contribuant activement au concept « one medicine, one health », et de l’alimentation. A ces deux thèmes principaux, s’ajoute une contribution à une thématique transversale concernant l’environnement et le développement durable. ONIRIS a la volonté d’intégrer dans ses missions les enjeux de société et les politiques publiques qui les 7/30
servent. Grâce à son accréditation à délivrer le doctorat, au « passeport recherche » de ses étudiants et à son offre de masters, ONIRIS possède un dispositif très attractif de formation-recherche, en articulation avec les différents instituts de recherche. L’Ecole est insérée dans le PRES⁵ Université Nantes-Angers-Le Mans et dans le Pôle de Compétences Ouest du ministère de l’alimentation, de l’agriculture et de la pêche. Quatre thématiques positionnent ONIRIS notamment au travers de ses activités de recherche: . un axe « santé humaine, recherche clinique et biomédicale, modèles animaux » visant à comprendre les mécanismes pathologiques et à produire des traitements innovants de maladies de l’animal et de l'homme, notamment dans le cadre d'interactions fortes avec le pôle Santé régional ; . un axe « maîtrise de la santé des animaux d'élevage » visant à répondre à des enjeux de suffisance alimentaire, par la prévention et la gestion de crise de santé animale, et à la santé de l'homme par la prévention de risques biologiques ou chimiques dans la chaîne alimentaire ; . un axe « sécurité et qualité de l'aliment » contribuant à produire des connaissances et des méthodes permettant d'assurer la production d'aliments de bonne qualité sanitaire, nutritionnelle et sensorielle ; . un axe « procédés alimentaires, management et développement durable » visant à la conception et l'évaluation de procédés agro-alimentaires innovants et durables pour produire des aliments répondant aux stratégies industrielles et aux attentes du consommateur. En matière d’alimentation, une des fortes spécificités d’ONIRIS est de proposer une approche transdisciplinaire déclinée de l’amont à l’aval. » ⁵ : Pôle de Recherche et d'Enseignement Supérieur 8/30
Présentation du service SAPREC Le SAPREC existe depuis Janvier 2010, et a été créé spécifiquement depuis la fusion des deux écoles. Il est composé de 6 personnes à plein temps, réparties sur les deux sites de l'Ecole (Géraudière et Chantrerie) : Au niveau du site Géraudière : - M Jean-Yves Malégeant, chef du service - Mme Dany Rouillard, assistante de M. Malégeant - M Frédéric Auffray, mon maître de stage, Assistant Ingénieur - M Ricardo Bandeira, infographiste Au niveau du site Chantrerie : - Delfine Couffin, gestion du site web + audiovisuel - Frédéric Fouillet, gestion du site web + audiovisuel J'ai eu la chance de pouvoir être en contact avec une diversité de métiers qui m'a beaucoup appris : En effet, le point de vue de la secrétaire et de l'infographiste n'étaient pas toujours les mêmes que les miens, et m'ont permis de progresser dans l'écoute, la compréhension des besoins, et l'apport d'une réponse la plus adaptée possible. 9/30
Plateforme pédagogique Moodle Présentation C'est une plateforme d'apprentissage, qui regroupe sur un même site tout ce qui peut permettre à des étudiants de se former : Des cours, des forums, des vidéos … tout est présent afin de permettre aux étudiants anglo-saxons d'étudier le mieux possible. Cependant, nous ne fonctionnons pas de la même manière. Site officiel : http://www.moodle.org Moodle en quelques chiffres : - Utilisé dans 212 pays, par 50000 sites enregistrés - Plus de 3,5 millions de cours, et 35 millions d'utilisateurs Besoins exprimés par les administrateurs de la plateforme La création d'Oniris est le résultat de la fusion de deux écoles Nantaises, l'Enitiaa et l'école vétérinaire : Cette fusion implique un regroupement en une seule entité. La plateforme pédagogique, utilisée des deux côtés, est également concernée par ce changement : Par rapport à la plateforme du site Géraudière, c'est un triplement des utilisateurs qui va s'opérer. La plateforme n'étant pas un modèle d'ergonomie, les administrateurs de la plateforme m'ont exprimé leurs principaux besoins concernant la modification du code de certains points de la plateforme : Il fallait que cela soit plus pratique à utiliser. Je vais ensuite détailler les différents points sur lesquels on m'a demandé de travailler, et ma démarche de travail. 10/30
Paramétrage des rôles Introduction au système de rôles dans Moodle Moodle prévoit de créer des rôles pour certains utilisateurs : Ces rôles sont crées par l'administrateur de chaque plateforme, et par défaut sont : « Administrateur, Enseignant, Etudiant, Invité, Anonyme ». Chaque rôle peut se voir affecter des permissions différentes, et ce depuis le niveau global (système) jusqu'à une ressource d'un cours. Ces rôles ont des capacités qui leur sont associées : Par exemple, « voir un cours », « créer un cours », ou encore « répondre à un questionnaire » … Au total, ce sont plus de 220 capacités différentes, divisées en une vingtaine de catégories : Chaque capacité peut être configurée en « Hériter » (recherche du paramétrage des droits au niveau supérieur), « Autoriser » (On spécifie que le rôle peut effectuer cette action), « Empêcher » (On empêche l'utilisateur d'effectuer cette action, mais un niveau « inférieur » positionné à « Autoriser » pourra y accéder), « Interdire » (Interdit l'accès pour le rôle et tous ses niveaux enfant), permettant de mieux gérer les droits d'accès. Numérotation des capacités Il m'a été demandé de pouvoir se repérer des les capacités : Fureter dans les 200 capacités pour chercher celle que l'on veut est laborieux. J'ai donc réfléchi à une manière simple de se repérer : L'idéal serait une numérotation des capacités, classées par catégorie (Cours, Forums, etc ..). Après avoir examiné le code des différentes pages permettant l'attribution de capacités (Définition des rôles et Dérogations), j'ai rajouté un numéro devant chaque catégorie, et, sur 11/30
chaque capacité, un sous-numéro. Avant : Après : Modification du style Lisibilité, capacités du rôle par défaut Cette page regroupe donc toutes les capacités possibles, sur fond blanc. Problème : Il était difficile de pouvoir voir exactement où se situait le curseur de la souris, ainsi que les différentes capacités. Il était également assez peu commode de voir où se situaient les boutons « cochés » 12/30
Pour ce problème, j'ai tout d'abord commencé par les paramètres des capacités par défaut : Ils étaient repérées dans le code, ce qui m'a permis d'attribuer une couleur plus claire (si une autre avait été sélectionnée depuis), ainsi qu'une bordure. Ensuite, j'ai entrepris de modifier la couleur d'une capacité modifiée : Il fallait qu'elle soit bien visible, j'ai donc choisi du noir. Pour finir, le positionnement du curseur de la souris modifie la couleur de la ligne, permettent lorsqu'on modifie la capacité à voir rapidement celle qu'on est en train de modifier. Apparence de départ : Apparence après modifications : 13/30
Attribution des rôles : Administration des utilisateurs Catégories, cours et activités Il est possible pour les administrateurs de paramétrer un rôle spécifique à des utilisateurs, pour un cours ou une « activité » de ce cours, afin de gérer finement qui a accès à quelle ressource. Les administrateurs ont exprimé le problème suivant : Il n'existe qu'un unique champ de recherche des utilisateurs lors de l'attribution des rôles à des utilisateurs : Ce champ n'effectue une recherche que sur le nom ou l'adresse de courriel de l'utilisateur. Dans une liste de plus de 1000 personnes, il devient très difficile de rechercher un groupe de TP, par exemple, puisque la recherche doit s'effectuer manuellement. Avant : Cet exemple démontre bien la difficulté pour constituer un groupe parmi ces 569 ... 14/30
Après ... Différents champs de recherche sont maintenant à la disposition de l'administrateur, avec affichage des classes des étudiants, et de leur statut ... 15/30
Adaptations au niveau de la gestion des utilisateurs Affichage des profils utilisateurs Par défaut, les profils utilisateurs affichent l'adresse de courriel, la ville, et le pays. L'exemple ci-dessus démontre la difficulté à trier les étudiants 16/30
Nous avons maintenant le choix du tri : Selon le nom, la classe, etc ... Concernant ces mêmes profils, une autre demande m'a été formulée concernant la suppression des membres : En effet, pour supprimer un groupe d'utilisateurs, il fallait cliquer sur chaque utilisateur, valider la suppression, puis revenir sur la page d'affichage des profils, trier à nouveau la liste des utilisateurs, pour finalement pouvoir supprimer le deuxième … et ainsi de suite. Au départ, j'avais l'intention de modifier le lien « Supprimer » par des cases à cocher, avec un lien tout en bas de la page permettant de supprimer toutes les fiches sélectionnées. Cependant, la fonctionnalité de suppression multiple n'ayant pas été prévue par Moodle, il aurait fallu passer par une phase de codage de suppression d'utilisateurs en chaîne … N'ayant pas jugé cette solution optimale et simple à mettre en place, je me suis plutôt dirigé vers une solution utilisant le langage Javascript, effectuant les actions suivantes : - Ouverture d'une fenêtre en avant-plan de la fenêtre actuelle, demandant la confirmation de suppression de l'usager, puis fermeture de celle-ci lorsqu'on a cliqué sur Oui ou Non (et que la 17/30
suppression a été effectuée) - Masquage de la ligne associée dans la page de départ : Ceci simule, pour l'utilisateur, une suppression déjà effective au niveau du serveur, sans rechargement : Il pense que la page à été mise à jour, et donc peut continuer rapidement à supprimer le reste des utilisateurs. Quand il rechargera la page, le serveur renverra les informations qu'il a en mémoire : Les utilisateurs supprimés ne seront définitivement plus présents. - Le tri des utilisateurs ne sera pas modifié par ce rafraichissement. Création d'une fonction d'exportation en CSV Par défaut, la liste des utilisateurs n'est pas exportable. En vue de la fusion, les administrateurs désiraient pouvoir exporter cette liste (complète, pas seulement page par page). Pour répondre à cette demande, j'ai repris du code existant dans le module d'activité de bases de données, qui permet l'export en CSV, et l'ai adapté à la liste des utilisateurs, et j'ai rajouté un lien visible pour l'administrateur, afin d'exporter rapidement cette liste. Liste des participants sur les différents contextes Une autre exigence a été d'avoir une numérotation dans les différentes listes d'utilisateurs (dans un groupe, sur un cours, une activité, … ainsi qu'une possibilité pour les personnes visualisant cette liste d'imprimer les participants. Cela permet un travail de secrétariat plus facile Après m'être penché sur le code affichant ces différentes pages, j'ai rajouté un identifiant modifié dynamiquement à chaque utilisateur, permettant un meilleur repérage parmi le nombre total de participants. 18/30
J'ai également rajouté un bouton, qui affiche, via une fonction Javascript, une nouvelle fenêtre avec la liste des personnes désirées. 19/30
Développement d'utilitaires Activité « Questionnaire » Demande de la secrétaire, ayant à créer des activités de type « Questionnaire » sur Moodle : Une fonctionnalité n'a pas été prévue par les développeurs Moodle, qui est celle de pouvoir personnaliser les questions de type « Question Cloze » : Il est nécessaire de modifier un langage descriptif spécifique à Moodle (Comme peuvent l'être le BBCode, le HTML …) pour modifier les questions, réponses, et commentaires sur les réponses. Une solution plus simple est désirée. Un exemple de « Question Cloze » Dans ma phase de réflexion, j'ai eu plusieurs choix technologiques à ma disposition : La technologie de serveur PHP⁶, ou bien Javascript⁷, que je ne maîtrisais pas beaucoup, mais me semblait plus adapté, notamment par son indépendance vis-à-vis d'un serveur (seul le navigateur est nécessaire). Je me suis donc orienté vers une technologie Javascript, tout en sachant que mon niveau était assez faible dans ce langage. La solution proposée a donc été un formulaire, qui demande le nombre de champs que l'on désire pour cette « Question Cloze » : Ensuite, la page affiche automatiquement le nombre de champs nécessaires, avec un champ intitulé, un champ pour un éventuel commentaire (suite à la réponse de l'étudiant), et enfin une case à cocher pour spécifier si c'est une des réponses attendues ou pas. En validant le formulaire, le résultat apparaît instantanément dans un cadre en dessous, et, si l'utilisateur utilise Internet Explorer, le code est automatiquement copié dans le presse-papier : Il n'y a plus qu'à coller dans la page Moodle. ⁶ : PHP Hypertext Preprocessor : Technologie de programmation du côté du serveur, permettant de créer des sites web dynamiques ⁷ : Langage de programmation utilisant les ressources des machines clientes pour s'exécuter. 20/30
Le formulaire au dessus permet la génération du langage descriptif simplement. Carte interactive des partenaires Oniris en Europe Au départ, cette carte, qui regroupe les différentes Universités partenaires d'Oniris en Europe, était créée manuellement pour chaque pays, avec les désavantages qu'impliquent la programmation statique. Quand, par exemple, on désire faire une modification sur une page, il faut la répéter sur toutes les pages : cela devient rapidement fastidieux quand il y a 27 pages … Étant donné que nous avions à notre disposition un serveur PHP, mais pas de base de données, j'ai décidé de créer une unique page, qui contiendrait toutes les informations, et qui afficherait celles concernant le pays demandé. Ensuite, un autre problème se posait : celui de la saisie manuelle des informations dans le code. Pour résoudre ce problème, j'ai créé une page en Javascript, qui, à partir d'un formulaire, générait le code à copier dans la page PHP. Le traitement s'en est vu largement simplifié. 21/30
Le résultat de la carte des partenaires est visible à l'adresse : http://ent.enitiaa-nantes.fr/mod/resource/view.php?id=5274 Le formulaire d'aide à la saisie : 22/30
Autres modifications mineures Fichiers de langue Moodle étant multilingue, tous les contenus textuels de la plateforme sont gérés par des fichiers de langue. Il devient donc aisé de modifier à sa guise ce que l'on désire afficher. Les Administrateurs de la plateforme avaient besoin de champs supplémentaires non prévus par Moodle : le Site Oniris (permettant de spécifier Géraudière, Chantrerie, Université, etc. ..), la classe, le groupe, et le statut de la personne. Des champs non utilisés ont donc été remplacés pour coller avec leur nouvel usage. Le problème qui s'est posé est le suivant : comment rendre clair le fait qu'une personne ajoutant un utilisateur manuellement doive rentrer la classe de l'étudiant dans le champ « Département » ? Les fichiers de langue de Moodle sont mis dans des dossiers inaccessibles par le web. J'ai donc entrepris de rechercher dans ces fichiers les lignes dont j'avais besoin, et les ai modifiées, permettant une meilleure clarté des nouveaux libellés. Affichage de la liste des cours Par défaut, l'affichage des cours d'une catégorie se fait en fonction du nombre de cours de cette catégorie : S'il y a moins de 10 cours, l'affichage se fait de manière « résumée » : Quand les enseignants mettent des résumés parfois aussi longs que le cours lui-même, la lisibilité s'en voit d'autant réduite, comme le montre la capture suivante : 23/30
Aperçu des cours en mode « Résumé » Après mes modifications, tous les cours s'affichent en mode « Condensé » : Par défaut, seuls les noms des cours étaient affichés : J'y ai rajouté les responsables de cours Affichage de la bannière à partir de ressources externes Lors de l'affichage d'un site extérieur dans une fenêtre de Moodle (par un système de cadres), le bandeau supérieur affichait un ascenseur vertical assez peu esthétique. J'ai donc modifié le paramètre qui gérait la hauteur du cadre du haut, ce qui a automatiquement fait disparaître l'ascenseur. 24/30
Divers Menu automatique Le menu actuel est créé statiquement. Cela posera problème si des catégories viennent à devoir être ajoutées. Il existe un menu automatique dans un des thèmes Moodle, cependant ce menu n'est pas très esthétique, et surtout, n'est pas temporisé (ce qui signifie qu'un déplacement légèrement diagonal entraînera la fermeture du menu), ce qui ne convient pas aux Administrateurs de la plateforme. J'ai commencé à étudier ce menu, et ai été confronté à des difficultés : adapter le code fut loin d'être évident, et, après plusieurs jours de recherche, j'ai finalement décidé de reprendre entièrement le code de ce menu et de repartir de zéro. Ce fut bien plus efficace, même si certaines subtilités (notamment le fait que Moodle rajoute automatiquement des fragments de code à l'affichage) ont eu des effets inattendus. J'ai fini par réussir à avoir un menu fonctionnel, lisible, paramétrable (il suffit de changer la valeur de 2 variables). Lettre d'information interne La lettre d'information interne à l'école est pour le moment gérée par l'infographiste du SAPREC, qui, à chaque modification du contenu doit la reprendre et l'adapter. Il a été pensé une solution qui permettrait aux décideurs de modifier directement le contenu de cette lettre, par le biais d'une interface web. Cette interface propose de sélectionner le numéro de la lettre, ou d'en créer un nouveau, puis affiche les catégories de cette lettre, avec une fonction de modification pour les personnes autorisées. L'administrateur peut valider un article, ce qui empêchera son édition ultérieure. 25/30
Il y a également un bouton de prévisualisation accessible à tous. Modules Moodle Module Base de données. Il est nécessaire, sur les bases de données, pour la vider, de la supprimer puis de la recréer. J'ai ajouté un élément au menu de la gestion des bases, visible uniquement à l'administrateur, permettant de supprimer toutes les fiches, sans avoir à supprimer la base. Des performances très gênantes semblent affecter l'activité base de données. Après une analyse du code, j'ai découvert que Moodle effectuait plus d'une requête par champ d'un enregistrement. Exemple observé, 100 fiches comprenant une dizaine de champs par fiche voyaient effectuées au serveur MySQL⁸ plus de 1500 requêtes. La complexité du code ne me permettant pas l'optimisation, j'ai recherché comment il serait possible d'améliorer les performances, au niveau du serveur de base de données MySQL : J'ai trouvé une instruction, à placer dans le fichier de configuration, qui permet de garder en mémoire les requêtes effectuées à la base : La prochaine fois que ces requêtes seront effectuées, le serveur regarde premièrement s'il a déjà traité cette requête, et si oui, renvoie le résultat qu'il avait renvoyé à ce moment là. Sur mon serveur de test, le résultat à été impressionnant : De 50 secondes pour afficher l'intégralité d'une base avant l'activation du cache, l'affichage est passé à environ 3 secondes. La mise en place du paramètre de configuration sur le serveur de production a été également largement bénéfique. ⁸ : MySQL : Serveur de bases de données, le plus souvent couplé avec PHP. 26/30
Module Passeport Ce module a été créé en 2006, par un étudiant de l'école Vétérinaire, et est toujours utilisé. Des tests montraient que ce module empêchait la sauvegarde de la plateforme. En cas de crash de la plateforme, il n'y avait quasiment rien pour restaurer les données. Mon approche fût premièrement d'adapter le code pour le rendre compatible avec la dernière version, de corriger quelques erreurs, puis, finalement, de m'attarder sur la sauvegarde du module. Il s'avérait que la fonction de sauvegarde tentait de sauvegarder une table de la base qui n'existait pas. Cela bloquait le processus global de sauvegarde. J'ai donc modifié le code de la sauvegarde, afin de sauvegarder les tables qui étaient réellement présentes. Le problème reste entier pour la fonctionnalité de restauration, qui n'est pas fonctionnelle non plus. J'ai essayé de comprendre son fonctionnement, mais le temps m'a fait défaut. 27/30
Perspectives et prolongement Mon travail aura permis à Oniris d'effectuer sereinement la fusion des deux sites, et permet une meilleure ergonomie de la plateforme. Une version 2.0 de Moodle est prévue d'ici juillet. Il m'a été demandé de vérifier si mon code était transposable pour la version à venir : ma réponse est malheureusement négative. Les changements de Moodle 2.0 sont très profonds, et il devient encore plus difficile de s'intégrer au code pour le modifier. Il sera probablement nécessaire de faire appel à un ingénieur, plus qu'un DUT, pour ce travail. Cependant, comme toute nouvelle version d'un logiciel, il est probable que celle-ci aie des bugs et des incohérences. Mon avis personnel est que la version actuelle, qui sera probablement maintenue pendant de nombreux mois, pourra continuer de fonctionner pendant 1 ou 2 ans, sans problème particulier. 28/30
Glossaire PHP : « PHP : Hypertext Preprocessor » : Langage de programmation destiné principalement au web, côté serveur, permettant de créer des sites web dynamiques (Dont le contenu change en fonction des utilisateurs) HTML : « HyperText Markup Language » : « Langage » de formatage des données, utilisé dans les pages web. Javascript : Langage de programmation web, utilisé côté client (sur l'ordinateur de l'utilisateur). Moodle : « Modular Object-Oriented Dynamic Learning Environment » (Environnement d'apprentissage dynamique, modulaire, orienté objet) SAPREC : Service d'Appui à la Pédagogie, à la Recherche Et à la Communication LDAP : « Lightweight Directory Access Protocol » : Service d'annuaire d'utilisateurs Open Source : Logiciel permettant l'accès au code du programme, ainsi qu'à sa redistribution. PRES : Pôle de Recherche et d'Enseignement Supérieur Enitiaa : Ecole Nationale d'Ingénieurs des Techniques des Industries Agricoles et Alimentaires CSV : « Comma-separated values » : Format informatique de représentation des données, séparées par des virgules. 29/30
Bibliographie – Sitographie PHP.net : Manuel de toutes les fonctions PHP Moodle.org : Site de l'éditeur de Moodle fr.selfhtml.org : Site de référence sur le HTML, Javascript, XML, etc … PHPxREF : Outil d'analyse du code source qui permet de retrouver facilement les fonctions, variable, et tout ce qui est nécessaire pour comprendre le fonctionnement d'une application web. Le guide du E-learning avec Moodle, William H. Rice, Pearson Education 30/30
Vous pouvez aussi lire