How to model an activity feed
By having three tables in the database (e.g. activities, user, and user_activities) and a simple LEFT JOIN SQL query as the one below can be executed:

SELECT SELECT user.name AS user_name , activities.name AS activity_name
FROM user_activities 
LEFT JOIN user ON user.userid = user_activities.user_id 
LEFT JOIN activities ON activities.activityid = user_activities.activity_id


As for your approach: 

Activities table, 

id - Unique Stream Item ID
user_id - ID of the user who created the stream item
object_id - Internal ID of the object (currently either the buckets, uploads, or documents ID)
action_name - The action taken against the object
activity_date - Timestamp that the action was created.
hidden - Boolean of if the user has chosen to hide the item.
privacy - An id to a table with Privacy Groups Options