From 19d60d8fec9ee0bbb92aaec010e9b21d4f573f42 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 5 Jul 2023 16:16:31 +0200 Subject: [PATCH] fix sending activities --- includes/class-activity-dispatcher.php | 48 ++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/includes/class-activity-dispatcher.php b/includes/class-activity-dispatcher.php index e3ce52d..5c91b04 100644 --- a/includes/class-activity-dispatcher.php +++ b/includes/class-activity-dispatcher.php @@ -74,20 +74,62 @@ class Activity_Dispatcher { // check if a migration is needed before sending new posts Migration::maybe_migrate(); - if ( is_user_disabled( User_Factory::BLOG_USER_ID ) ) { + if ( is_user_disabled( Users::BLOG_USER_ID ) ) { return; } - $user = User_Factory::get_user( User_Factory::BLOG_USER_ID ); + $user = Users::get_by_id( Users::BLOG_USER_ID ); $object = Post::transform( $wp_post )->to_object(); $object->set_attributed_to( $user->get_id() ); $activity = new Activity(); $activity->set_type( $type ); + $activity->set_actor( $user->get_id() ); $activity->set_object( $object ); - $user_id = User_Factory::BLOG_USER_ID; + $user_id = Users::BLOG_USER_ID; + $follower_inboxes = Followers::get_inboxes( $user_id ); + $mentioned_inboxes = Mention::get_inboxes( $activity->get_cc() ); + + $inboxes = array_merge( $follower_inboxes, $mentioned_inboxes ); + $inboxes = array_unique( $inboxes ); + + $json = $activity->to_json(); + + foreach ( $inboxes as $inbox ) { + safe_remote_post( $inbox, $json, $user_id ); + } + } + + /** + * Send Activities to followers and mentioned users. + * + * @param WP_Post $wp_post The ActivityPub Post. + * @param string $type The Activity-Type. + * + * @return void + */ + public static function send_blog_announce_activity( WP_Post $wp_post, $type ) { + // check if a migration is needed before sending new posts + Migration::maybe_migrate(); + + if ( is_user_disabled( Users::BLOG_USER_ID ) ) { + return; + } + + $user = Users::get_by_id( Users::BLOG_USER_ID ); + + $object = Post::transform( $wp_post )->to_object(); + + $activity = new Activity(); + $activity->set_type( 'Announce' ); + $activity->set_actor( $user->get_id() ); + $activity->set_object( $object ); + + $activity->set_object( $object->get_id() ); + + $user_id = Users::BLOG_USER_ID; $follower_inboxes = Followers::get_inboxes( $user_id ); $mentioned_inboxes = Mention::get_inboxes( $activity->get_cc() );