Rivière - Flux d’activité
Elgg supporte nativement la « rivière » - river -, un flux d’activité qui contient des descriptions des activités effectuées par les membres du site. Cette page donne un aperçu de comment un plugin Elgg ajoute des événements à la rivière.
Pousser des éléments vers la rivière
Des éléments sont poussés vers la rivière d’activité à travers l’appel à une fonction, que vous devez inclure dans vos plugins pour que ces éléments apparaissent.
Ici nous ajoutons un élément à la rivière, qui indique qu’un utilisateur a créé un nouvel article de blog :
<?php
elgg_create_river_item([
'view' => 'river/object/blog/create',
'action_type' => 'create',
'subject_guid' => $blog->owner_guid,
'object_guid' => $blog->getGUID(),
]);
Tous les paramètres disponibles :
view
=> STR La vue qui va gérer l’élément de la rivière (doit exister)action_type
=> STR Une chaîne arbitraire pour définir l’action (par ex. “create”, “update”, “vote”, “review”, etc.)subject_guid
=> INT Le GUID de l’entité qui effectue l’action (par défaut : le guid de l’utilisateur connecté)object_guid
=> INT Le GUID de l’entité sur laquelle est effectuée l’actiontarget_guid
=> INT Le GUID du conteneur de l’entité de l’objet (optionnel)access_id
=> INT L’ID d’accès de l’élément de la rivière (par défaut : identique à celui de l’objet)posted
=> INT Le timestamp UNIX de l’élément de la rivière (par défaut : maintenant)annotation_id
=> INT L’ID de l’annotation ID associée avec cette entrée de la rivière (optionnel)
Quand un élément est supprimé ou modifié, l’élément de la rivière sera mis à jour automatiquement.
Vues de la rivière
A partir de Elgg 3.0 le paramètre view
n’est plus requis. Une logique de rechange a été créée pour vérifier une série de vues pour vous :
/river/{$type}/{$subtype}/{$action_type}
: par ex.river/object/blog/create
seule l’actioncreate
parviendra à cette vueriver/{$type}/{$subtype}/default
: par ex.river/object/blog/default
toute l’activité de la rivière pourobject
blog
arrivera iciriver/{$type}/{$action_type}
: par ex.river/object/create
toutes les actionscreate
pourobject
arriveront iciriver/{$type}/default
: par ex.river/object/default
toutes les actions pour tous lesobject
arriveront iciriver/elements/layout
: solution de rechange en dernier recours, qui devrait toujours être appelée dans n’importe laquelle des vues de la rivière afin de créer une mise en page cohérente
A la fois type
et subtype
sont basés sur le type
et le subtype
de l”object_guid
pour lequel l’élément de la rivière a été créé.
Résumé
Si aucun paramètre summary
n’est fourni à river/elements/layout
la vue va tenter de le créer pour vous. Le résultat de base sera un texte avec le texte Untel a fait quelque chose sur Ceci, où Untel est basé sur subject_guid
et Ceci
est basé sur object_guid
. Des liens seront créés pour Untel et Ceci. Ces liens sont transmis à une série de clefs de traduction afin que vous puissiez générer un résumé informatif.
Les clefs de traduction sont :
river:{$type}:{$subtype}:{$action_type}
: par ex.river:object:blog:create
river:{$type}:{$subtype}:default
: par ex.river:object:blog:default
river:{$type}:{$action_type}
: par ex.river:object:create
river:{$type}:default
: par ex.river:object:default
Vue personnalisée de la rivière
Si vous souhaitez ajouter plus d’informations à la vue de la rivière, comme par ex. une pièce jointe (une image, une vidéo YouTube embarquée, etc.), vous devez spécifier la vue lors de la création de l’élément de la rivière. Cette vue DOIT exister.
Nous recommandons /river/{type}/{subtype}/{action}
, où :
{type}
est le type d’entité du contenu qui nous intéresse (object
pour les objets,user
pour les utilisateurs, etc.){subtype}
est le sous-type d’entité du contenu qui nous intéresse (blog
pour les articles de blog,photo_album
pour les albums photo, etc.){action}
est l’action qui a eu lieu (create
,update
, etc.)
Les informations relatives à un élément de la rivière seront transmises dans un objet appelé $vars['item']
, qui contient les paramètres importants suivants :
''$vars['item']->subject_guid
Le GUID de l’utilisateur qui effectue l’action$vars['item']->object_guid
Le GUID de l’entité sur laquelle l’action est effectuée
Les horodatages, etc. seront générés pour vous.
Par exemple, le plugin blog utilise le code suivant pour sa vue dans la rivière :
$item = elgg_extract('item', $vars);
if (!$item instanceof ElggRiverItem) {
return;
}
$blog = $item->getObjectEntity();
if (!$blog instanceof ElggBlog) {
return;
}
$vars['message'] = $blog->getExcerpt();
echo elgg_view('river/elements/layout', $vars);