PluginProbe
Friends / 4.3.2
Friends v4.3.2
4.3.2 4.3.1 4.3.0 4.2.2 4.2.1 4.2.0 4.1.0 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.0 2.9.1 All 88 releases
← All changes | friends.php +72 -22 2.7.64.3.2 View file →
@@ -1,12 +1,14 @@
1 1 <?php
2 2 /**
3 3 * Plugin name: Friends
4 - * Plugin author: Alex Kirk
5 4 * Plugin URI: https://github.com/akirk/friends
6 - * Version: 2.7.6
5 + * Version: 4.3.2
6 + * Author: Alex Kirk
7 + * Author URI: https://alex.kirk.at/
8 + * Requires PHP: 7.4
7 9 *
8 - * Description: A social network between WordPresses. Privacy focused, by itself a self-hosted RSS++ reader with notifications.
10 + * Description: A self-hosted social reader for WordPress: follow people via RSS and ActivityPub, with multiple themes and a plugin ecosystem.
9 11 *
10 12 * License: GPL2
11 13 * Text Domain: friends
12 14 * Domain Path: /languages/
@@ -23,16 +25,16 @@
23 25 defined( 'ABSPATH' ) || exit;
24 26 define( 'FRIENDS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
25 27 define( 'FRIENDS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
26 28 define( 'FRIENDS_PLUGIN_FILE', plugin_dir_path( __FILE__ ) . '/' . basename( __FILE__ ) );
27 -define( 'FRIENDS_VERSION', '2.7.6' );
29 +define( 'FRIENDS_VERSION', '4.3.2' );
28 30
29 31 require_once __DIR__ . '/libs/Mf2/Parser.php';
30 -require_once __DIR__ . '/libs/blocks-everywhere/blocks-everywhere.php';
31 32
32 33 require_once __DIR__ . '/includes/class-user.php';
33 34 require_once __DIR__ . '/includes/class-user-feed.php';
34 35 require_once __DIR__ . '/includes/class-user-query.php';
36 +require_once __DIR__ . '/includes/class-user-query-result.php';
35 37 require_once __DIR__ . '/includes/class-subscription.php';
36 38
37 39 // Classes to be implemented or used by parser plugins.
38 40 require_once __DIR__ . '/feed-parsers/class-feed-parser.php';
@@ -38,28 +40,35 @@
38 40 require_once __DIR__ . '/feed-parsers/class-feed-parser.php';
39 41 require_once __DIR__ . '/feed-parsers/class-feed-parser-v2.php';
40 42 require_once __DIR__ . '/feed-parsers/class-feed-item.php';
41 43
42 -require_once __DIR__ . '/includes/class-access-control.php';
43 44 require_once __DIR__ . '/includes/class-admin.php';
44 -require_once __DIR__ . '/includes/class-automatic-status.php';
45 +require_once __DIR__ . '/includes/class-abilities.php';
45 46 require_once __DIR__ . '/includes/class-blocks.php';
46 47 require_once __DIR__ . '/includes/class-feed.php';
47 48 require_once __DIR__ . '/includes/class-frontend.php';
49 +require_once __DIR__ . '/includes/class-import.php';
50 +require_once __DIR__ . '/includes/class-link-preview.php';
48 51 require_once __DIR__ . '/includes/class-logging.php';
49 52 require_once __DIR__ . '/includes/class-messages.php';
53 +require_once __DIR__ . '/includes/class-migration.php';
50 54 require_once __DIR__ . '/includes/class-notifications.php';
51 -require_once __DIR__ . '/includes/class-plugin-installer.php';
52 55 require_once __DIR__ . '/includes/class-reactions.php';
53 56 require_once __DIR__ . '/includes/class-rest.php';
57 +require_once __DIR__ . '/includes/class-site-health.php';
54 58 require_once __DIR__ . '/includes/class-shortcodes.php';
55 59 require_once __DIR__ . '/includes/class-template-loader.php';
56 60 require_once __DIR__ . '/includes/class-third-parties.php';
61 +require_once __DIR__ . '/includes/class-friend-tag.php';
57 62 require_once __DIR__ . '/includes/class-friends.php';
58 63
59 64 add_action( 'plugins_loaded', array( __NAMESPACE__ . '\Friends', 'init' ) );
60 -add_action( 'admin_init', array( __NAMESPACE__ . '\Plugin_Installer', 'register_hooks' ) );
61 -add_action( 'upgrader_process_complete', array( __NAMESPACE__ . '\Friends', 'upgrade_plugin' ), 10, 2 );
65 +
66 +if ( is_admin() && version_compare( get_option( 'friends_plugin_version' ), FRIENDS_VERSION, '<' ) ) {
67 + add_action( 'admin_init', array( __NAMESPACE__ . '\Friends', 'upgrade_plugin' ) );
68 +}
69 +
70 +add_action( 'upgrader_process_complete', array( __NAMESPACE__ . '\Friends', 'upgrade_plugin_trigger' ), 10, 2 );
62 71 register_activation_hook( __FILE__, array( __NAMESPACE__ . '\Friends', 'activate_plugin' ) );
63 72 register_deactivation_hook( __FILE__, array( __NAMESPACE__ . '\Friends', 'deactivate_plugin' ) );
64 73 register_uninstall_hook( __FILE__, array( __NAMESPACE__ . '\Friends', 'uninstall_plugin' ) );
65 74
@@ -66,9 +75,14 @@
66 75 add_action( 'activate_blog', array( __NAMESPACE__ . '\Friends', 'activate_plugin' ) );
67 76 add_action( 'wp_initialize_site', array( __NAMESPACE__ . '\Friends', 'activate_for_blog' ) );
68 77
69 78 // Register widgets.
79 +add_filter( 'customize_loaded_components', array( __NAMESPACE__ . '\Frontend', 'ensure_widget_editing' ) );
80 +
70 81 require_once __DIR__ . '/widgets/class-widget-base-friends-list.php';
82 +require_once __DIR__ . '/widgets/class-widget-add-subscription.php';
83 +add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_Add_Subscription', 'register' ) );
84 +
71 85 require_once __DIR__ . '/widgets/class-widget-refresh.php';
72 86 add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_Refresh', 'register' ) );
73 87
74 88 require_once __DIR__ . '/widgets/class-widget-friends-list.php';
@@ -79,14 +93,11 @@
79 93
80 94 require_once __DIR__ . '/widgets/class-widget-recent-friends-list.php';
81 95 add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_Recent_Friends_List', 'register' ) );
82 96
83 -require_once __DIR__ . '/widgets/class-widget-friend-request.php';
84 -add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_Friend_Request', 'register' ) );
97 +require_once __DIR__ . '/widgets/class-widget-friend-stats.php';
98 +add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_Friend_Stats', 'register' ) );
85 99
86 -require_once __DIR__ . '/widgets/class-widget-new-private-post.php';
87 -add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_New_Private_Post', 'register' ) );
88 -
89 100 require_once __DIR__ . '/widgets/class-widget-post-formats.php';
90 101 add_action( 'widgets_init', array( __NAMESPACE__ . '\Widget_Post_Formats', 'register' ) );
91 102
92 103 require_once __DIR__ . '/widgets/class-widget-header.php';
@@ -94,11 +105,11 @@
94 105
95 106 // Register bundled parsers.
96 107 add_action(
97 108 'friends_load_parsers',
98 - function( Feed $friends_feed ) {
109 + function ( Feed $friends_feed ) {
99 110 require_once __DIR__ . '/feed-parsers/class-feed-parser-simplepie.php';
100 - $friends_feed->register_parser( Feed_Parser_SimplePie::SLUG, new Feed_Parser_SimplePie );
111 + $friends_feed->register_parser( Feed_Parser_SimplePie::SLUG, new Feed_Parser_SimplePie( $friends_feed ) );
101 112 },
102 113 9
103 114 );
104 115
@@ -103,11 +114,11 @@
103 114 );
104 115
105 116 add_action(
106 117 'friends_load_parsers',
107 - function( Feed $friends_feed ) {
118 + function ( Feed $friends_feed ) {
108 119 require_once __DIR__ . '/feed-parsers/class-feed-parser-microformats.php';
109 - $friends_feed->register_parser( Feed_Parser_Microformats::SLUG, new Feed_Parser_Microformats );
120 + $friends_feed->register_parser( Feed_Parser_Microformats::SLUG, new Feed_Parser_Microformats() );
110 121 },
111 122 9
112 123 );
113 124
@@ -112,11 +123,11 @@
112 123 );
113 124
114 125 add_action(
115 126 'friends_load_parsers',
116 - function( Feed $friends_feed ) {
127 + function ( Feed $friends_feed ) {
117 128 require_once __DIR__ . '/feed-parsers/class-feed-parser-json-feed.php';
118 - $friends_feed->register_parser( Feed_Parser_JSON_Feed::SLUG, new Feed_Parser_JSON_Feed );
129 + $friends_feed->register_parser( Feed_Parser_JSON_Feed::SLUG, new Feed_Parser_JSON_Feed() );
119 130 },
120 131 9
121 132 );
122 133
@@ -121,9 +132,9 @@
121 132 );
122 133
123 134 add_action(
124 135 'friends_load_parsers',
125 - function( \Friends\Feed $friends_feed ) {
136 + function ( \Friends\Feed $friends_feed ) {
126 137 if ( ! class_exists( '\Activitypub\Activitypub' ) ) {
127 138 // ActivityPub plugin not active.
128 139 return;
129 140 }
@@ -144,4 +155,43 @@
144 155 $friends_feed->register_parser( Feed_Parser_ActivityPub::SLUG, new Feed_Parser_ActivityPub( $friends_feed ) );
145 156 },
146 157 9
147 158 );
159 +
160 +// Global functions, for phpcs.
161 +/**
162 + * Validate feed catch_all
163 + *
164 + * @param array $catch_all The catch_all value to.
165 + * @return array A valid catch_all
166 + */
167 +function validate_feed_catch_all( $catch_all ) {
168 + return Feed::validate_feed_catch_all( $catch_all );
169 +}
170 +
171 +/**
172 + * Validate feed item rules
173 + *
174 + * @param array $rules The rules to validate.
175 + * @return array The valid rules.
176 + */
177 +function validate_feed_rules( $rules ) {
178 + return Feed::validate_feed_rules( $rules );
179 +}
180 +
181 +/**
182 + * Check whether this is a valid URL
183 + *
184 + * @param string $url The URL to check.
185 + * @return false|string URL or false on failure.
186 + */
187 +function check_url( $url ) {
188 + return Friends::check_url( $url );
189 +}
190 +
191 +// Integrations.
192 +
193 +require_once __DIR__ . '/integrations/class-blockroll.php';
194 +Blockroll::init();
195 +
196 +require_once __DIR__ . '/integrations/class-enable-mastodon-apps.php';
197 +Enable_Mastodon_Apps::init();