Cloner des plugins

Attention : vous consultez actuellement la documentation dédiée aux versions 1.x de Moodle. La documentation pour les versions 2.x de Moodle est consultable ici : Cloner des plugins et celle pour Moodle 3.x est consultable là : Cloner des plugins.

Moodle est une application modulaire qui se compose d'un noyau et de "plugins". Les plugins apportent des fonctionnalités supplémentaires et complémentaires les unes des autres, et le plus souvent indépendantes.

Modifier le comportement d'un plugin existant, avant de développer un nouveau plugin, peut souvent être une voie plus rapide pour obtenir une nouvelle fonctionnalité dans Moodle. Inscrire ses besoins dans des plugins, plutôt que dans des développements annexes déliés de l'infrastructure Moodle présente plusieurs avantages :

  • Les plugins bénéficient d'un grand nombre de services de la part du noyau, tels que la prise en charge de la mise à jour, de la sauvegarde, de l'internationalisation, de l'inclusion d'information dans les rapports, de l'accès générique à la base de données...
  • Les plugins constituent des "paquetages" précis et bien délimités. Ils contribuent à architecturer les développements par unités claires et compréhensibles.
  • Les plugins sont distribuables et peuvent être proposés à la communauté, enrichissant les pratiques de tous.
  • Les plugins permettent de découper la fonction en unités plus petites, et donc plus identifiables.
  • Ils permettront un accès plus facile à la maintenance pour de nouveaux collaborateurs formés au modèle général de Moodle.

Quand cloner un plugin ?

En général, on clone un module lorsque l'on souhaite modifier des réactions d'un plugin existant en dehors du champ de possibilité de son paramétrage existant. Le clonage suppose que l'on étudie au préalable le module pour déterminer si ce que l'on cherche peut s'y inscrire facilement.

Comment identifier qu'il s'agit d'un plugin ?

Il existe plusieurs indices qui déterminent si un répertoire est un plugin ou non. Les indices principaux sont :

  • la présence d'un répertoire 'db' contenant au moins l'un des fichiers suivants :

settings.php access.php install.xml events.xml

  • la présence d'un fichier 'version.php'

Ces conditions ne sont pas obligatoires ! Certains plugins comme des blocs très simples n'ont rien de tout cela (leur numéro de version existe mais est à l'intérieur de l'implémentation du bloc). Cependant, il suffit qu'un des sous-répertoires d'un répertoire de Moodle présente cette forme pour que tous les sous-répertoires puissent être considérés comme des plugins.

Les prérequis

  • Choisir un nom pour le nouveau plugin (en général un nom significatif de la fonctionnalité, en minuscules et sans espaces, car il doit pouvoir être un nom de répertoire). Les '_' sont admis.

myquiz my_assessment fancyclock user_mnet_hosts

  • Vérifier si le plugin que l'on veut modifier a des dépendances (par exemple, le module d'activité quiz a une interaction importante avec la base de questions de Moodle) et examiner les conséquences possibles (faibles ou nulles dans la plupart des cas).

Comment cloner ?

  • Copier le répertoire du plugin et renommer la copie avec le nom que vous avez choisi.
  • Effectuer un remplacement massif de chaines à l'aide d'un éditeur adéquat (la plupart des éditeurs de code source vous fournissent des fonctions massives de remplacement). Ce remplacement doit remplacer absolument TOUTES les séquences correspondant au nom d'origine, même à l'intérieur des mots. TOUS les fichiers doivent être traités (php, html, js...)
  • Parcourir les fichiers du nouveau plugin, et effectuer également le remplacement de l'ancien nom dans les noms de fichiers ou de sous-répertoires. Vous rétablirez la cohérence des chemins du système de fichiers que vous aurez altéré dans le code source.
  • Si le plugin d'origine était standard, ses fichiers de langue étaient rassemblés dans la distribution centrale des langues de Moodle (<moodleroot>/lang/xx_utf8 ou <moodledata>/lang/xx_utf8). Comme votre plugin devient non standard, il est très préférable de relocaliser les fichiers de langues dans le plugin, par copie des fichiers de langue du plugin d'origine.

Si toutes ces opérations ont été effectuées complètement, le nouveau plugin est prêt à être installé logiquement dans votre Moodle :

  • Effectuez la procédure habituelle des notifications administrateur pour installer le nouveau plugin.

Il doit en principe vous fournir un service absolument identique.

Note : Attention aux blocs ! Le titre d'un bloc ne doit pas être identique d'un bloc à un autre. Il faudra prévoir de changer la clef "blockname" ou "blocktitle" dans les fichiers de langue pour éviter cette collision possible.