@@ -49,12 +49,13 @@ public static function init() {
4949 \add_action ( 'activitypub_process_outbox ' , array ( self ::class, 'process_outbox ' ) );
5050
5151 // Default filters to add Inboxes to sent to.
52- \add_filter ( 'activitypub_interactees_inboxes ' , array ( self ::class, 'add_inboxes_by_mentioned_actors ' ), 10 , 3 );
53- \add_filter ( 'activitypub_interactees_inboxes ' , array ( self ::class, 'add_inboxes_of_replied_urls ' ), 10 , 3 );
52+ \add_filter ( 'activitypub_additional_inboxes ' , array ( self ::class, 'add_inboxes_by_mentioned_actors ' ), 10 , 3 );
53+ \add_filter ( 'activitypub_additional_inboxes ' , array ( self ::class, 'add_inboxes_of_replied_urls ' ), 10 , 3 );
54+ \add_filter ( 'activitypub_additional_inboxes ' , array ( self ::class, 'add_inboxes_of_relays ' ), 10 , 3 );
5455
5556 // Fallback for `activitypub_send_to_inboxes` filter.
5657 \add_filter (
57- 'activitypub_interactees_inboxes ' ,
58+ 'activitypub_additional_inboxes ' ,
5859 function ( $ inboxes , $ actor_id , $ activity ) {
5960 /**
6061 * Filters the list of interactees inboxes to send the Activity to.
@@ -63,9 +64,13 @@ function ( $inboxes, $actor_id, $activity ) {
6364 * @param int $actor_id The actor ID.
6465 * @param Activity $activity The ActivityPub Activity.
6566 *
66- * @deprecated 5.2.0 Use `activitypub_interactees_inboxes` instead.
67+ * @deprecated 5.2.0 Use `activitypub_additional_inboxes` instead.
68+ * @deprecated 5.4.0 Use `activitypub_additional_inboxes` instead.
6769 */
68- return \apply_filters_deprecated ( 'activitypub_send_to_inboxes ' , array ( $ inboxes , $ actor_id , $ activity ), '5.2.0 ' , 'activitypub_interactees_inboxes ' );
70+ $ inboxes = \apply_filters_deprecated ( 'activitypub_send_to_inboxes ' , array ( $ inboxes , $ actor_id , $ activity ), '5.2.0 ' , 'activitypub_additional_inboxes ' );
71+ $ inboxes = \apply_filters_deprecated ( 'activitypub_interactees_inboxes ' , array ( $ inboxes , $ actor_id , $ activity ), '5.4.0 ' , 'activitypub_additional_inboxes ' );
72+
73+ return $ inboxes ;
6974 },
7075 10 ,
7176 3
@@ -95,7 +100,7 @@ public static function process_outbox( $id ) {
95100 $ activity = Outbox::get_activity ( $ outbox_item );
96101
97102 // Send to mentioned and replied-to users. Everyone other than followers.
98- self ::send_to_interactees ( $ activity , $ actor ->get__id (), $ outbox_item );
103+ self ::send_to_additional_inboxes ( $ activity , $ actor ->get__id (), $ outbox_item );
99104
100105 if ( self ::should_send_to_followers ( $ activity , $ actor , $ outbox_item ) ) {
101106 Scheduler::async_batch (
@@ -250,21 +255,23 @@ private static function schedule_retry( $retries, $outbox_item_id, $attempt = 1
250255 }
251256
252257 /**
253- * Send an Activity to all followers and mentioned users.
258+ * Send an Activity to a custom list of inboxes, like mentioned users or replied-to posts.
259+ *
260+ * For all custom implementations, please use the `activitypub_additional_inboxes` filter.
254261 *
255262 * @param Activity $activity The ActivityPub Activity.
256263 * @param int $actor_id The actor ID.
257264 * @param \WP_Post $outbox_item The WordPress object.
258265 */
259- private static function send_to_interactees ( $ activity , $ actor_id , $ outbox_item = null ) {
266+ private static function send_to_additional_inboxes ( $ activity , $ actor_id , $ outbox_item = null ) {
260267 /**
261268 * Filters the list of inboxes to send the Activity to.
262269 *
263270 * @param array $inboxes The list of inboxes to send to.
264271 * @param int $actor_id The actor ID.
265272 * @param Activity $activity The ActivityPub Activity.
266273 */
267- $ inboxes = apply_filters ( 'activitypub_interactees_inboxes ' , array (), $ actor_id , $ activity );
274+ $ inboxes = apply_filters ( 'activitypub_additional_inboxes ' , array (), $ actor_id , $ activity );
268275 $ inboxes = array_unique ( $ inboxes );
269276
270277 $ retries = self ::send_to_inboxes ( $ inboxes , $ outbox_item ->ID );
@@ -412,4 +419,34 @@ protected static function should_send_to_followers( $activity, $actor, $outbox_i
412419 */
413420 return apply_filters ( 'activitypub_send_activity_to_followers ' , $ send , $ activity , $ actor ->get__id (), $ outbox_item );
414421 }
422+
423+ /**
424+ * Add Inboxes of Relays.
425+ *
426+ * @param array $inboxes The list of Inboxes.
427+ * @param int $actor_id The Actor-ID.
428+ * @param Activity $activity The ActivityPub Activity.
429+ *
430+ * @return array The filtered Inboxes.
431+ */
432+ public static function add_inboxes_of_relays ( $ inboxes , $ actor_id , $ activity ) {
433+ // Check if follower endpoint is set.
434+ $ cc = $ activity ->get_cc () ?? array ();
435+ $ to = $ activity ->get_to () ?? array ();
436+
437+ $ audience = array_merge ( $ cc , $ to );
438+
439+ // Check if activity is public.
440+ if ( ! in_array ( 'https://www.w3.org/ns/activitystreams#Public ' , $ audience , true ) ) {
441+ return $ inboxes ;
442+ }
443+
444+ $ relays = \get_option ( 'activitypub_relays ' , array () );
445+
446+ if ( empty ( $ relays ) ) {
447+ return $ inboxes ;
448+ }
449+
450+ return array_merge ( $ inboxes , $ relays );
451+ }
415452}
0 commit comments