Files
Chamilo/vendor/php-xapi/client/doc/agent_profile.md
2025-08-14 22:41:49 +02:00

89 lines
2.5 KiB
Markdown

The Agent Profile API
=====================
Agent Profiles
--------------
A LMS can use the xAPI to store documents associated to a certain agent using
agent profiles. An agent profile is dedicated to an agent and a profile id:
```php
use Xabbuh\XApi\Model\AgentProfile;
// ...
$profile = new AgentProfile();
$profile->setAgent($agent);
$profile->setProfileId($profileId);
```
Documents
---------
Documents are simple collections of key-value pairs and can be accessed like arrays:
```php
use Xabbuh\XApi\Model\AgentProfileDocument;
// ...
$document = new AgentProfileDocument();
$document->setAgentProfile($profile);
$document['x'] = 'foo';
$document['y'] = 'bar';
```
Obtaining the Agent Profile API Client
--------------------------------------
After you have [built the global xAPI client](client.md), you can obtain an agent
profile API client by calling its ``getAgentProfileApiClient()`` method:
```php
$agentProfileApiClient = $xApiClient->getAgentProfileApiClient();
```
Storing Agent Profile Documents
-------------------------------
You can simply store an ``AgentProfileDocument`` passing it to the
``createOrUpdateAgentProfileDocument()`` method of the xAPI client:
```php
$document = ...; // the agent profile document
$agentProfileApiClient->createOrUpdateAgentProfileDocument($document);
```
If a document already exists for this agent profile, the existing document will
be updated. This means that new fields will be updated, existing fields that are
included in the new document will be overwritten and existing fields that are
not included in the new document will be kept as they are.
If you want to replace a document, use the ``createOrReplaceAgentProfileDocument()``
method instead:
```php
$document = ...; // the agent profile document
$agentProfileApiClient->createOrReplaceAgentProfileDocument($document);
```
Deleting Agent Profile Documents
--------------------------------
An ``AgentProfileDocument`` is deleted by passing the particular ``AgentProfile``
to the ``deleteAgentProfileDocument()`` method:
```php
$profile = ...; // the agent profile the document should be deleted from
$agentProfileApiClient->deleteAgentProfileDocument($profile);
```
Retrieving Agent Profile Documents
----------------------------------
Similarly, you receive a document for a particular agent profile by passing the
profile to the ``getAgentProfileDocument()`` method:
```php
$profile = ...; // the agent profile the document should be retrieved from
$document = $agentProfileApiClient->getAgentProfileDocument($profile);
```