From 6d40ebf30e510e86446561b8f002e55545f01b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Mon, 20 Nov 2023 19:36:45 +0100 Subject: [PATCH] Automatically set the wp_post when returning a transformer instance for the wp_post --- includes/class-activity-dispatcher.php | 6 ++---- includes/class-transformers-manager.php | 13 +++++++++++-- includes/rest/class-collection.php | 2 +- includes/rest/class-outbox.php | 1 - templates/post-json.php | 1 - tests/test-class-activitypub-activity.php | 2 +- tests/test-class-activitypub-post.php | 4 ++-- ...activitypub-rest-post-signature-verification.php | 4 ++-- 8 files changed, 19 insertions(+), 14 deletions(-) diff --git a/includes/class-activity-dispatcher.php b/includes/class-activity-dispatcher.php index 122ed04..6e5edd5 100644 --- a/includes/class-activity-dispatcher.php +++ b/includes/class-activity-dispatcher.php @@ -66,8 +66,7 @@ class Activity_Dispatcher { } $transformer = \Activitypub\Transformers_Manager::instance()->get_transformer( $wp_post ); - $transformer->set_wp_post( $wp_post ); - $transformer->to_object(); + $object = $transformer->to_object(); $activity = new Activity(); $activity->set_type( $type ); @@ -104,8 +103,7 @@ class Activity_Dispatcher { } $transformer = \Activitypub\Transformers_Manager::instance()->get_transformer( $wp_post ); - $transformer->set_wp_post( $wp_post ); - $transformer->to_object(); + $object = $transformer->to_object(); $activity = new Activity(); $activity->set_type( 'Announce' ); diff --git a/includes/class-transformers-manager.php b/includes/class-transformers-manager.php index ee55d7b..aabfb0f 100644 --- a/includes/class-transformers-manager.php +++ b/includes/class-transformers-manager.php @@ -27,6 +27,11 @@ if ( ! defined( 'ABSPATH' ) ) { */ class Transformers_Manager { + const DEFAULT_TRANSFORMER_MAPPING = array( + 'post' => 'activitypub/default', + 'page' => 'activitypub/default' + ); + /** * Transformers. * @@ -259,6 +264,8 @@ class Transformers_Manager { /** * Get the mapped ActivityPub transformer. + * + * Returns a new instance of the needed WordPress to ActivityPub transformer. * * @since version_number_transformer_management_placeholder * @access public @@ -271,9 +278,11 @@ class Transformers_Manager { switch ( get_class( $object ) ) { case 'WP_Post': $post_type = get_post_type( $object ); - $transformer_mapping = \get_option( 'activitypub_transformer_mapping', array( 'post' => 'activitypub/default', 'page' => 'activitypub/default' ) ) ? \get_option( 'activitypub_transformer_mapping', array( 'post' => 'activitypub/default', 'page' => 'activitypub/default' ) ) : array(); + $transformer_mapping = \get_option( 'activitypub_transformer_mapping', DEFAULT_TRANSFORMER_MAPPING ); $transformer_name = $transformer_mapping[ $post_type ]; - return new ( $this->get_transformers( $transformer_name ) ); + $transformer_instance = new ( $this->get_transformers( $transformer_name ) ); + $transformer_instance->set_wp_post( $object ); + return $transformer_instance; case 'WP_Comment': return new Comment( $object ); default: diff --git a/includes/rest/class-collection.php b/includes/rest/class-collection.php index 98395d0..353b414 100644 --- a/includes/rest/class-collection.php +++ b/includes/rest/class-collection.php @@ -168,7 +168,7 @@ class Collection { ); foreach ( $posts as $post ) { - $response['orderedItems'][] = Transformers_Manager::instance()->get_transformer( $post )->set_wp_post( $wp_post )->to_object()->to_array(); + $response['orderedItems'][] = Transformers_Manager::instance()->get_transformer( $post )->to_object()->to_array(); } $rest_response = new WP_REST_Response( $response, 200 ); diff --git a/includes/rest/class-outbox.php b/includes/rest/class-outbox.php index 9b0a1c2..7d0d10d 100644 --- a/includes/rest/class-outbox.php +++ b/includes/rest/class-outbox.php @@ -106,7 +106,6 @@ class Outbox { foreach ( $posts as $post ) { $transformer = \Activitypub\Transformers_Manager::instance()->get_transformer( $post ); - $transformer->set_wp_post( $wp_post ); $post = $transformer->to_object(); $activity = new Activity(); $activity->set_type( 'Create' ); diff --git a/templates/post-json.php b/templates/post-json.php index 0174448..d13b771 100644 --- a/templates/post-json.php +++ b/templates/post-json.php @@ -3,7 +3,6 @@ $post = \get_post(); $transformer = \Activitypub\Transformers_Manager::instance()->get_transformer( $post ); -$transformer->set_wp_post( $post ); $json = \array_merge( array( '@context' => \Activitypub\get_context() ), $transformer->to_object()->to_array() ); diff --git a/tests/test-class-activitypub-activity.php b/tests/test-class-activitypub-activity.php index d8c2b5d..97a33e1 100644 --- a/tests/test-class-activitypub-activity.php +++ b/tests/test-class-activitypub-activity.php @@ -18,7 +18,7 @@ class Test_Activitypub_Activity extends WP_UnitTestCase { ); $wp_post = get_post( $post ); - $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( $post )->set_wp_post( $wp_post )->to_object(); + $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( $post )->to_object(); $activitypub_activity = new \Activitypub\Activity\Activity(); $activitypub_activity->set_type( 'Create' ); diff --git a/tests/test-class-activitypub-post.php b/tests/test-class-activitypub-post.php index d3b6a7c..1dfdb7d 100644 --- a/tests/test-class-activitypub-post.php +++ b/tests/test-class-activitypub-post.php @@ -10,13 +10,13 @@ class Test_Activitypub_Post extends WP_UnitTestCase { $permalink = \get_permalink( $post ); - $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->set_wp_post( get_post( $post ) )->to_object(); + $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->to_object(); $this->assertEquals( $permalink, $activitypub_post->get_id() ); \wp_trash_post( $post ); - $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->set_wp_post( get_post( $post ) )->to_object(); + $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->to_object(); $this->assertEquals( $permalink, $activitypub_post->get_id() ); diff --git a/tests/test-class-activitypub-rest-post-signature-verification.php b/tests/test-class-activitypub-rest-post-signature-verification.php index e70df19..f268146 100644 --- a/tests/test-class-activitypub-rest-post-signature-verification.php +++ b/tests/test-class-activitypub-rest-post-signature-verification.php @@ -10,7 +10,7 @@ class Test_Activitypub_Signature_Verification extends WP_UnitTestCase { ) ); $remote_actor = \get_author_posts_url( 2 ); - $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->set_wp_post( get_post( $post ) )->to_object(); + $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->to_object(); $activitypub_activity = new Activitypub\Activity\Activity( 'Create' ); $activitypub_activity->set_type( 'Create' ); $activitypub_activity->set_object( $activitypub_post ); @@ -82,7 +82,7 @@ class Test_Activitypub_Signature_Verification extends WP_UnitTestCase { ); $remote_actor = \get_author_posts_url( 2 ); $remote_actor_inbox = Activitypub\get_rest_url_by_path( '/inbox' ); - $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->set_wp_post( get_post( $post ) )->to_object(); + $activitypub_post = \Activitypub\Transformers_Manager::instance()->get_transformer( get_post( $post ) )->to_object(); $activitypub_activity = new Activitypub\Activity\Activity(); $activitypub_activity->set_type( 'Create' ); $activitypub_activity->set_object( $activitypub_post );