| @@ -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.8.2 | |
| 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.8.2' ); | |
| 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'; |
| @@ -96,9 +107,9 @@ | ||
| 96 | 107 | add_action( |
| 97 | 108 | 'friends_load_parsers', |
| 98 | 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 | |
| @@ -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(); | |