Resource Systeem
Het resource systeem is een van de belangrijkste architecturale concepten in Chamilo 2.0. Het biedt een uniforme abstractie voor alle cursusinhoud — documenten, oefeningen, leerpaden, forumposts en meer.
Kernconcept
Elk stuk cursusinhoud wordt vertegenwoordigd door een ResourceNode. Dit geeft alle inhoudstypen een gemeenschappelijke set van mogelijkheden:
Zichtbaarheidscontrole — Tonen/verbergen voor leerlingen
Toegangscontrole — Beveiligingsstemmers controleren rechten via de ResourceNode
Bestandsopslag — Bijgevoegde bestanden worden opgeslagen via ResourceFile
Boomstructuur — ResourceNodes vormen een boom (ouder-kind relaties)
Audittrail — Maker, aanmaakdatum, wijzigingsregistratie
Belangrijke Entiteiten
ResourceNode (src/CoreBundle/Entity/ResourceNode.php)
src/CoreBundle/Entity/ResourceNode.php)De centrale entiteit. Elke inhoudsentiteit heeft een een-op-een relatie met een ResourceNode.
Belangrijke velden:
id
integer
Primaire sleutel
uuid
UUID v4
Unieke identificator voor API-gebruik
title
string
Weergavetitel
creator
User
De gebruiker die deze resource heeft gemaakt
resourceFile
ResourceFile
Het bijgevoegde bestand (indien aanwezig)
resourceType
ResourceType
Het type resource (document, quiz, enz.)
parent
ResourceNode
Ouder in de resourceboom
children
Collection
Kind ResourceNodes
resourceLinks
Collection
Zichtbaarheids- en toegangslinks
De boom gebruikt Gedmo's materialized path strategie voor efficiënte hiërarchische queries.
ResourceFile (src/CoreBundle/Entity/ResourceFile.php)
src/CoreBundle/Entity/ResourceFile.php)Slaat de daadwerkelijke bestandsgegevens op voor een resource:
id
integer
Primaire sleutel
title
string
Originele bestandsnaam
mimeType
string
MIME-type
originalName
string
Originele uploadnaam
size
integer
Bestandsgrootte in bytes
crop
string
Bijsnijdgegevens (voor afbeeldingen)
Bestandsopslag wordt afgehandeld door Flysystem, dus bestanden kunnen op lokale schijf, S3, Azure of GCS staan, afhankelijk van de configuratie.
ResourceLink
Beheert zichtbaarheid en toegang per context. Er zijn 3 hoofdcontexttypen:
Cursus
Sessie
Groep (in een cursus)
De ResourceLink-entiteit weerspiegelt de combinatie van deze 3 contexttypen en stelt een zichtbaarheid vast voor die volledige context:
course
Course
Bij welke cursus de resource hoort
session
Session
Bij welke sessie (null voor basiscursus)
group
CGroup
Bij welke groep (null voor hele cursus)
visibility
integer
Zichtbaar, onzichtbaar of verwijderd
Dit maakt het mogelijk dat dezelfde ResourceNode verschillende zichtbaarheid heeft in verschillende contexten (bijvoorbeeld zichtbaar in één sessie maar verborgen in een andere).
Dit wordt automatisch ingesteld bij gebruik van de interface en het beslissen, bijvoorbeeld, dat een resource een sessie-specifieke resource is die zichtbaar zal zijn voor alle groepen in een bepaalde cursus in een bepaalde sessie, maar onzichtbaar in de basiscursus of in een andere sessie.
Standaard zijn resources die zichtbaar zijn in een basiscursus ook zichtbaar in alle sessies van die cursus, maar de cursusbegeleider kan beslissen om een resource te verbergen voor een specifieke sessie. In dit geval zullen we de specifieke zichtbaarheid voor deze resource in deze sessie ophalen en zien dat deze een zichtbaarheid van 0 heeft, waardoor het item niet aan leerlingen in deze sessie wordt getoond, terwijl een gebrek aan sessie-specifieke zichtbaarheid in andere sessies ervoor zorgt dat de resource de zichtbaarheid van de basiscursus gebruikt (en de resource aan leerlingen wordt getoond).
API Platform Integratie
ResourceNode wordt blootgesteld als een API Platform resource met beveiliging:
Hoe Inhoudsentiteiten Verbinden
Cursusinhoudsentiteiten (CDocument, CQuiz, CLp, enz.) breiden AbstractResource uit of implementeren ResourceInterface, wat hen een resourceNode relatie geeft:
Wanneer je een CDocument aanmaakt, wordt automatisch een ResourceNode naast deze aangemaakt, wat uniform resourcebeheer biedt.
Praktische Implicaties
Bij het werken met cursusinhoud:
Inhoud aanmaken — Maak zowel de inhoudsentiteit ALS de bijbehorende ResourceNode aan
Rechten controleren — Gebruik de beveiligingsstemmers van de ResourceNode
Bestanden beheren — Voeg bestanden toe via ResourceFile
Zichtbaarheid beheren — Maak/wijzig ResourceLinks
Boomstructuren bouwen — Gebruik de ouder-kind relatie op ResourceNode voor mapstructuren (bijvoorbeeld documentmappen)
Laatst bijgewerkt
Was dit nuttig?