From b843d841f2fd50d6bdd08636c2d03fd22a3ffa7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Mon, 20 Nov 2023 14:30:07 +0100 Subject: [PATCH] add entry point to support for wp_comment --- includes/class-transformers-manager.php | 38 +++++++++++++++---------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/includes/class-transformers-manager.php b/includes/class-transformers-manager.php index 819f383..9472f9e 100644 --- a/includes/class-transformers-manager.php +++ b/includes/class-transformers-manager.php @@ -7,6 +7,9 @@ namespace Activitypub; +use WP_Post; +use WP_Comment; + use function Activitypub\camel_to_snake_case; use function Activitypub\snake_to_camel_case; @@ -235,7 +238,7 @@ class Transformers_Manager { * * Retrieve the registered transformers list. * - * @since 1.0.0 + * @since version_number_transformer_management_placeholder * @access public * * @param string $transformers Optional. Widget name. Default is null. @@ -254,29 +257,34 @@ class Transformers_Manager { return $this->transformers; } - /** * Get the right ActivityPub transformer. * - * @since 1.0.0 + * @since version_number_transformer_management_placeholder * @access public * - * @param WP_Post $wp_post The WordPress Post. + * @param WP_Post|WP_Comment $wp_post The WordPress Post/Comment. * * @return Transformer_Base|null Registered transformers. */ - public function get_transformer( $wp_post ) { - if ( is_null( $this->transformers ) ) { - $this->init_transformers(); + public function get_transformer( $object ) { + switch ( get_class( $object ) ) { + case 'WP_Post': + if ( is_null( $this->transformers ) ) { + $this->init_transformers(); + } + if ( null !== $transformer ) { + return isset( $this->transformers[ $transformer ] ) ? $this->transformers[ $transformer ] : null; + } + $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_name = $transformer_mapping[ $post_type ]; + return new $this->transformers[ $transformer_name ]; + case 'WP_Comment': + return new Comment( $object ); + default: + return apply_filters( 'activitypub_transformer', null, $object, get_class( $object ) ); } - - if ( null !== $transformer ) { - return isset( $this->transformers[ $transformer ] ) ? $this->transformers[ $transformer ] : null; - } - $post_type = get_post_type( $wp_post ); - $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_name = $transformer_mapping[ $post_type ]; - return new $this->transformers[ $transformer_name ]; }