From 60148a3b652918772aa3e72d0c1a0a45659273f2 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Tue, 21 Nov 2023 14:57:44 +0100 Subject: [PATCH 1/4] check if user is available --- integration/class-webfinger.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/integration/class-webfinger.php b/integration/class-webfinger.php index 177b417..c9dd565 100644 --- a/integration/class-webfinger.php +++ b/integration/class-webfinger.php @@ -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', From d00e5a03c8e768f6db1f7342851fde5c64bff8dc Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Tue, 21 Nov 2023 15:00:39 +0100 Subject: [PATCH 2/4] check if $resource is set --- includes/class-webfinger.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/class-webfinger.php b/includes/class-webfinger.php index b6b0a64..75f7ff6 100644 --- a/includes/class-webfinger.php +++ b/includes/class-webfinger.php @@ -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 ); From 1af821621b749146ecb86b18291126f9d261049b Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Tue, 21 Nov 2023 15:05:12 +0100 Subject: [PATCH 3/4] check if ID is set fallback to URL --- includes/rest/class-inbox.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/includes/rest/class-inbox.php b/includes/rest/class-inbox.php index 2cedf15..2b406ea 100644 --- a/includes/rest/class-inbox.php +++ b/includes/rest/class-inbox.php @@ -123,6 +123,7 @@ class Inbox { * @return WP_REST_Response */ public static function user_inbox_post( $request ) { + var_dump( $request->get_params() ); $user_id = $request->get_param( 'user_id' ); $user = User_Collection::get_by_various( $user_id ); @@ -236,8 +237,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 ); }, From ba44ac701bc78727f22f8281d221a83f5ea25363 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Tue, 21 Nov 2023 15:05:47 +0100 Subject: [PATCH 4/4] remove var_dump --- includes/rest/class-inbox.php | 1 - 1 file changed, 1 deletion(-) diff --git a/includes/rest/class-inbox.php b/includes/rest/class-inbox.php index 2b406ea..15fb4b2 100644 --- a/includes/rest/class-inbox.php +++ b/includes/rest/class-inbox.php @@ -123,7 +123,6 @@ class Inbox { * @return WP_REST_Response */ public static function user_inbox_post( $request ) { - var_dump( $request->get_params() ); $user_id = $request->get_param( 'user_id' ); $user = User_Collection::get_by_various( $user_id );