diff --git a/includes/class-activitypub.php b/includes/class-activitypub.php
index 6f654c5..e9498d1 100644
--- a/includes/class-activitypub.php
+++ b/includes/class-activitypub.php
@@ -39,6 +39,8 @@ class Activitypub {
\add_action( 'in_plugin_update_message-' . ACTIVITYPUB_PLUGIN_BASENAME, array( self::class, 'plugin_update_message' ) );
+ \add_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 15, 2 );
+
// register several post_types
self::register_post_types();
}
@@ -335,6 +337,32 @@ class Activitypub {
);
}
+ /**
+ * Adds line breaks to the list of allowed comment tags.
+ *
+ * @param array $allowed_tags Allowed HTML tags.
+ * @param string $context Context.
+ *
+ * @return array Filtered tag list.
+ */
+ public static function allowed_comment_html( $allowed_tags, $context = '' ) {
+ if ( 'pre_comment_content' !== $context ) {
+ // Do nothing.
+ return $allowed_tags;
+ }
+
+ // Add `p` and `br` to the list of allowed tags.
+ if ( ! array_key_exists( 'br', $allowed_tags ) ) {
+ $allowed_tags['br'] = array();
+ }
+
+ if ( ! array_key_exists( 'p', $allowed_tags ) ) {
+ $allowed_tags['p'] = array();
+ }
+
+ return $allowed_tags;
+ }
+
/**
* Register the "Followers" Taxonomy
*
diff --git a/includes/collection/class-interactions.php b/includes/collection/class-interactions.php
index 82636b5..9ffa5da 100644
--- a/includes/collection/class-interactions.php
+++ b/includes/collection/class-interactions.php
@@ -82,11 +82,9 @@ class Interactions {
return 'inactive';
}
);
- \add_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10, 2 );
$comment = \wp_new_comment( $commentdata, true );
- \remove_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10 );
\remove_filter( 'pre_option_require_name_email', '__return_false' );
// re-add flood control
@@ -132,11 +130,9 @@ class Interactions {
return 'inactive';
}
);
- \add_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10, 2 );
$comment = \wp_update_comment( $commentdata, true );
- \remove_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10 );
\remove_filter( 'pre_option_require_name_email', '__return_false' );
// re-add flood control
@@ -208,29 +204,4 @@ class Interactions {
$comment_query = new WP_Comment_Query( $args );
return $comment_query->comments;
}
-
- /**
- * Adds line breaks to the list of allowed comment tags.
- *
- * @param array $allowedtags Allowed HTML tags.
- * @param string $context Context.
- * @return array Filtered tag list.
- */
- public static function allowed_comment_html( $allowedtags, $context = '' ) {
- if ( 'pre_comment_content' !== $context ) {
- // Do nothing.
- return $allowedtags;
- }
-
- // Add `p` and `br` to the list of allowed tags.
- if ( ! array_key_exists( 'br', $allowedtags ) ) {
- $allowedtags['br'] = array();
- }
-
- if ( ! array_key_exists( 'p', $allowedtags ) ) {
- $allowedtags['p'] = array();
- }
-
- return $allowedtags;
- }
}
diff --git a/tests/test-class-activitypub-interactions.php b/tests/test-class-activitypub-interactions.php
index 7602908..18bc734 100644
--- a/tests/test-class-activitypub-interactions.php
+++ b/tests/test-class-activitypub-interactions.php
@@ -47,6 +47,21 @@ class Test_Activitypub_Interactions extends WP_UnitTestCase {
);
}
+ public function create_test_rich_object( $id = 'https://example.com/123' ) {
+ return array(
+ 'actor' => $this->user_url,
+ 'id' => 'https://example.com/id/' . microtime( true ),
+ 'to' => [ $this->user_url ],
+ 'cc' => [ 'https://www.w3.org/ns/activitystreams#Public' ],
+ 'object' => array(
+ 'id' => $id,
+ 'url' => 'https://example.com/example',
+ 'inReplyTo' => $this->post_permalink,
+ 'content' => 'Hello
example
example
', + ), + ); + } + public function test_handle_create_basic() { $comment_id = Activitypub\Collection\Interactions::add_comment( $this->create_test_object() ); $comment = get_comment( $comment_id, ARRAY_A ); @@ -65,6 +80,13 @@ class Test_Activitypub_Interactions extends WP_UnitTestCase { $this->assertEquals( 'activitypub', get_comment_meta( $comment_id, 'protocol', true ) ); } + public function test_handle_create_rich() { + $comment_id = Activitypub\Collection\Interactions::add_comment( $this->create_test_rich_object() ); + $comment = get_comment( $comment_id, ARRAY_A ); + + $this->assertEquals( 'Helloexample
', $comment['comment_content'] ); + } + public function test_convert_object_to_comment_not_reply_rejected() { $object = $this->create_test_object(); unset( $object['object']['inReplyTo'] );