156 lines
3.6 KiB
PHP
156 lines
3.6 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Load the ActivityPub integrations.
|
||
|
*
|
||
|
* @package Activitypub
|
||
|
*/
|
||
|
|
||
|
namespace Activitypub\Integration;
|
||
|
|
||
|
/**
|
||
|
* 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/
|
||
|
*/
|
||
|
require_once __DIR__ . '/class-webfinger.php';
|
||
|
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/
|
||
|
*/
|
||
|
require_once __DIR__ . '/class-nodeinfo.php';
|
||
|
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' ) ) {
|
||
|
require_once __DIR__ . '/class-enable-mastodon-apps.php';
|
||
|
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' ) ) {
|
||
|
require_once __DIR__ . '/class-opengraph.php';
|
||
|
Opengraph::init();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Adds Jetpack support.
|
||
|
*
|
||
|
* This class handles the compatibility with Jetpack.
|
||
|
*
|
||
|
* @see https://jetpack.com/
|
||
|
*/
|
||
|
if ( \defined( 'JETPACK__VERSION' ) && ! \defined( 'IS_WPCOM' ) ) {
|
||
|
require_once __DIR__ . '/class-jetpack.php';
|
||
|
Jetpack::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 )
|
||
|
) {
|
||
|
require_once __DIR__ . '/class-seriously-simple-podcasting.php';
|
||
|
return new Seriously_Simple_Podcasting( $data );
|
||
|
}
|
||
|
return $transformer;
|
||
|
},
|
||
|
10,
|
||
|
3
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
\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 ) {
|
||
|
require plugin_dir_path( __FILE__ ) . '/class-stream-connector.php';
|
||
|
|
||
|
$class_name = '\Activitypub\Integration\Stream_Connector';
|
||
|
|
||
|
if ( ! class_exists( $class_name ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
wp_stream_get_instance();
|
||
|
$class = new $class_name();
|
||
|
|
||
|
if ( ! method_exists( $class, 'is_dependency_satisfied' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( $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',
|
||
|
function () {
|
||
|
require_once __DIR__ . '/class-buddypress.php';
|
||
|
Buddypress::init();
|
||
|
},
|
||
|
0
|
||
|
);
|