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’action

  • target_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 :

  1. /river/{$type}/{$subtype}/{$action_type} : par ex. river/object/blog/create seule l’action create parviendra à cette vue

  2. river/{$type}/{$subtype}/default : par ex. river/object/blog/default toute l’activité de la rivière pour object blog arrivera ici

  3. river/{$type}/{$action_type} : par ex. river/object/create toutes les actions create pour object arriveront ici

  4. river/{$type}/default : par ex. river/object/default toutes les actions pour tous les object arriveront ici

  5. river/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 :

  1. river:{$type}:{$subtype}:{$action_type}: par ex. river:object:blog:create

  2. river:{$type}:{$subtype}:default: par ex. river:object:blog:default

  3. river:{$type}:{$action_type}: par ex. river:object:create

  4. 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);