Système de ressources
Le système de ressources est l'un des concepts architecturaux les plus importants de Chamilo 2.0. Il fournit une abstraction unifiée pour tout le contenu des cours — documents, exercices, parcours d'apprentissage, messages de forum, et bien plus encore.
Concept Central
Chaque élément de contenu de cours est représenté par un ResourceNode. Cela confère à tous les types de contenu un ensemble commun de capacités :
Contrôle de visibilité — Afficher/masquer pour les apprenants
Contrôle d'accès — Les votants de sécurité vérifient les permissions via le ResourceNode
Stockage de fichiers — Les fichiers attachés sont stockés via ResourceFile
Structure arborescente — Les ResourceNodes forment un arbre (relations parent-enfant)
Piste d'audit — Créateur, date de création, suivi des modifications
Entités Clés
ResourceNode (src/CoreBundle/Entity/ResourceNode.php)
src/CoreBundle/Entity/ResourceNode.php)L'entité centrale. Chaque entité de contenu a une relation un-à-un avec un ResourceNode.
Champs clés :
id
integer
Clé primaire
uuid
UUID v4
Identifiant unique pour l'utilisation de l'API
title
string
Titre affiché
creator
User
L'utilisateur qui a créé cette ressource
resourceFile
ResourceFile
Le fichier attaché (si existant)
resourceType
ResourceType
Le type de ressource (document, quiz, etc.)
parent
ResourceNode
Parent dans l'arbre des ressources
children
Collection
ResourceNodes enfants
resourceLinks
Collection
Liens de visibilité et d'accès
L'arbre utilise la stratégie de chemin matérialisé de Gedmo pour des requêtes hiérarchiques efficaces.
ResourceFile (src/CoreBundle/Entity/ResourceFile.php)
src/CoreBundle/Entity/ResourceFile.php)Stocke les données réelles du fichier pour une ressource :
id
integer
Clé primaire
title
string
Nom de fichier original
mimeType
string
Type MIME
originalName
string
Nom d'origine lors du téléversement
size
integer
Taille du fichier en octets
crop
string
Données de recadrage (pour les images)
Le stockage des fichiers est géré par Flysystem, permettant ainsi de stocker les fichiers sur un disque local, S3, Azure ou GCS selon la configuration.
ResourceLink
Contrôle la visibilité et l'accès par contexte. Il existe 3 types de contextes principaux :
Cours
Session
Groupe (dans un cours)
Ainsi, l'entité ResourceLink reflète la combinaison de ces 3 types de contextes et établit une visibilité pour ce contexte complet :
course
Course
À quel cours la ressource appartient
session
Session
Quelle session (null pour le cours de base)
group
CGroup
Quel groupe (null pour l'ensemble du cours)
visibility
integer
Visible, invisible ou supprimé
Cela permet au même ResourceNode d'avoir une visibilité différente selon les contextes (par exemple, visible dans une session mais masqué dans une autre).
Cela est défini automatiquement lors de l'utilisation de l'interface et en décidant, par exemple, qu'une ressource est spécifique à une session et sera visible pour tous les groupes d'un cours donné dans une session donnée, mais invisible dans le cours de base ou dans une autre session.
Par défaut, les ressources visibles dans un cours de base sont également visibles dans toutes les sessions de ce cours, mais le tuteur du cours peut décider de masquer une ressource pour une session spécifique. Dans ce cas, nous récupérerons la visibilité spécifique pour cette ressource dans cette session et constaterons qu'elle a une visibilité de 0, donc l'élément n'apparaîtra pas aux apprenants dans cette session, tandis qu'une absence de visibilité spécifique à la session dans d'autres sessions fera que la ressource utilisera la visibilité du cours de base (et la ressource sera visible pour les apprenants).
Intégration avec API Platform
ResourceNode est exposé comme une ressource API Platform avec sécurité :
Connexion des Entités de Contenu
Les entités de contenu de cours (CDocument, CQuiz, CLp, etc.) étendent AbstractResource ou implémentent ResourceInterface, ce qui leur confère une relation resourceNode :
Lorsque vous créez un CDocument, un ResourceNode est automatiquement créé en parallèle, offrant une gestion unifiée des ressources.
Implications Pratiques
Lorsque vous travaillez avec du contenu de cours :
Création de contenu — Créez à la fois l'entité de contenu ET son ResourceNode
Vérification des permissions — Utilisez les votants de sécurité du ResourceNode
Gestion des fichiers — Attachez les fichiers via ResourceFile
Contrôle de la visibilité — Créez/modifiez les ResourceLinks
Construction d'arbres — Utilisez la relation parent-enfant sur ResourceNode pour les structures de dossiers (par exemple, dossiers de documents)
Mis à jour
Ce contenu vous a-t-il été utile ?