diff --git a/includes/activitypub/transformer/class-events-manager.php b/includes/activitypub/transformer/class-events-manager.php index 3acf6aa..1def3f7 100644 --- a/includes/activitypub/transformer/class-events-manager.php +++ b/includes/activitypub/transformer/class-events-manager.php @@ -11,7 +11,6 @@ namespace ActivityPub_Event_Bridge\Activitypub\Transformer; // Exit if accessed directly. defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore -use Activitypub\Activity\Extended_Object\Event; use Activitypub\Activity\Extended_Object\Place; use ActivityPub_Event_Bridge\Activitypub\Transformer\Event as Event_Transformer; use DateTime; diff --git a/includes/activitypub/transformer/class-gatherpress.php b/includes/activitypub/transformer/class-gatherpress.php index e3ec013..b67bc58 100644 --- a/includes/activitypub/transformer/class-gatherpress.php +++ b/includes/activitypub/transformer/class-gatherpress.php @@ -13,7 +13,6 @@ defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore use Activitypub\Activity\Extended_Object\Event as Event_Object; use Activitypub\Activity\Extended_Object\Place; -use Activitypub\Model\Blog; use ActivityPub_Event_Bridge\Activitypub\Transformer\Event; use GatherPress\Core\Event as GatherPress_Event; diff --git a/includes/activitypub/transformer/class-the-events-calendar.php b/includes/activitypub/transformer/class-the-events-calendar.php index 72e25c8..9d76aaa 100644 --- a/includes/activitypub/transformer/class-the-events-calendar.php +++ b/includes/activitypub/transformer/class-the-events-calendar.php @@ -11,7 +11,6 @@ namespace ActivityPub_Event_Bridge\Activitypub\Transformer; // Exit if accessed directly. defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore -use Activitypub\Activity\Extended_Object\Event as Event_Object; use Activitypub\Activity\Extended_Object\Place; use ActivityPub_Event_Bridge\Activitypub\Transformer\Event; use WP_Post; diff --git a/includes/activitypub/transformer/class-vs-event-list.php b/includes/activitypub/transformer/class-vs-event-list.php index 35d33a2..c476404 100644 --- a/includes/activitypub/transformer/class-vs-event-list.php +++ b/includes/activitypub/transformer/class-vs-event-list.php @@ -11,7 +11,6 @@ namespace ActivityPub_Event_Bridge\Activitypub\Transformer; // Exit if accessed directly. defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore -use Activitypub\Activity\Extended_Object\Event; use Activitypub\Activity\Extended_Object\Place; use ActivityPub_Event_Bridge\Activitypub\Transformer\Event as Event_Transformer; diff --git a/includes/activitypub/transformer/class-wp-event-manager.php b/includes/activitypub/transformer/class-wp-event-manager.php new file mode 100644 index 0000000..4f560b5 --- /dev/null +++ b/includes/activitypub/transformer/class-wp-event-manager.php @@ -0,0 +1,124 @@ +wp_object->ID, '_event_online', true ); + $is_online = false; + // Radio buttons. + if ( 'yes' === $is_online_text ) { + $is_online = true; + } + // Checkbox. + if ( '1' === $is_online_text ) { + $is_online = true; + } + return $is_online; + } + + /** + * Get the event location. + * + * @return array The Place. + */ + public function get_location(): ?Place { + $location = new Place(); + $location_name = get_post_meta( $this->wp_object->ID, '_event_online', true ); + $location->set_name( $location_name ); + $location->set_sensitive( null ); + $location->set_address( $location_name ); + return $location; + } + + /** + * Get the end time from the events metadata. + */ + public function get_end_time(): ?string { + $end_date = get_post_meta( $this->wp_object->ID, '_event_end_date', true ); + $end_datetime = new DateTime( $end_date ); + return \gmdate( 'Y-m-d\TH:i:s\Z', $end_datetime->getTimestamp() ); + } + + /** + * Get the end time from the events metadata. + */ + public function get_start_time(): string { + $start_date = get_post_meta( $this->wp_object->ID, '_event_start_date', true ); + $start_datetime = new DateTime( $start_date ); + return \gmdate( 'Y-m-d\TH:i:s\Z', $start_datetime->getTimestamp() ); + } + + /** + * Get the event link as an ActivityPub Link object, but as an associative array. + * + * @return array + */ + private function get_event_link_attachment(): array { + $event_link_url = get_post_meta( $this->wp_object->ID, '_event_video_url', true ); + + if ( str_starts_with( $event_link_url, 'http' ) ) { + return array( + 'type' => 'Link', + 'name' => 'Video URL', + 'href' => \esc_url( $event_link_url ), + 'mediaType' => 'text/html', + ); + } else { + return null; + } + } + + /** + * Overrides/extends the get_attachments function to also add the event Link. + */ + protected function get_attachment() { + // Get attachments via parent function. + $attachments = parent::get_attachment(); + + // The first attachment is the featured image, make sure it is compatible with Mobilizon. + if ( count( $attachments ) ) { + $attachments[0]['type'] = 'Document'; + $attachments[0]['name'] = 'Banner'; + } + + if ( $this->get_event_link_attachment() ) { + $attachments[] = $this->get_event_link_attachment(); + } + return $attachments; + } + + /** + * Get the events title/name. + * + * @return string + */ + protected function get_name(): string { + return $this->wp_object->post_title; + } +} diff --git a/includes/class-setup.php b/includes/class-setup.php index 39a4766..bafe050 100644 --- a/includes/class-setup.php +++ b/includes/class-setup.php @@ -128,6 +128,7 @@ class Setup { '\ActivityPub_Event_Bridge\Plugins\GatherPress', '\ActivityPub_Event_Bridge\Plugins\The_Events_Calendar', '\ActivityPub_Event_Bridge\Plugins\VS_Event_List', + '\ActivityPub_Event_Bridge\Plugins\WP_Event_Manager', ); /** diff --git a/includes/plugins/class-wp-event-manager.php b/includes/plugins/class-wp-event-manager.php new file mode 100644 index 0000000..e3d3493 --- /dev/null +++ b/includes/plugins/class-wp-event-manager.php @@ -0,0 +1,72 @@ +