Merge branch 'add/extendable-transformers' of ssh://code.event-federation.eu:2222/Event-Federation/wordpress-activitypub into add/extendable-transformers

This commit is contained in:
André Menrath 2023-11-25 10:24:45 +01:00
commit 2a7929719b
11 changed files with 59 additions and 31 deletions

View file

@ -33,7 +33,7 @@ require_once __DIR__ . '/includes/functions.php';
\defined( 'ACTIVITYPUB_CUSTOM_POST_CONTENT' ) || \define( 'ACTIVITYPUB_CUSTOM_POST_CONTENT', "<strong>[ap_title]</strong>\n\n[ap_content]\n\n[ap_hashtags]\n\n[ap_shortlink]" );
\defined( 'ACTIVITYPUB_AUTHORIZED_FETCH' ) || \define( 'ACTIVITYPUB_AUTHORIZED_FETCH', false );
\defined( 'ACTIVITYPUB_DISABLE_REWRITES' ) || \define( 'ACTIVITYPUB_DISABLE_REWRITES', false );
\defined( 'ACTIVITYPUB_DEFAULT_TRANSFORMER' ) || \define( 'ACTIVITYPUB_DEFAULT_TRANSFORMER', 'activitypub/defualt' );
\defined( 'ACTIVITYPUB_DEFAULT_TRANSFORMER' ) || \define( 'ACTIVITYPUB_DEFAULT_TRANSFORMER', 'activitypub/default' );
\define( 'ACTIVITYPUB_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );

View file

@ -19,5 +19,5 @@ use Activitypub\Activity\Base_Object;
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-event
*/
class Note extends Base_Object {
protected $type = 'Event';
protected $type = 'Event';
}

View file

@ -19,5 +19,5 @@ use Activitypub\Activity\Base_Object;
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-note
*/
class Note extends Base_Object {
protected $type = 'Note';
protected $type = 'Note';
}

View file

@ -25,9 +25,13 @@ class Admin {
}
add_filter(
'activitypub/transformers/is_transformer_enabled', function( $should_register, Transformer_Base $widget_instance ) {
return ! Options::is_transformer_disabled( $transformer_instance->get_name() );
}, 10, 2 );
'activitypub/transformers/is_transformer_enabled',
function( $should_register, Transformer_Base $transformer_instance ) {
return ! Options::is_transformer_disabled( $transformer_instance->get_name() );
},
10,
2
);
}
/**
@ -187,7 +191,7 @@ class Admin {
),
'sanitize_callback' => function ( $value ) {
// Check if $value is an array
if (!is_array($value)) {
if ( ! is_array( $value ) ) {
return array();
}
$value_keys = array_keys( $value );
@ -196,12 +200,11 @@ class Admin {
// Unset the keys that are missing in $keysToCheck
foreach ( array_diff( $value_keys, $all_public_post_types ) as $missing_key ) {
unset($value[$missing_key]);
unset( $value[ $missing_key ] );
}
// var_dump($value);
return $value;
}
},
)
);
\register_setting(

View file

@ -41,9 +41,14 @@ class Webfinger {
* @return string|WP_Error The URL or WP_Error
*/
public static function resolve( $resource ) {
if ( ! $resource ) {
return null;
}
if ( ! preg_match( '/^@?' . ACTIVITYPUB_USERNAME_REGEXP . '$/i', $resource, $m ) ) {
return null;
}
$transient_key = 'activitypub_resolve_' . ltrim( $resource, '@' );
$link = \get_transient( $transient_key );

View file

@ -1,7 +1,7 @@
<?php
namespace Activitypub\Model;
use Activitypub\Transformer\Post;
use Activitypub\Transformer\Post as Transformer_Post;
/**
* ActivityPub Post Class
@ -34,7 +34,7 @@ class Post {
_deprecated_function( __CLASS__, '1.0.0', '\Activitypub\Transformer\Post' );
$this->post = $post;
$this->object = Post_Transformer->set_wp_post( $post )->to_object();
$this->object = Transformer_Post->set_wp_post( $post )->to_object();
}
/**

View file

@ -236,8 +236,12 @@ class Inbox {
$params['actor'] = array(
'required' => true,
'sanitize_callback' => function( $param, $request, $key ) {
if ( ! \is_string( $param ) ) {
$param = $param['id'];
if ( \is_array( $param ) ) {
if ( isset( $param['id'] ) ) {
$param = $param['id'];
} else {
$param = $param['url'];
}
}
return \esc_url_raw( $param );
},

View file

@ -59,7 +59,7 @@ class Outbox {
return $user;
}
$post_types = array_keys( \get_option( 'activitypub_transformer_mapping', array( 'post' => 'activitypub/default', 'page' => 'activitypub/default') ) );
$post_types = array_keys( \get_option( 'activitypub_transformer_mapping', array( 'post' => 'activitypub/default', 'page' => 'activitypub/default' ) ) );
$page = $request->get_param( 'page', 1 );

View file

@ -37,15 +37,20 @@ abstract class Base {
* @return void
*/
public function set_wp_post( WP_Post $wp_post ) {
if ( $this->supports_post_type( get_post_type( $wp_post ) ) ) {
$this->wp_post = $wp_post;
} else {
// TODO Error, this should not happen.
$post_type = get_post_type( $wp_post );
if ( ! $this->supports_post_type( $post_type ) ) {
_doing_it_wrong(
__METHOD__,
/* translators: %s: Block name. */
sprintf( 'The Transformer "%s" does not support the post type "%s".', esc_html( $this->get_label() ), esc_html( $post_type ) ),
'version_number_transformer_management_placeholder'
);
}
$this->wp_post = $wp_post;
}
/**
* Get the supported WP post_types that the transformer can use as an input.
* Get the supported WP post types that the transformer can use as an input.
*
* By default all post types are supported.
* You may very likely wish to override this function.
@ -74,7 +79,11 @@ abstract class Base {
$plugins_data = get_plugins( '/' . $plugin_directory );
$plugin_data = array_shift( $plugins_data );
return $plugin_data['Name'] ?? esc_html__( 'Unknown', 'activitypub' );
if ( isset( $plugin_data['Name'] ) ) {
return $plugin_data['Name'];
} else {
return esc_html__( 'Unknown', 'activitypub' );
}
}
/**

View file

@ -91,7 +91,7 @@ class Transformers_Manager {
return get_called_class();
}
/**
/**
* Transformers manager constructor.
*
* Initializing ActivityPub transformers manager.
@ -137,12 +137,16 @@ class Transformers_Manager {
*
* @return bool True if the ActivityPub transformer was registered.
*/
<<<<<<< HEAD
public function register( \ActivityPub\Transformer\Base $transformer_instance) {
=======
public function register( \ActivityPub\Transformer\Base $transformer_instance ) {
>>>>>>> ed1b6b7e77ed12f77fb1a9b4bf9f959509b55bf9
if ( ! $transformer_instance instanceof \ActivityPub\Transformer\Base ) {
_doing_it_wrong(
__METHOD__,
__( 'ActivityPub transformer instance must be a of \ActivityPub\Transformer_Base class.' ),
\esc_html__( 'ActivityPub transformer instance must be a of \ActivityPub\Transformer_Base class.' ),
'version_number_transformer_management_placeholder'
);
return false;
@ -152,7 +156,7 @@ class Transformers_Manager {
if ( preg_match( '/[A-Z]+/', $transformer_name ) ) {
_doing_it_wrong(
__METHOD__,
__( 'ActivityPub transformer names must not contain uppercase characters.' ),
\esc_html__( 'ActivityPub transformer names must not contain uppercase characters.' ),
'version_number_transformer_management_placeholder'
);
return false;
@ -162,7 +166,7 @@ class Transformers_Manager {
if ( ! preg_match( $name_matcher, $transformer_name ) ) {
_doing_it_wrong(
__METHOD__,
__( 'ActivityPub transformer names must contain a namespace prefix. Example: my-plugin/my-custom-transformer' ),
\esc_html__( 'ActivityPub transformer names must contain a namespace prefix. Example: my-plugin/my-custom-transformer' ),
'version_number_transformer_management_placeholder'
);
return false;
@ -172,7 +176,7 @@ class Transformers_Manager {
_doing_it_wrong(
__METHOD__,
/* translators: %s: Block name. */
sprintf( __( 'ActivityPub transformer with name "%s" is already registered.' ), $transformer_name ),
sprintf( 'ActivityPub transformer with name "%s" is already registered.', esc_html( $transformer_name ) ),
'version_number_transformer_management_placeholder'
);
return false;
@ -190,7 +194,7 @@ class Transformers_Manager {
// $should_register = apply_filters( 'activitypub/transformers/is_transformer_enabled', true, $transformer_instance );
// if ( ! $should_register ) {
// return false;
// return false;
// }
$this->transformers[ $transformer_name ] = $transformer_instance;
@ -209,7 +213,7 @@ class Transformers_Manager {
*/
private function init_transformers() {
$builtin_transformers = [
'post'
'post',
];
$this->transformers = [];
@ -233,7 +237,7 @@ class Transformers_Manager {
*
* @param Transformers_Manager $this The widgets manager.
*/
do_action( 'activitypub/transformers/register', $this );
do_action( 'activitypub_transformers_register', $this );
}
@ -270,7 +274,7 @@ class Transformers_Manager {
* @since version_number_transformer_management_placeholder
* @access public
*
* @param WP_Post|WP_Comment $wp_post The WordPress Post/Comment.
* @param WP_Post|WP_Comment $wp_post The WordPress Post/Comment.
*
* @return \ActivityPub\Transformer\Base|null Registered transformers.
*/
@ -290,4 +294,3 @@ class Transformers_Manager {
}
}
}

View file

@ -30,6 +30,10 @@ class Webfinger {
public static function add_user_discovery( $array, $resource, $user ) {
$user = User_Collection::get_by_id( $user->ID );
if ( ! $user || is_wp_error( $user ) ) {
return $array;
}
$array['links'][] = array(
'rel' => 'self',
'type' => 'application/activity+json',