PluginProbe
ActivityPub / 0.1.1
ActivityPub v0.1.1
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 0.1.1, at activitypub.php

94 lines 4.4 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/pfefferle/wordpress-activitypub/
5 * Description: The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.
6 * Version: 0.1.1
7 * Author: Matthias Pfefferle
8 * Author URI: https://notiz.blog/
9 * License: MIT
10 * License URI: http://opensource.org/licenses/MIT
11 * Text Domain: activitypub
12 * Domain Path: /languages
13 */
14
15 /**
16 * Initialize plugin
17 */
18 function activitypub_init() {
19 require_once dirname( __FILE__ ) . '/includes/class-activitypub-signature.php';
20 require_once dirname( __FILE__ ) . '/includes/class-activitypub-post.php';
21 require_once dirname( __FILE__ ) . '/includes/class-activitypub-activity.php';
22 require_once dirname( __FILE__ ) . '/includes/class-db-activitypub-followers.php';
23 require_once dirname( __FILE__ ) . '/includes/functions.php';
24
25 require_once dirname( __FILE__ ) . '/includes/class-activitypub.php';
26 add_filter( 'template_include', array( 'Activitypub', 'render_json_template' ), 99 );
27 add_filter( 'query_vars', array( 'Activitypub', 'add_query_vars' ) );
28 add_action( 'init', array( 'Activitypub', 'add_rewrite_endpoint' ) );
29
30 // Configure the REST API route
31 require_once dirname( __FILE__ ) . '/includes/class-rest-activitypub-outbox.php';
32 add_action( 'rest_api_init', array( 'Rest_Activitypub_Outbox', 'register_routes' ) );
33 add_action( 'activitypub_send_post_activity', array( 'Rest_Activitypub_Outbox', 'send_post_activity' ) );
34
35 require_once dirname( __FILE__ ) . '/includes/class-rest-activitypub-inbox.php';
36 add_action( 'rest_api_init', array( 'Rest_Activitypub_Inbox', 'register_routes' ) );
37 //add_filter( 'rest_pre_serve_request', array( 'Rest_Activitypub_Inbox', 'serve_request' ), 11, 4 );
38 add_action( 'activitypub_inbox_follow', array( 'Rest_Activitypub_Inbox', 'handle_follow' ), 10, 2 );
39 add_action( 'activitypub_inbox_unfollow', array( 'Rest_Activitypub_Inbox', 'handle_unfollow' ), 10, 2 );
40 add_action( 'activitypub_inbox_like', array( 'Rest_Activitypub_Inbox', 'handle_reaction' ), 10, 2 );
41 add_action( 'activitypub_inbox_announce', array( 'Rest_Activitypub_Inbox', 'handle_reaction' ), 10, 2 );
42 add_action( 'activitypub_inbox_create', array( 'Rest_Activitypub_Inbox', 'handle_create' ), 10, 2 );
43
44 require_once dirname( __FILE__ ) . '/includes/class-rest-activitypub-followers.php';
45 add_action( 'rest_api_init', array( 'Rest_Activitypub_Followers', 'register_routes' ) );
46
47 require_once dirname( __FILE__ ) . '/includes/class-rest-activitypub-webfinger.php';
48 add_action( 'rest_api_init', array( 'Rest_Activitypub_Webfinger', 'register_routes' ) );
49 add_action( 'webfinger_user_data', array( 'Rest_Activitypub_Webfinger', 'add_webfinger_discovery' ), 10, 3 );
50
51 require_once dirname( __FILE__ ) . '/includes/class-rest-activitypub-nodeinfo.php';
52 add_action( 'rest_api_init', array( 'Rest_Activitypub_Nodeinfo', 'register_routes' ) );
53 add_filter( 'nodeinfo_data', array( 'Rest_Activitypub_Nodeinfo', 'add_nodeinfo_discovery' ), 10, 2 );
54 add_filter( 'nodeinfo2_data', array( 'Rest_Activitypub_Nodeinfo', 'add_nodeinfo2_discovery' ), 10 );
55
56 add_post_type_support( 'post', 'activitypub' );
57 add_post_type_support( 'page', 'activitypub' );
58
59 $post_types = get_post_types_by_support( 'activitypub' );
60 foreach ( $post_types as $post_type ) {
61 add_action( 'publish_' . $post_type, array( 'Activitypub', 'schedule_post_activity' ) );
62 }
63
64 require_once dirname( __FILE__ ) . '/includes/class-activitypub-admin.php';
65 add_action( 'admin_menu', array( 'Activitypub_Admin', 'admin_menu' ) );
66 add_action( 'admin_init', array( 'Activitypub_Admin', 'register_settings' ) );
67 }
68 add_action( 'plugins_loaded', 'activitypub_init' );
69
70 /**
71 * Add rewrite rules
72 */
73 function activitypub_add_rewrite_rules() {
74 if ( ! class_exists( 'Webfinger' ) ) {
75 add_rewrite_rule( '^.well-known/webfinger', 'index.php?rest_route=/activitypub/1.0/webfinger', 'top' );
76 }
77
78 if ( ! class_exists( 'Nodeinfo' ) ) {
79 add_rewrite_rule( '^.well-known/nodeinfo', 'index.php?rest_route=/activitypub/1.0/nodeinfo/discovery', 'top' );
80 add_rewrite_rule( '^.well-known/x-nodeinfo2', 'index.php?rest_route=/activitypub/1.0/nodeinfo2', 'top' );
81 }
82 }
83 add_action( 'init', 'activitypub_add_rewrite_rules', 1 );
84
85 /**
86 * Flush rewrite rules;
87 */
88 function activitypub_flush_rewrite_rules() {
89 activitypub_add_rewrite_rules();
90 flush_rewrite_rules();
91 }
92 register_activation_hook( __FILE__, 'activitypub_flush_rewrite_rules' );
93 register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );
94