2024-09-06 14:58:21 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* The Events Calendar.
|
|
|
|
*
|
2024-12-16 17:36:23 +01:00
|
|
|
* Defines all the necessary meta information for the integration of the
|
|
|
|
* WordPress plugin "The Events Calendar".
|
2024-09-06 14:58:21 +02:00
|
|
|
*
|
|
|
|
* @link https://wordpress.org/plugins/the-events-calendar/
|
2024-12-05 16:16:30 +01:00
|
|
|
* @package Event_Bridge_For_ActivityPub
|
2024-09-06 14:58:21 +02:00
|
|
|
* @since 1.0.0
|
|
|
|
*/
|
|
|
|
|
2024-12-05 16:16:30 +01:00
|
|
|
namespace Event_Bridge_For_ActivityPub\Integrations;
|
2024-09-06 14:58:21 +02:00
|
|
|
|
2024-12-15 22:25:28 +01:00
|
|
|
use Event_Bridge_For_ActivityPub\ActivityPub\Transformer\The_Events_Calendar as The_Events_Calendar_Transformer;
|
|
|
|
use Event_Bridge_For_ActivityPub\ActivityPub\Transmogrifier\The_Events_Calendar as The_Events_Calendar_Transmogrifier;
|
|
|
|
|
2024-09-06 14:58:21 +02:00
|
|
|
// Exit if accessed directly.
|
|
|
|
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
|
|
|
|
|
|
|
/**
|
2024-12-16 17:36:23 +01:00
|
|
|
* The Events Calendar.
|
2024-09-06 14:58:21 +02:00
|
|
|
*
|
2024-12-16 17:36:23 +01:00
|
|
|
* Defines all the necessary meta information for the integration of the
|
|
|
|
* WordPress plugin "The Events Calendar".
|
2024-09-06 14:58:21 +02:00
|
|
|
*
|
|
|
|
* @since 1.0.0
|
|
|
|
*/
|
2024-12-15 22:25:28 +01:00
|
|
|
final class The_Events_Calendar extends Event_plugin_Integration implements Feature_Event_Sources {
|
2024-09-06 14:58:21 +02:00
|
|
|
/**
|
|
|
|
* Returns the full plugin file.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
2024-12-12 23:24:36 +01:00
|
|
|
public static function get_relative_plugin_file(): string {
|
2024-09-06 14:58:21 +02:00
|
|
|
return 'the-events-calendar/the-events-calendar.php';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the event post type of the plugin.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function get_post_type(): string {
|
2024-09-11 00:38:21 +02:00
|
|
|
return class_exists( '\Tribe__Events__Main' ) ? \Tribe__Events__Main::POSTTYPE : 'tribe_event';
|
2024-09-06 14:58:21 +02:00
|
|
|
}
|
|
|
|
|
2024-12-15 22:25:28 +01:00
|
|
|
/**
|
|
|
|
* Returns the taxonomy used for the plugin's event categories.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function get_event_category_taxonomy(): string {
|
|
|
|
return class_exists( '\Tribe__Events__Main' ) ? \Tribe__Events__Main::TAXONOMY : 'tribe_events_cat';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the ActivityPub transformer for a The_Events_Calendar event post.
|
|
|
|
*
|
|
|
|
* @param WP_Post $post The WordPress post object of the Event.
|
|
|
|
* @return The_Events_Calendar_Transformer
|
|
|
|
*/
|
|
|
|
public static function get_activitypub_event_transformer( $post ): The_Events_Calendar_Transformer {
|
|
|
|
return new The_Events_Calendar_Transformer( $post, self::get_event_category_taxonomy() );
|
|
|
|
}
|
|
|
|
|
2024-12-22 21:55:08 +01:00
|
|
|
/**
|
|
|
|
* Return the location/venue post type used by tribe.
|
|
|
|
*
|
|
|
|
* @return ?string
|
|
|
|
*/
|
|
|
|
public static function get_location_post_type() {
|
|
|
|
return class_exists( '\Tribe__Events__Venue' ) ? \Tribe__Events__Venue::POSTTYPE : 'tribe_venue';
|
|
|
|
}
|
|
|
|
|
2024-09-06 14:58:21 +02:00
|
|
|
/**
|
2024-10-19 16:46:50 +02:00
|
|
|
* Returns the IDs of the admin pages of the plugin.
|
2024-09-06 14:58:21 +02:00
|
|
|
*
|
2024-10-19 16:46:50 +02:00
|
|
|
* @return array The settings page urls.
|
2024-09-06 14:58:21 +02:00
|
|
|
*/
|
2024-10-19 16:46:50 +02:00
|
|
|
public static function get_settings_pages(): array {
|
2024-09-21 11:00:33 +02:00
|
|
|
if ( class_exists( '\Tribe\Events\Admin\Settings' ) ) {
|
|
|
|
$page = \Tribe\Events\Admin\Settings::$settings_page_id;
|
|
|
|
} else {
|
|
|
|
$page = 'tec-events-settings';
|
|
|
|
}
|
2024-10-19 16:46:50 +02:00
|
|
|
return array( $page );
|
2024-09-06 14:58:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2024-12-15 22:25:28 +01:00
|
|
|
* Returns the Transmogrifier for The_Events_Calendar.
|
|
|
|
*/
|
|
|
|
public static function get_transmogrifier(): The_Events_Calendar_Transmogrifier {
|
|
|
|
return new The_Events_Calendar_Transmogrifier();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get a list of Post IDs of events that have ended.
|
2024-09-06 14:58:21 +02:00
|
|
|
*
|
2024-12-22 21:55:08 +01:00
|
|
|
* @param int $ends_before_time Filter to only get events that ended before that datetime as unix-time.
|
|
|
|
*
|
|
|
|
* @return array<int>
|
|
|
|
*/
|
|
|
|
public static function get_cached_remote_events( $ends_before_time ): array {
|
|
|
|
add_filter(
|
|
|
|
'tribe_repository_events_apply_modifier_schema_entry',
|
|
|
|
array( self::class, 'add_is_activitypub_remote_cached_to_query' ),
|
|
|
|
10,
|
|
|
|
1
|
|
|
|
);
|
|
|
|
|
|
|
|
$events = tribe_events()->where( 'ends_before', $ends_before_time )->get_ids();
|
|
|
|
|
|
|
|
remove_filter(
|
|
|
|
'tribe_repository_events_apply_modifier_schema_entry',
|
|
|
|
array( self::class, 'add_is_activitypub_remote_cached_to_query' )
|
|
|
|
);
|
|
|
|
|
|
|
|
return $events;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Only show remote cached ActivityPub events in Tribe query.
|
2024-12-15 22:25:28 +01:00
|
|
|
*
|
2024-12-22 21:55:08 +01:00
|
|
|
* @param array $schema_entry The current schema entry.
|
|
|
|
* @return array The modified schema entry.
|
2024-09-06 14:58:21 +02:00
|
|
|
*/
|
2024-12-22 21:55:08 +01:00
|
|
|
public static function add_is_activitypub_remote_cached_to_query( $schema_entry ) {
|
|
|
|
$schema_entry['meta_query']['is-remote-cached'] = array(
|
|
|
|
'key' => '_event_bridge_for_activitypub_is_remote_cached',
|
|
|
|
'compare' => 'EXISTS',
|
|
|
|
);
|
|
|
|
return $schema_entry;
|
2024-09-06 14:58:21 +02:00
|
|
|
}
|
|
|
|
}
|