165 lines
3.8 KiB
PHP

<?php
/**
* Load the ActivityPub integrations.
*
* @package Activitypub
*/
namespace Activitypub\Integration;
\Activitypub\Autoloader::register_path( __NAMESPACE__, __DIR__ );
/**
* Initialize the ActivityPub integrations.
*/
function plugin_init() {
/**
* Adds WebFinger (plugin) support.
*
* This class handles the compatibility with the WebFinger plugin
* and coordinates the internal WebFinger implementation.
*
* @see https://wordpress.org/plugins/webfinger/
*/
Webfinger::init();
/**
* Adds NodeInfo (plugin) support.
*
* This class handles the compatibility with the NodeInfo plugin
* and coordinates the internal NodeInfo implementation.
*
* @see https://wordpress.org/plugins/nodeinfo/
*/
Nodeinfo::init();
/**
* Adds Enable Mastodon Apps support.
*
* This class handles the compatibility with the Enable Mastodon Apps plugin.
*
* @see https://wordpress.org/plugins/enable-mastodon-apps/
*/
if ( \defined( 'ENABLE_MASTODON_APPS_VERSION' ) ) {
Enable_Mastodon_Apps::init();
}
/**
* Adds OpenGraph support.
*
* This class handles the compatibility with the OpenGraph plugin.
*
* @see https://wordpress.org/plugins/opengraph/
*/
if ( '1' === \get_option( 'activitypub_use_opengraph', '1' ) ) {
Opengraph::init();
}
/**
* Adds Jetpack support.
*
* This class handles the compatibility with Jetpack.
*
* @see https://jetpack.com/
*/
if ( \defined( 'JETPACK__VERSION' ) && ! \defined( 'IS_WPCOM' ) ) {
Jetpack::init();
}
/**
* Adds Akismet support.
*
* This class handles the compatibility with the Akismet plugin.
*
* @see https://wordpress.org/plugins/akismet/
*/
if ( \defined( 'AKISMET_VERSION' ) ) {
Akismet::init();
}
/**
* Adds Multisite Language Switcher support.
*
* This class handles the compatibility with the Multisite Language Switcher plugin.
*
* @see https://wordpress.org/plugins/multisite-language-switcher/
*/
if ( \defined( 'MSLS_PLUGIN_VERSION' ) ) {
Multisite_Language_Switcher::init();
}
/**
* Adds Seriously Simple Podcasting support.
*
* This class handles the compatibility with Seriously Simple Podcasting.
*
* @see https://wordpress.org/plugins/seriously-simple-podcasting/
*/
if ( \defined( 'SSP_VERSION' ) ) {
add_filter(
'activitypub_transformer',
function ( $transformer, $data, $object_class ) {
if (
'WP_Post' === $object_class &&
\get_post_meta( $data->ID, 'audio_file', true )
) {
return new Seriously_Simple_Podcasting( $data );
}
return $transformer;
},
10,
3
);
}
/**
* Adds WPML Multilingual CMS (plugin) support.
*
* This class handles the compatibility with the WPML plugin.
*
* @see https://wpml.org/
*/
if ( \defined( 'ICL_SITEPRESS_VERSION' ) ) {
WPML::init();
}
}
\add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_init' );
/**
* Register the Stream Connector for ActivityPub.
*
* @param array $classes The Stream connectors.
*
* @return array The Stream connectors with the ActivityPub connector.
*/
function register_stream_connector( $classes ) {
$class = new Stream_Connector();
if ( method_exists( $class, 'is_dependency_satisfied' ) && $class->is_dependency_satisfied() ) {
$classes[] = $class;
}
return $classes;
}
add_filter( 'wp_stream_connectors', __NAMESPACE__ . '\register_stream_connector' );
// Excluded ActivityPub post types from the Stream.
add_filter(
'wp_stream_posts_exclude_post_types',
function ( $post_types ) {
$post_types[] = 'ap_follower';
$post_types[] = 'ap_extrafield';
$post_types[] = 'ap_extrafield_blog';
return $post_types;
}
);
/**
* Load the BuddyPress integration.
*
* Only load code that needs BuddyPress to run once BP is loaded and initialized.
*
* @see https://buddypress.org/
*/
add_action( 'bp_include', array( __NAMESPACE__ . '\Buddypress', 'init' ), 0 );