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/createseule l’actioncreateparviendra à cette vueriver/{$type}/{$subtype}/default: par ex.river/object/blog/defaulttoute l’activité de la rivière pourobjectblogarrivera iciriver/{$type}/{$action_type}: par ex.river/object/createtoutes les actionscreatepourobjectarriveront iciriver/{$type}/default: par ex.river/object/defaulttoutes les actions pour tous lesobjectarriveront 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:createriver:{$type}:{$subtype}:default: par ex.river:object:blog:defaultriver:{$type}:{$action_type}: par ex.river:object:createriver:{$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 (objectpour les objets,userpour les utilisateurs, etc.){subtype}est le sous-type d’entité du contenu qui nous intéresse (blogpour les articles de blog,photo_albumpour 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_guidLe GUID de l’utilisateur qui effectue l’action$vars['item']->object_guidLe 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);
Capability
Entities can have the capability river_emittable. This capability determines if the entity type/subtype is filterable
on the activity pages and, if not explicitly requested, is filtered out of elgg_get_river() queries. If the entity
is using the default EntityEditAction the capability also determines if the default create river activity is created.