Activity API
Push activities into the stream and manage feeds, reactions, and comments.
Push Activity
Push an activity into the stream. The first argument is the activity rule
name (a row in #__sociable_activity_types) — you must register it first
through a sociable_rules.json file or the admin Activity Rules tab,
otherwise the push fails.
$activityId = $sociable->activities()->push(
'com_myext.article.create', // Activity rule name
'Hello world', // Title
'Short description / preview text', // Description
$userId, // User ID (optional — defaults to current user)
[
'item_id' => $articleId,
'parent_id' => 0,
'visibility' => 'public', // public | friends | private | group
'group_id' => null,
'featured' => false,
'language' => '*',
'attribs' => ['category' => 'tech'],
]
);
Returns the new activity ID, or false on failure (most commonly because
the activity rule is missing or unpublished, or the user is a guest).
Visibility constants are exposed for clarity:
ActivityApi::VISIBILITY_PUBLIC;
ActivityApi::VISIBILITY_FRIENDS;
ActivityApi::VISIBILITY_PRIVATE;
ActivityApi::VISIBILITY_GROUP;
Get Feed
$feed = $sociable->activities()->getFeed([
'user_id' => null,
'group_id' => null,
'visibility' => null,
'limit' => 20,
'offset' => 0,
'order_by' => 'created',
'order_dir' => 'DESC',
]);
// Convenience: just one user's activities.
$personalFeed = $sociable->activities()->getUserActivities($userId, [
'limit' => 20,
]);
Both methods return ['items' => [...], 'total' => N].
Reactions
// Add the current user's reaction (defaults to 'like').
$sociable->activities()->react($activityId, 'like', $userId);
// Remove the current user's reaction.
$sociable->activities()->unreact($activityId, $userId);
Comments
$commentId = $sociable->activities()->addComment(
$activityId,
'Great post!',
$userId
);
$comments = $sociable->activities()->getComments($activityId, [
'limit' => 20,
'offset' => 0,
]);
Get and Delete
$activity = $sociable->activities()->getById($activityId);
// Both delete the activity; `delete()` is the preferred name.
$sociable->activities()->delete($activityId);
$sociable->activities()->remove($activityId);
Registering an Activity Rule
push() only works for activity rules that have been registered. The
recommended way is to ship them as part of a sociable_rules.json file —
see Registering Custom Rules for the format
and discovery rules.
Admins can also create one-off activity rules by hand from Components → Sociable → Badges → Activity Rules.