Skip to content

Commit

Permalink
Fix: Importing tags from the Fediverse (#1234)
Browse files Browse the repository at this point in the history
* Fix: Importing tags from the Fediverse

Fix #1167

This PR adds a check, so that only supported posts will be parsed for tags. This will prevent, that followers and other custom post types will be parsed for Hashtags.

* Add test

* Add changelog

* Check if the (custom) post supports tags.

---------

Co-authored-by: Konstantin Obenland <obenland@gmx.de>
  • Loading branch information
pfefferle and obenland authored Jan 29, 2025
1 parent e0c3b67 commit 39dfabc
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

* Handle deletes from remote servers that leave behind an accessible Tombstone object.
* No longer parses tags for post types that don't support Activitypub.

## [4.7.3] - 2025-01-21

Expand Down
11 changes: 11 additions & 0 deletions includes/class-hashtag.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,17 @@ public static function filter_activity_object( $activity ) {
* @param \WP_Post $post Post object.
*/
public static function insert_post( $post_id, $post ) {
// Check if the post supports ActivityPub.
if ( ! \post_type_supports( \get_post_type( $post ), 'activitypub' ) ) {
return;
}

// Check if the (custom) post supports tags.
$taxonomies = \get_object_taxonomies( $post );
if ( ! in_array( 'post_tag', $taxonomies, true ) ) {
return;
}

$tags = array();

// Skip hashtags in HTML attributes, like hex colors.
Expand Down
1 change: 1 addition & 0 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ For reasons of data protection, it is not possible to see the followers of other

* Changed: Improved content negotiation and AUTHORIZED_FETCH support for third-party plugins
* Fixed: Handle deletes from remote servers that leave behind an accessible Tombstone object.
* Fixed: No longer parses tags for post types that don't support Activitypub.

= 4.7.3 =

Expand Down
23 changes: 22 additions & 1 deletion tests/includes/class-test-hashtag.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

namespace Activitypub\Tests;

use Activitypub\Collection\Followers;

/**
* Test class for Activitypub Hashtag.
*
Expand Down Expand Up @@ -89,7 +91,7 @@ public function the_content_provider() {
* @param string $message The error message.
*/
public function test_hashtag_conversion( $content, $excerpt, $expected_tags, $message ) {
$post_id = $this->factory->post->create(
$post_id = self::factory()->post->create(
array(
'post_content' => $content,
'post_excerpt' => $excerpt,
Expand All @@ -104,6 +106,25 @@ public function test_hashtag_conversion( $content, $excerpt, $expected_tags, $me
}
}

/**
* Test no hashtags for unsupported post types.
*
* @covers ::insert_post
*/
public function test_no_hashtags_for_unsupported_post_types() {
$post_id = self::factory()->post->create(
array(
'post_content' => 'Testing #php and #programming',
'post_type' => Followers::POST_TYPE,
)
);

\Activitypub\Hashtag::insert_post( $post_id, get_post( $post_id ) );
$tags = wp_get_post_tags( $post_id, array( 'fields' => 'names' ) );

$this->assertEmpty( $tags, 'Should not add hashtags to unsupported post types' );
}

/**
* Data provider for hashtag tests.
*
Expand Down

0 comments on commit 39dfabc

Please sign in to comment.