PluginProbe
ActivityPub / 3.2.2
ActivityPub v3.2.2
9.3.1 9.3.0 9.2.2 9.2.1 9.2.0 9.1.0 9.0.2 9.0.1 9.0.0 8.3.0 8.2.1 8.2.0 8.1.1 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.2.0 1.3.0 2.0.0 2.0.1 2.1.0 2.1.1 All 160 releases
← All changes | integration/class-jetpack.php +10 -164 9.2.03.2.2 View file →
@@ -1,175 +1,21 @@
1 1 <?php
2 -/**
3 - * Jetpack integration file.
4 - *
5 - * @package Activitypub
6 - */
7 -
8 2 namespace Activitypub\Integration;
9 3
10 -use Activitypub\Collection\Followers;
11 -use Activitypub\Collection\Following;
12 -use Activitypub\Http;
13 -use Automattic\Jetpack\Connection\Manager;
14 -
15 -use function Activitypub\is_activity_object;
16 -
17 -/**
18 - * Jetpack integration class.
19 - */
20 4 class Jetpack {
21 5
22 - /**
23 - * Initialize the class, registering WordPress hooks.
24 - */
25 6 public static function init() {
26 - if ( ! \defined( 'IS_WPCOM' ) ) {
27 - \add_filter( 'jetpack_sync_options_whitelist', array( self::class, 'add_sync_options' ) );
28 - \add_filter( 'jetpack_sync_post_meta_whitelist', array( self::class, 'add_sync_meta' ) );
29 - \add_filter( 'jetpack_sync_comment_meta_whitelist', array( self::class, 'add_sync_comment_meta' ) );
30 - \add_filter( 'jetpack_sync_whitelisted_comment_types', array( self::class, 'add_comment_types' ) );
31 - \add_filter( 'jetpack_json_api_comment_types', array( self::class, 'add_comment_types' ) );
32 - \add_filter( 'jetpack_api_include_comment_types_count', array( self::class, 'add_comment_types' ) );
33 - }
34 -
35 - if (
36 - ( \defined( 'IS_WPCOM' ) && IS_WPCOM ) ||
37 - ( \class_exists( '\Automattic\Jetpack\Connection\Manager' ) && ( new Manager() )->is_user_connected() )
38 - ) {
39 - \add_filter( 'activitypub_following_row_actions', array( self::class, 'add_reader_link' ), 10, 2 );
40 - \add_filter( 'pre_option_activitypub_following_ui', array( self::class, 'pre_option_activitypub_following_ui' ) );
41 - }
42 -
43 - \add_action( 'load-post-new.php', array( self::class, 'adapt_post_share' ) );
7 + \add_filter( 'jetpack_sync_post_meta_whitelist', array( self::class, 'add_sync_meta' ) );
44 8 }
45 9
46 - /**
47 - * Add ActivityPub options to the Jetpack sync allow list.
48 - *
49 - * @since 8.1.0
50 - *
51 - * @param array $allow_list The Jetpack sync options allow list.
52 - *
53 - * @return array The allow list with ActivityPub options.
54 - */
55 - public static function add_sync_options( $allow_list ) {
56 - $allow_list[] = 'activitypub_blog_identifier';
57 - $allow_list[] = 'activitypub_blog_description';
58 - $allow_list[] = 'activitypub_header_image';
59 - $allow_list[] = 'activitypub_actor_mode';
60 -
61 - return $allow_list;
62 - }
63 -
64 - /**
65 - * Add ActivityPub meta keys to the Jetpack sync allow list.
66 - *
67 - * @param array $allow_list The Jetpack sync allow list.
68 - *
69 - * @return array The Jetpack sync allow list with ActivityPub meta keys.
70 - */
71 - public static function add_sync_meta( $allow_list ) {
72 - $allow_list[] = Followers::FOLLOWER_META_KEY;
73 - $allow_list[] = Following::FOLLOWING_META_KEY;
74 -
75 - return $allow_list;
76 - }
77 -
78 - /**
79 - * Add ActivityPub comment meta keys to the Jetpack sync allow list.
80 - *
81 - * @param array $allow_list The Jetpack sync allow list.
82 - *
83 - * @return array The Jetpack sync allow list with ActivityPub comment meta keys.
84 - */
85 - public static function add_sync_comment_meta( $allow_list ) {
86 - $allow_list[] = 'avatar_url';
87 -
88 - return $allow_list;
89 - }
90 -
91 - /**
92 - * Add custom comment types to the list of comment types.
93 - *
94 - * @param array $comment_types Default comment types.
95 - *
96 - * @return array The comment types with ActivityPub types added.
97 - */
98 - public static function add_comment_types( $comment_types ) {
99 - $comment_types[] = 'like';
100 - $comment_types[] = 'quote';
101 - $comment_types[] = 'repost';
102 -
103 - return \array_unique( $comment_types );
104 - }
105 -
106 - /**
107 - * Add a "Reader" link to the bulk actions dropdown on the following list screen.
108 - *
109 - * @param array $actions The bulk actions.
110 - * @param array $item The current following item.
111 - *
112 - * @return array The bulk actions with the "Reader" link.
113 - */
114 - public static function add_reader_link( $actions, $item ) {
115 - // Do not show the link for pending follow requests.
116 - if ( 'pending' === $item['status'] ) {
117 - return $actions;
10 + public static function add_sync_meta( $whitelist ) {
11 + if ( ! is_array( $whitelist ) ) {
12 + return $whitelist;
118 13 }
119 -
120 - $feed = \get_post_meta( $item['id'], '_activitypub_actor_feed', true );
121 -
122 - // Generate Reader URL based on environment.
123 - if ( \defined( 'IS_WPCOM' ) && IS_WPCOM ) {
124 - if ( empty( $feed['feed_id'] ) ) {
125 - return $actions; // No feed_id available on WPCOM.
126 - }
127 - $url = \sprintf( 'https://wordpress.com/reader/feeds/%d', (int) $feed['feed_id'] );
128 - } else {
129 - $url = \sprintf( 'https://wordpress.com/reader/feeds/lookup/%s', \rawurlencode( $item['identifier'] ) );
130 - }
131 -
132 - return \array_merge(
133 - array(
134 - 'reader' => \sprintf(
135 - '<a href="%1$s" target="_blank">%2$s<span class="screen-reader-text"> %3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>',
136 - \esc_url( $url ),
137 - \esc_html__( 'View Feed', 'activitypub' ),
138 - /* translators: Hidden accessibility text. */
139 - \esc_html__( '(opens in a new tab)', 'activitypub' )
140 - ),
141 - ),
142 - $actions
143 - );
144 - }
145 -
146 - /**
147 - * Force the ActivityPub Following UI to be enabled when Jetpack is active.
148 - *
149 - * @return string '1' to enable the ActivityPub Following UI.
150 - */
151 - public static function pre_option_activitypub_following_ui() {
152 - return '1';
153 - }
154 -
155 - /**
156 - * Adapt the parameters for a post share request to be compatible with the Federated Reply block.
157 - */
158 - public static function adapt_post_share() {
159 - if ( ! isset( $_GET['is_post_share'], $_GET['url'] ) || ! $_GET['is_post_share'] ) { // phpcs:ignore WordPress.Security
160 - return;
161 - }
162 -
163 - $url = \sanitize_url( \wp_unslash( $_GET['url'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
164 -
165 - if ( is_activity_object( Http::get_remote_object( $url ) ) ) {
166 - $args = array(
167 - 'post_type' => 'post',
168 - 'in_reply_to' => $url,
169 - );
170 -
171 - \wp_safe_redirect( \add_query_arg( $args, \admin_url( 'post-new.php' ) ) );
172 - exit;
173 - }
14 + $activitypub_meta_keys = [
15 + 'activitypub_user_id',
16 + 'activitypub_inbox',
17 + 'activitypub_actor_json',
18 + ];
19 + return \array_merge( $whitelist, $activitypub_meta_keys );
174 20 }
175 21 }