Le stockage physique des fichiers est maintenant un stokage unique : deux fichiers rigoureusement identiques ne seront physiquement stockés qu'une seule fois sous un nom correspondant à leur hash de contenu (md5).
Si moodle a utilisé un BTREE c'est que mettre tous les fichiers à plat dans un seul répertoire n'est pas viable pour les gros sites :
- Explosion de limites de capacité des tables d'inodes
- Temps d'accès au fichier croissant en complexité log2
Le BTREE range les fichiers avec une croissance acceptable, même pour les très très gros sites.
La relation entre le fichier et la structure des cours est maintenant assurée par la table "mdl_files".
la classe file_info est une représentation de ces données descriptives dévrivant virtuellement le fichier suffisamment pour pouvoir le manipuler.
Il faut donc ABSOLUMENT arrêter de l'imaginer manoeuvrer les fichiers directement par des chemins de stockage explicites ou des fopen et des fwrite sur les emplacements physiques.
mais toujours utiliser le système de gestion des fichiers :
$fs = get_file_storage()
et ses primitives (ou les primitives attachées à un objet file_storage, à un niveau en dessous) pour dealer avec les fichiers.