PluginProbe
ActivityPub / 3.2.5
ActivityPub v3.2.5
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 | activitypub.php +36 -25 2.1.13.2.5 View file →
@@ -2,14 +2,14 @@
2 2 /**
3 3 * Plugin Name: ActivityPub
4 4 * Plugin URI: https://github.com/pfefferle/wordpress-activitypub/
5 5 * Description: The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.
6 - * Version: 2.1.1
6 + * Version: 3.2.5
7 7 * Author: Matthias Pfefferle & Automattic
8 8 * Author URI: https://automattic.com/
9 9 * License: MIT
10 10 * License URI: http://opensource.org/licenses/MIT
11 - * Requires PHP: 5.6
11 + * Requires PHP: 7.0
12 12 * Text Domain: activitypub
13 13 * Domain Path: /languages
14 14 */
15 15
@@ -14,8 +14,10 @@
14 14 */
15 15
16 16 namespace Activitypub;
17 17
18 +use WP_CLI;
19 +
18 20 use function Activitypub\is_blog_public;
19 21 use function Activitypub\site_supports_blocks;
20 22
21 23 require_once __DIR__ . '/includes/compat.php';
@@ -20,8 +22,10 @@
20 22
21 23 require_once __DIR__ . '/includes/compat.php';
22 24 require_once __DIR__ . '/includes/functions.php';
23 25
26 +\define( 'ACTIVITYPUB_PLUGIN_VERSION', '3.2.5' );
27 +
24 28 /**
25 29 * Initialize the plugin constants.
26 30 */
27 31 \defined( 'ACTIVITYPUB_REST_NAMESPACE' ) || \define( 'ACTIVITYPUB_REST_NAMESPACE', 'activitypub/1.0' );
@@ -29,15 +33,19 @@
29 33 \defined( 'ACTIVITYPUB_SHOW_PLUGIN_RECOMMENDATIONS' ) || \define( 'ACTIVITYPUB_SHOW_PLUGIN_RECOMMENDATIONS', true );
30 34 \defined( 'ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS' ) || \define( 'ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS', 3 );
31 35 \defined( 'ACTIVITYPUB_HASHTAGS_REGEXP' ) || \define( 'ACTIVITYPUB_HASHTAGS_REGEXP', '(?:(?<=\s)|(?<=<p>)|(?<=<br>)|^)#([A-Za-z0-9_]+)(?:(?=\s|[[:punct:]]|$))' );
32 36 \defined( 'ACTIVITYPUB_USERNAME_REGEXP' ) || \define( 'ACTIVITYPUB_USERNAME_REGEXP', '(?:([A-Za-z0-9\._-]+)@((?:[A-Za-z0-9_-]+\.)+[A-Za-z]+))' );
33 -\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]" );
37 +\defined( 'ACTIVITYPUB_URL_REGEXP' ) || \define( 'ACTIVITYPUB_URL_REGEXP', '(www.|http:|https:)+[^\s]+[\w\/]' );
38 +\defined( 'ACTIVITYPUB_CUSTOM_POST_CONTENT' ) || \define( 'ACTIVITYPUB_CUSTOM_POST_CONTENT', "<h2>[ap_title]</h2>\n\n[ap_content]\n\n[ap_hashtags]\n\n[ap_shortlink]" );
34 39 \defined( 'ACTIVITYPUB_AUTHORIZED_FETCH' ) || \define( 'ACTIVITYPUB_AUTHORIZED_FETCH', false );
35 40 \defined( 'ACTIVITYPUB_DISABLE_REWRITES' ) || \define( 'ACTIVITYPUB_DISABLE_REWRITES', false );
36 41 \defined( 'ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS' ) || \define( 'ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS', false );
42 +// Disable reactions like `Like` and `Accounce` by default
43 +\defined( 'ACTIVITYPUB_DISABLE_REACTIONS' ) || \define( 'ACTIVITYPUB_DISABLE_REACTIONS', true );
37 44 \defined( 'ACTIVITYPUB_DISABLE_OUTGOING_INTERACTIONS' ) || \define( 'ACTIVITYPUB_DISABLE_OUTGOING_INTERACTIONS', false );
38 45 \defined( 'ACTIVITYPUB_SHARED_INBOX_FEATURE' ) || \define( 'ACTIVITYPUB_SHARED_INBOX_FEATURE', false );
39 46 \defined( 'ACTIVITYPUB_SEND_VARY_HEADER' ) || \define( 'ACTIVITYPUB_SEND_VARY_HEADER', false );
47 +\defined( 'ACTIVITYPUB_DEFAULT_OBJECT_TYPE' ) || \define( 'ACTIVITYPUB_DEFAULT_OBJECT_TYPE', 'note' );
40 48
41 49 \define( 'ACTIVITYPUB_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
42 50 \define( 'ACTIVITYPUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
43 51 \define( 'ACTIVITYPUB_PLUGIN_FILE', plugin_dir_path( __FILE__ ) . '/' . basename( __FILE__ ) );
@@ -46,16 +54,18 @@
46 54 /**
47 55 * Initialize REST routes.
48 56 */
49 57 function rest_init() {
50 - Rest\Users::init();
58 + Rest\Actors::init();
51 59 Rest\Outbox::init();
52 60 Rest\Inbox::init();
53 61 Rest\Followers::init();
54 62 Rest\Following::init();
55 63 Rest\Webfinger::init();
64 + Rest\Comment::init();
56 65 Rest\Server::init();
57 66 Rest\Collection::init();
67 + Rest\Interaction::init();
58 68
59 69 // load NodeInfo endpoints only if blog is public
60 70 if ( is_blog_public() ) {
61 71 Rest\NodeInfo::init();
@@ -76,8 +86,9 @@
76 86 \add_action( 'init', array( __NAMESPACE__ . '\Mention', 'init' ) );
77 87 \add_action( 'init', array( __NAMESPACE__ . '\Health_Check', 'init' ) );
78 88 \add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) );
79 89 \add_action( 'init', array( __NAMESPACE__ . '\Comment', 'init' ) );
90 + \add_action( 'init', array( __NAMESPACE__ . '\Link', 'init' ) );
80 91
81 92 if ( site_supports_blocks() ) {
82 93 \add_action( 'init', array( __NAMESPACE__ . '\Blocks', 'init' ) );
83 94 }
@@ -86,20 +97,12 @@
86 97 if ( \WP_DEBUG && file_exists( $debug_file ) && is_readable( $debug_file ) ) {
87 98 require_once $debug_file;
88 99 Debug::init();
89 100 }
90 -
91 - require_once __DIR__ . '/integration/class-webfinger.php';
92 - Integration\Webfinger::init();
93 -
94 - require_once __DIR__ . '/integration/class-nodeinfo.php';
95 - Integration\Nodeinfo::init();
96 -
97 - require_once __DIR__ . '/integration/class-enable-mastodon-apps.php';
98 - Integration\Enable_Mastodon_Apps::init();
99 101 }
100 102 \add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_init' );
101 103
104 +
102 105 /**
103 106 * Class Autoloader
104 107 */
105 108 \spl_autoload_register(
@@ -128,9 +131,11 @@
128 131 if ( file_exists( $file ) && is_readable( $file ) ) {
129 132 require_once $file;
130 133 } else {
131 134 // translators: %s is the class name
132 - \wp_die( sprintf( esc_html__( 'Required class not found or not readable: %s', 'activitypub' ), esc_html( $full_class ) ) );
135 + $message = sprintf( esc_html__( 'Required class not found or not readable: %s', 'activitypub' ), esc_html( $full_class ) );
136 + Debug::write_log( $message );
137 + \wp_die( $message ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
133 138 }
134 139 }
135 140 }
136 141 );
@@ -173,19 +178,10 @@
173 178 'uninstall',
174 179 )
175 180 );
176 181
177 -/**
178 - * Only load code that needs BuddyPress to run once BP is loaded and initialized.
179 - */
180 -add_action(
181 - 'bp_include',
182 - function () {
183 - require_once __DIR__ . '/integration/class-buddypress.php';
184 - Integration\Buddypress::init();
185 - },
186 - 0
187 -);
182 +// Load integrations
183 +require_once __DIR__ . '/integration/load.php';
188 184
189 185 /**
190 186 * `get_plugin_data` wrapper
191 187 *
@@ -215,8 +211,23 @@
215 211 /**
216 212 * Plugin Version Number used for caching.
217 213 */
218 214 function get_plugin_version() {
215 + if ( \defined( 'ACTIVITYPUB_PLUGIN_VERSION' ) ) {
216 + return ACTIVITYPUB_PLUGIN_VERSION;
217 + }
218 +
219 219 $meta = get_plugin_meta( array( 'Version' => 'Version' ) );
220 220
221 221 return $meta['Version'];
222 +}
223 +
224 +// Check for CLI env, to add the CLI commands
225 +if ( defined( 'WP_CLI' ) && WP_CLI ) {
226 + WP_CLI::add_command(
227 + 'activitypub',
228 + '\Activitypub\Cli',
229 + array(
230 + 'shortdesc' => __( 'ActivityPub related commands: Meta-Infos, Delete and soon Self-Destruct.', 'activitypub' ),
231 + )
232 + );
222 233 }