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 :
- 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. - 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. - 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.
Pas à pas (vraiment simple)
- Dépose le fichier dans le dossier Moodle (là où se trouve
config.php
). - Ouvre l’URL (compte admin). Ajoute
?debug=1
si tu veux les messages PHP. - Filtre, consulte, exporte.
- Décide du nettoyage (le script n’efface rien tout seul).
- 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.
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).
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.
En résumé
Plutôt que d’installer un plugin risqué, on dépose un script autonome à côté de config.php. En 3 onglets, il inventorie toutes les images stockées, repère celles collées/externes et détecte les doublons, avec miniatures cliquables, ID de cours, CM ID/modname/instance et export CSV. L’accès est admin-only (moodle/site:config, sesskey) et on peut retirer le fichier une fois l’audit terminé. Résultat : un nettoyage rapide, sûr et réversible qui fait gagner place, clarté et temps.
— Résumé généré par l’IA.