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 ajouter des événements à la rivière dans un plugin Elgg.

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(array(
        '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

  • object_guid => INT Le GUID de l’entité sur laquelle est effectuée l’action

  • target_guid => INT Le GUID du conteneur de l’entité 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

Pour que les événements apparaissent dans la rivière, vous devez fournir une vue correspondante avec le nom spécifié dans la fonction ci-dessus.

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 exécute 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 :

<?php

$object = $vars['item']->getObjectEntity();

$excerpt = $object->excerpt ? $object->excerpt : $object->description;
$excerpt = strip_tags($excerpt);
$excerpt = elgg_get_excerpt($excerpt);

echo elgg_view('river/elements/layout', array(
        'item' => $vars['item'],
        'message' => $excerpt,
));