PluginProbe
ActivityPub / 3.2.4
ActivityPub v3.2.4
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-nodeinfo.php +25 -87 8.2.03.2.4 View file →
@@ -1,99 +1,58 @@
1 1 <?php
2 -/**
3 - * NodeInfo integration file.
4 - *
5 - * @package Activitypub
6 - */
7 -
8 2 namespace Activitypub\Integration;
9 3
10 -use Activitypub\Webfinger;
11 -
4 +use function Activitypub\get_total_users;
12 5 use function Activitypub\get_active_users;
13 6 use function Activitypub\get_rest_url_by_path;
14 -use function Activitypub\get_total_users;
15 7
16 8 /**
17 - * Compatibility with the NodeInfo plugin.
9 + * Compatibility with the NodeInfo plugin
18 10 *
19 11 * @see https://wordpress.org/plugins/nodeinfo/
20 12 */
21 13 class Nodeinfo {
22 14 /**
23 - * Initialize the class, registering WordPress hooks.
15 + * Initialize the class, registering WordPress hooks
24 16 */
25 17 public static function init() {
26 18 \add_filter( 'nodeinfo_data', array( self::class, 'add_nodeinfo_data' ), 10, 2 );
27 - \add_filter( 'nodeinfo2_data', array( self::class, 'add_nodeinfo2_data' ) );
19 + \add_filter( 'nodeinfo2_data', array( self::class, 'add_nodeinfo2_data' ), 10 );
28 20
29 - \add_filter( 'wellknown_nodeinfo_data', array( self::class, 'add_wellknown_nodeinfo_data' ) );
21 + \add_filter( 'wellknown_nodeinfo_data', array( self::class, 'add_wellknown_nodeinfo_data' ), 10, 2 );
30 22 }
31 23
32 24 /**
33 - * Extend NodeInfo data.
25 + * Extend NodeInfo data
34 26 *
35 - * @param array $nodeinfo NodeInfo data.
36 - * @param string $version The NodeInfo Version.
27 + * @param array $nodeinfo NodeInfo data
28 + * @param string The NodeInfo Version
37 29 *
38 - * @return array The extended array.
30 + * @return array The extended array
39 31 */
40 32 public static function add_nodeinfo_data( $nodeinfo, $version ) {
41 - $nodeinfo = wp_parse_args(
42 - $nodeinfo,
43 - array(
44 - 'version' => $version,
45 - 'software' => array(),
46 - 'usage' => array(
47 - 'users' => array(
48 - 'total' => 0,
49 - 'activeMonth' => 0,
50 - 'activeHalfyear' => 0,
51 - ),
52 - ),
53 - 'protocols' => array(),
54 - 'services' => array(
55 - 'inbound' => array(),
56 - 'outbound' => array(),
57 - ),
58 - 'metadata' => array(),
59 - )
60 - );
61 -
62 - if ( \version_compare( $version, '2.1', '>=' ) ) {
63 - $nodeinfo['software']['homepage'] = 'https://wordpress.org/plugins/activitypub/';
64 - $nodeinfo['software']['repository'] = 'https://github.com/Automattic/wordpress-activitypub';
33 + if ( $version >= '2.0' ) {
34 + $nodeinfo['protocols'][] = 'activitypub';
35 + } else {
36 + $nodeinfo['protocols']['inbound'][] = 'activitypub';
37 + $nodeinfo['protocols']['outbound'][] = 'activitypub';
65 38 }
66 39
67 - $nodeinfo['protocols'][] = 'activitypub';
68 -
69 - $nodeinfo['services']['inbound'] = array_merge(
70 - $nodeinfo['services']['inbound'],
71 - array( 'gnusocial' )
72 - );
73 - $nodeinfo['services']['outbound'] = array_merge(
74 - $nodeinfo['services']['outbound'],
75 - array( 'friendica', 'gnusocial', 'mediagoblin', 'wordpress' )
76 - );
77 -
78 40 $nodeinfo['usage']['users'] = array(
79 41 'total' => get_total_users(),
80 - 'activeMonth' => get_active_users(),
81 - 'activeHalfyear' => get_active_users( 6 ),
42 + 'activeMonth' => get_active_users( '1 month ago' ),
43 + 'activeHalfyear' => get_active_users( '6 month ago' ),
82 44 );
83 45
84 - $nodeinfo['metadata']['federation'] = array( 'enabled' => true );
85 - $nodeinfo['metadata']['staffAccounts'] = self::get_staff();
86 -
87 46 return $nodeinfo;
88 47 }
89 48
90 49 /**
91 - * Extend NodeInfo2 data.
50 + * Extend NodeInfo2 data
92 51 *
93 - * @param array $nodeinfo NodeInfo2 data.
52 + * @param array $nodeinfo NodeInfo2 data
94 53 *
95 - * @return array The extended array.
54 + * @return array The extended array
96 55 */
97 56 public static function add_nodeinfo2_data( $nodeinfo ) {
98 57 $nodeinfo['protocols'][] = 'activitypub';
99 58
@@ -98,10 +57,10 @@
98 57 $nodeinfo['protocols'][] = 'activitypub';
99 58
100 59 $nodeinfo['usage']['users'] = array(
101 60 'total' => get_total_users(),
102 - 'activeMonth' => get_active_users(),
103 - 'activeHalfyear' => get_active_users( 6 ),
61 + 'activeMonth' => get_active_users( '1 month ago' ),
62 + 'activeHalfyear' => get_active_users( '6 month ago' ),
104 63 );
105 64
106 65 return $nodeinfo;
107 66 }
@@ -106,40 +65,19 @@
106 65 return $nodeinfo;
107 66 }
108 67
109 68 /**
110 - * Extend the well-known nodeinfo data.
69 + * Extend the well-known nodeinfo data
111 70 *
112 - * @param array $data The well-known nodeinfo data.
71 + * @param array $data The well-known nodeinfo data
113 72 *
114 - * @return array The extended array.
73 + * @return array The extended array
115 74 */
116 75 public static function add_wellknown_nodeinfo_data( $data ) {
117 76 $data['links'][] = array(
118 - 'rel' => 'https://www.w3.org/ns/activitystreams#Application',
77 + 'rel' => 'https://www.w3.org/ns/activitystreams#Application',
119 78 'href' => get_rest_url_by_path( 'application' ),
120 79 );
121 80
122 81 return $data;
123 - }
124 -
125 - /**
126 - * Get all staff accounts (admin users with the "activitypub" capability) and return them in WebFinger resource format.
127 - *
128 - * @return array List of staff accounts in WebFinger resource format.
129 - */
130 - private static function get_staff() {
131 - // Get all admin users with the cap activitypub.
132 - $admins = get_users(
133 - array(
134 - 'role' => 'administrator',
135 - 'orderby' => 'ID',
136 - 'order' => 'ASC',
137 - 'cap' => 'activitypub',
138 - 'fields' => 'ID',
139 - )
140 - );
141 - $admins = array_map( array( Webfinger::class, 'get_user_resource' ), $admins );
142 -
143 - return array_values( array_filter( $admins ) );
144 82 }
145 83 }