PluginProbe
ActivityPub / 8.0.0
ActivityPub v8.0.0
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
activitypub / activitypub.php

activitypub.php in ActivityPub 8.0.0, at activitypub.php

171 lines 7.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: ActivityPub
4 * Plugin URI: https://github.com/Automattic/wordpress-activitypub
5 * Description: The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.
6 * Version: 8.0.0
7 * Author: Matthias Pfefferle & Automattic
8 * Author URI: https://automattic.com/
9 * License: MIT
10 * License URI: http://opensource.org/licenses/MIT
11 * Requires PHP: 7.4
12 * Text Domain: activitypub
13 * Domain Path: /languages
14 *
15 * @package Activitypub
16 */
17
18 namespace Activitypub;
19
20 \define( 'ACTIVITYPUB_PLUGIN_VERSION', '8.0.0' );
21
22 // Plugin related constants.
23 \define( 'ACTIVITYPUB_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
24 \define( 'ACTIVITYPUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
25 \define( 'ACTIVITYPUB_PLUGIN_FILE', ACTIVITYPUB_PLUGIN_DIR . basename( __FILE__ ) );
26 \define( 'ACTIVITYPUB_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
27
28 require_once __DIR__ . '/includes/class-autoloader.php';
29 require_once __DIR__ . '/includes/compat.php';
30 require_once __DIR__ . '/includes/constants.php';
31 require_once __DIR__ . '/includes/functions.php';
32 require_once __DIR__ . '/includes/functions-activity.php';
33 require_once __DIR__ . '/includes/functions-comment.php';
34 require_once __DIR__ . '/includes/functions-federation.php';
35 require_once __DIR__ . '/includes/functions-media.php';
36 require_once __DIR__ . '/includes/functions-post.php';
37 require_once __DIR__ . '/includes/functions-request.php';
38 require_once __DIR__ . '/includes/functions-url.php';
39 require_once __DIR__ . '/includes/functions-user.php';
40 require_once __DIR__ . '/integration/load.php';
41
42 Autoloader::register_path( __NAMESPACE__, __DIR__ . '/includes' );
43
44 \register_activation_hook( __FILE__, array( Activitypub::class, 'activate' ) );
45 \register_deactivation_hook( __FILE__, array( Activitypub::class, 'deactivate' ) );
46 \register_uninstall_hook( __FILE__, array( Activitypub::class, 'uninstall' ) );
47
48 /**
49 * Initialize REST routes.
50 */
51 function rest_init() {
52 Rest\Server::init();
53 ( new Rest\Actors_Controller() )->register_routes();
54 ( new Rest\Actors_Inbox_Controller() )->register_routes();
55 ( new Rest\Admin\Actions_Controller() )->register_routes();
56 ( new Rest\Application_Controller() )->register_routes();
57 ( new Rest\Collections_Controller() )->register_routes();
58 ( new Rest\Comments_Controller() )->register_routes();
59 ( new Rest\Followers_Controller() )->register_routes();
60 ( new Rest\Following_Controller() )->register_routes();
61 ( new Rest\Inbox_Controller() )->register_routes();
62 ( new Rest\Interaction_Controller() )->register_routes();
63 ( new Rest\Moderators_Controller() )->register_routes();
64 ( new Rest\Outbox_Controller() )->register_routes();
65 ( new Rest\Post_Controller() )->register_routes();
66 ( new Rest\Replies_Controller() )->register_routes();
67 ( new Rest\Webfinger_Controller() )->register_routes();
68
69 // Load NodeInfo endpoints only if blog is public.
70 if ( is_blog_public() ) {
71 ( new Rest\Nodeinfo_Controller() )->register_routes();
72 }
73 }
74 \add_action( 'rest_api_init', __NAMESPACE__ . '\rest_init' );
75
76 /**
77 * Initialize plugin.
78 */
79 function plugin_init() {
80 \add_action( 'init', array( __NAMESPACE__ . '\Activitypub', 'init' ) );
81 \add_action( 'init', array( __NAMESPACE__ . '\Avatars', 'init' ) );
82 \add_action( 'init', array( __NAMESPACE__ . '\Cache', 'init' ) );
83 \add_action( 'init', array( __NAMESPACE__ . '\Comment', 'init' ) );
84 \add_action( 'init', array( __NAMESPACE__ . '\Dispatcher', 'init' ) );
85 \add_action( 'init', array( __NAMESPACE__ . '\Embed', 'init' ) );
86 \add_action( 'init', array( __NAMESPACE__ . '\Handler', 'init' ) );
87 \add_action( 'init', array( __NAMESPACE__ . '\Hashtag', 'init' ) );
88 \add_action( 'init', array( __NAMESPACE__ . '\Link', 'init' ) );
89 \add_action( 'init', array( __NAMESPACE__ . '\Mailer', 'init' ) );
90 \add_action( 'init', array( __NAMESPACE__ . '\Mention', 'init' ) );
91 \add_action( 'init', array( __NAMESPACE__ . '\Migration', 'init' ), 1 );
92 \add_action( 'init', array( __NAMESPACE__ . '\Move', 'init' ) );
93 \add_action( 'init', array( __NAMESPACE__ . '\Options', 'init' ) );
94 \add_action( 'init', array( __NAMESPACE__ . '\Post_Types', 'init' ) );
95 \add_action( 'init', array( __NAMESPACE__ . '\Router', 'init' ) );
96 // Priority 0 ensures Scheduler hooks are registered before Migration (priority 1) runs.
97 \add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ), 0 );
98 \add_action( 'init', array( __NAMESPACE__ . '\Search', 'init' ) );
99 \add_action( 'init', array( __NAMESPACE__ . '\Signature', 'init' ) );
100
101 if ( site_supports_blocks() ) {
102 \add_action( 'init', array( __NAMESPACE__ . '\Blocks', 'init' ) );
103 }
104
105 // Only load relay if relay mode is enabled.
106 if ( \get_option( 'activitypub_relay_mode', false ) ) {
107 \add_action( 'init', array( __NAMESPACE__ . '\Relay', 'init' ) );
108 }
109
110 // Load development tools.
111 if ( 'local' === wp_get_environment_type() ) {
112 $loader_file = __DIR__ . '/local/load.php';
113 if ( \file_exists( $loader_file ) && \is_readable( $loader_file ) ) {
114 require_once $loader_file;
115 }
116 }
117
118 if ( \defined( 'WP_DEBUG' ) && WP_DEBUG ) {
119 $debug_file = __DIR__ . '/includes/debug.php';
120 if ( \file_exists( $debug_file ) && \is_readable( $debug_file ) ) {
121 require_once $debug_file;
122 Debug::init();
123 }
124 }
125 }
126 \add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_init' );
127
128 /**
129 * Initialize plugin admin.
130 */
131 function plugin_admin_init() {
132 // Screen Options and Menus are set before `admin_init`.
133 \add_action( 'init', array( __NAMESPACE__ . '\WP_Admin\Heartbeat', 'init' ), 9 ); // Before script loader.
134 \add_filter( 'init', array( __NAMESPACE__ . '\WP_Admin\Screen_Options', 'init' ) );
135 \add_action( 'init', array( __NAMESPACE__ . '\WP_Admin\Menu', 'init' ) );
136
137 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Admin', 'init' ) );
138 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Advanced_Settings_Fields', 'init' ) );
139 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\App', 'init' ), 0 ); // Before admin bar init.
140 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Blog_Settings_Fields', 'init' ) );
141 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Health_Check', 'init' ) );
142 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Settings', 'init' ) );
143 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Settings_Fields', 'init' ) );
144 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\User_Settings_Fields', 'init' ) );
145 \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Welcome_Fields', 'init' ) );
146
147 if ( defined( 'WP_LOAD_IMPORTERS' ) && WP_LOAD_IMPORTERS ) {
148 require_once __DIR__ . '/includes/wp-admin/import/load.php';
149 \add_action( 'admin_init', __NAMESPACE__ . '\WP_Admin\Import\load' );
150 }
151 }
152 \add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_admin_init' );
153
154 /**
155 * Redirect to the welcome page after plugin activation.
156 *
157 * @param string $plugin The plugin basename.
158 */
159 function activation_redirect( $plugin ) {
160 if ( ACTIVITYPUB_PLUGIN_BASENAME === $plugin ) {
161 \wp_safe_redirect( \admin_url( 'options-general.php?page=activitypub' ) );
162 exit;
163 }
164 }
165 \add_action( 'activated_plugin', __NAMESPACE__ . '\activation_redirect' );
166
167 // Check for CLI env, to add the CLI commands.
168 if ( defined( 'WP_CLI' ) && WP_CLI ) {
169 Cli::register();
170 }
171