Accueil > Gallika.net > Ingénierie > Technologie > Systèmes de gestion de contenus > Inventorier toutes les images d’un Moodle 5

Inventorier toutes les images d’un Moodle 5

vendredi 29 août 2025, par Olivier Delhaye

Il y a des journées où l’on veut juste faire le ménage. Ranger ses images, traquer les doublons, retrouver ce qui s’est glissé dans les éditeurs au fil des semestres. Et puis – tu connais la suite – on se dit : « Allons, faisons un plugin propre, officiel, durable ».
Résultat : page d’upgrade en continu, erreur 500, site bloqué. Un ChatGPT qui patine, une après-midi qui file... Je l’ai vécue récemment.

C’est ce jour-là que j’ai décidé de changer de cap : pas de plugin, pas d’installation. Un seul fichier PHP autonome, posé à côté de config.php. On ouvre la page, on voit toutes ses images, on exporte, on trie. Le soulagement tient parfois à une idée simple.

Le virage : du plugin au script autonome

Au départ, l’intention était belle. Mais en pratique :

 L’upgrade des plugins passe par /admin/index.php. Au moindre pépin (capabilities, navigation, version, typo française…), tout Moodle s’arrête. Je m’y suis heurté, frontalement.

 Débloquer en urgence (purges, FTP, DB) n’est ni agréable ni proportionné quand on veut juste inventorier des images.

 Maintenir un plugin au rythme des versions (ici, Moodle 5) impose une discipline qui n’apporte rien d’essentiel à un outil ponctuel d’admin.

Bref, pour de l’audit/nettoyage, le plugin serait un paquebot. J’avais juste besoin d’un stand up paddle.

L’idée en 30 secondes

 Déposer un script inventaire-images.php à côté de config.php (dans le dossier du code Moodle).

 Ouvrir : https://ton-moodle/inventaire-images.php (compte admin).

 Trois onglets clairs :

  1. Images stockées
    Toutes les images de files, vignettes cliquables, filtres (Composant, Zone, Nom/Source), ID de cours, CM ID (lien direct vers l’activité), module et instance.
  2. Images intégrées & externes
    Ce qui a été collé dans l’éditeur (Data URI) et les URL externes. Vignettes pour voir, liens pour vérifier.
  3. Doublons
    Groupes d’images identiques (contenthash), vignettes, exemples cliquables avec cours, activité, etc.

 À chaque onglet : Export CSV.

 Un pager compact en haut – Précédent | Page X/Y | Suivant – pour naviguer plus rapidement.

Tout ce que j’aurais aimé créer avant de perdre 4 heures.

Extrait du script PHP

Pas à pas (vraiment simple)

  1. Dépose le fichier dans le dossier Moodle (là où se trouve config.php).
  2. Ouvre l’URL (compte admin). Ajoute ?debug=1 si tu veux les messages PHP.
  3. Filtre, consulte, exporte.
  4. Décide du nettoyage (le script n’efface rien tout seul).
  5. Supprime le fichier quand tu as terminé.

En cinq gestes, tu as l’inventaire qui te manquait.

Ce que l’outil montre (et pourquoi c’est utile)

 Toutes les images stockées (avec aperçu) et leurs métadonnées clés : cours, activité (CM), module, instance, composant/zone, tailles, dates.

 Images « collées » (copy&paste) dans l’éditeur (Data URI) et images externes (avec vignette), pour repérer ce qui échappe au stockage Moodle.

 Doublons exacts : même binaire, multiples occurrences, l’endroit idéal pour gagner de l’espace.

 Exports CSV propres (par onglet), pour historiser, déléguer, traiter hors-ligne.

Capture d’écran

Garde-fous (les bons réflexes que j’applique)

Accès & permissions

 La page exige require_login() et moodle/site:config → admins uniquement.

 Le proxy d’images (vignettes/originaux) est protégé par sesskey (anti-CSRF).

Confidentialité / RGPD

Un admin peut voir toutes les images (y compris brouillons/privées). C’est le périmètre normal d’un admin, mais dis-le clairement à l’équipe.

Images externes

Les vignettes externes sont chargées depuis le site tiers (avec referrerpolicy="no-referrer"). Ton IP est tout de même visible côté distant. Si c’est sensible, n’affiche que des liens ou utilise un réseau isolé/VPN.

Performance

Sur grosses instances, garde un perpage raisonnable (100–200) et filtre (composant/zone/nom).

Inventaire-images.php (script complet zippé)

OpSec

 Dépose le fichier sur un serveur de confiance.
 Supprime-le après usage.
 Évite de diffuser l’URL, renomme le fichier si besoin.
 Garde tes CSV : c’est ton journal d’audit.

Il m’a fallu une erreur 500 pour décider de simplifier. Au fond, pas besoin d’un plugin pour nettoyer Moodle : un fichier PHP, un regard, une décision. Et tout respire de nouveau.


Formations & ateliers

Si ce sujet te parle, je propose des ateliers express (90 min) et des formations modulaires. On part de tes besoins, on repart avec des scripts prêts à l’emploi, une méthode et un plan d’action.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.