H5P Bundle for Symfony

Bundle open source permettant d’intégrer H5P dans des applications Symfony.

H5P logo
PHPSymfonyPHPUnitDoctrineH5P

H5P Bundle est un projet open source destiné à faciliter l’intégration de H5P au sein d’applications Symfony.

Le projet est issu d’un portage du module H5P de Drupal vers Symfony et fournit les composants nécessaires pour gérer l’installation et la mise à jour des bibliothèques H5P, l’import et l’export de contenus, leur affichage ainsi que certaines données d’utilisation.

Le bundle a été maintenu au fil des versions afin de rester compatible avec plusieurs générations de Symfony, notamment Symfony 4, 5, 6 et 7.

Le projet intègre également une gestion des permissions, des contenus H5P, du stockage associé et des différents mécanismes nécessaires à leur intégration dans une application Symfony.

Problématique

H5P propose un écosystème complet pour créer et exploiter des contenus interactifs, mais son intégration est historiquement fortement liée à certaines plateformes comme Drupal ou WordPress.

L’objectif de H5P Bundle est de permettre l’utilisation de H5P directement au sein d’une application Symfony, sans dépendre d’un CMS externe.

Cela implique d’adapter les mécanismes nécessaires au fonctionnement de H5P à l’architecture et aux conventions de Symfony.

Fonctionnement

Le bundle fournit les composants nécessaires pour intégrer H5P dans une application Symfony.

Il prend notamment en charge :

  • l’installation et la mise à jour des bibliothèques H5P ;
  • l’import et l’export de contenus H5P ;
  • le stockage des contenus et fichiers associés ;
  • l’affichage et l’intégration des contenus interactifs ;
  • la gestion des permissions ;
  • le suivi de certaines données d’utilisation et de scores.

L’intégration repose également sur Doctrine pour la persistance des données nécessaires au fonctionnement du bundle.

Compatibilité Symfony

Une partie importante du projet concerne la maintenance de la compatibilité avec les différentes versions du framework Symfony.

Le bundle a été adapté au fil du temps afin de fonctionner avec plusieurs générations majeures de Symfony, notamment :

  • Symfony 4
  • Symfony 5
  • Symfony 6
  • Symfony 7

Cette maintenance implique de faire évoluer le code en fonction des changements d’API, des composants Symfony et des dépendances utilisées par le projet.

Fonctionnalités principales

  • Intégration de H5P dans Symfony
  • Installation et mise à jour des bibliothèques H5P
  • Import de contenus H5P
  • Export et téléchargement de contenus H5P
  • Gestion du stockage des contenus et ressources
  • Gestion des permissions
  • Intégration des contenus interactifs dans les applications Symfony
  • Stockage de données d’utilisation et de scores
  • Compatibilité avec plusieurs versions majeures de Symfony

Architecture et choix techniques

Le projet est principalement développé en PHP et s’intègre directement à l’écosystème Symfony.

Doctrine est utilisé pour gérer les données persistantes nécessaires au fonctionnement du bundle.

Une partie JavaScript est également nécessaire pour assurer l’intégration des composants H5P côté navigateur et permettre l’exécution des contenus interactifs.

Le projet reprend certains mécanismes du module H5P existant dans Drupal tout en les adaptant aux conventions, au cycle de vie et aux composants de Symfony.

Difficultés techniques

L’une des principales difficultés du projet est d’adapter un système initialement conçu autour d’autres plateformes à l’architecture de Symfony.

H5P repose sur différents mécanismes liés au stockage, aux bibliothèques, aux assets, aux permissions et à l’exécution de contenus interactifs.

Le portage nécessite donc de reproduire ou d’adapter ces comportements sans dépendre directement de Drupal.

Une autre difficulté importante concerne la compatibilité entre les différentes versions de Symfony.

Les évolutions du framework peuvent modifier les APIs disponibles, la gestion des services, le routing, les dépendances ou encore certains comportements internes.

Le bundle doit donc évoluer régulièrement afin de conserver sa compatibilité tout en limitant les ruptures pour les applications qui l’utilisent.

Maintenance et évolution

Le projet a évolué au fil du temps avec plusieurs améliorations et corrections, notamment :

  • adaptation aux nouvelles versions de Symfony ;
  • corrections de compatibilité avec l’éditeur H5P ;
  • corrections liées aux routes et aux assets ;
  • amélioration de l’import et du téléchargement de packages H5P ;
  • ajout du stockage de données d’utilisation et de scores ;
  • maintenance générale des dépendances et du code.

Open Source

H5P Bundle est distribué sous licence MIT.

Le code source est disponible publiquement sur GitHub et le bundle peut être installé dans un projet Symfony via Composer.

Le projet est maintenu publiquement afin de permettre son utilisation, son évolution et la contribution par d’autres développeurs.