From 82dca423e152507b1860bea6f19a13f215494cb8 Mon Sep 17 00:00:00 2001 From: ruru4143 Date: Mon, 7 Oct 2024 17:42:31 +0200 Subject: [PATCH 1/5] added basic my-calendar transformer --- .../transformer/class-my-calendar.php | 88 +++++++++++++++++++ includes/class-setup.php | 9 +- includes/plugins/class-my-calendar.php | 63 +++++++++++++ 3 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 includes/activitypub/transformer/class-my-calendar.php create mode 100644 includes/plugins/class-my-calendar.php diff --git a/includes/activitypub/transformer/class-my-calendar.php b/includes/activitypub/transformer/class-my-calendar.php new file mode 100644 index 0000000..71475df --- /dev/null +++ b/includes/activitypub/transformer/class-my-calendar.php @@ -0,0 +1,88 @@ +mc_event = get_post_meta( $wp_object->ID, '_mc_event_data', true); + } + + + /** + * Formats time from the plugin to the activitypub standard + */ + private function convert_time( $date_string, $time_string ): string { + // Create a DateTime object with the given date, time, and timezone. + $datetime = new DateTime( $date_string . ' ' . $time_string ); + + // Set the timezone for proper formatting. + $datetime->setTimezone( new DateTimeZone( 'UTC' ) ); + + // Format the DateTime object as 'Y-m-d\TH:i:s\Z'. + $formatted_date = $datetime->format( 'Y-m-d\TH:i:s\Z' ); + return $formatted_date; + } + /** + * Get the start time from the events metadata. + */ + public function get_start_time(): string { + return $this->convert_time( $this->mc_event['event_begin'], $this->mc_event['event_time']); + } + + /** + * Get the end time from the events metadata. + */ + public function get_end_time(): ?string { + return $this->convert_time( $this->mc_event['event_end'], $this->mc_event['event_endtime']); + } + + public function to_object(): Event { + $activitypub_object = parent::to_object(); + + return $activitypub_object; + } + + +} diff --git a/includes/class-setup.php b/includes/class-setup.php index 39a4766..09d9f23 100644 --- a/includes/class-setup.php +++ b/includes/class-setup.php @@ -124,10 +124,11 @@ class Setup { * @var array */ private const EVENT_PLUGIN_CLASSES = array( - '\ActivityPub_Event_Bridge\Plugins\Events_Manager', - '\ActivityPub_Event_Bridge\Plugins\GatherPress', - '\ActivityPub_Event_Bridge\Plugins\The_Events_Calendar', - '\ActivityPub_Event_Bridge\Plugins\VS_Event_List', + '\Activitypub_Event_Extensions\Plugins\Events_Manager', + '\Activitypub_Event_Extensions\Plugins\GatherPress', + '\Activitypub_Event_Extensions\Plugins\The_Events_Calendar', + '\Activitypub_Event_Extensions\Plugins\VS_Event_List', + '\Activitypub_Event_Extensions\Plugins\My_Calendar', ); /** diff --git a/includes/plugins/class-my-calendar.php b/includes/plugins/class-my-calendar.php new file mode 100644 index 0000000..35604ed --- /dev/null +++ b/includes/plugins/class-my-calendar.php @@ -0,0 +1,63 @@ + Date: Thu, 10 Oct 2024 14:41:22 +0200 Subject: [PATCH 2/5] fixed naming --- includes/activitypub/transformer/class-my-calendar.php | 4 ++-- includes/class-setup.php | 10 +++++----- includes/plugins/class-my-calendar.php | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/includes/activitypub/transformer/class-my-calendar.php b/includes/activitypub/transformer/class-my-calendar.php index 71475df..179d709 100644 --- a/includes/activitypub/transformer/class-my-calendar.php +++ b/includes/activitypub/transformer/class-my-calendar.php @@ -6,14 +6,14 @@ * @license AGPL-3.0-or-later */ -namespace Activitypub_Event_Extensions\Activitypub\Transformer; +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_Extensions\Activitypub\Transformer\Event as Event_Transformer; +use ActivityPub_Event_Bridge\Activitypub\Transformer\Event as Event_Transformer; use DateTime; use DateTimeZone; use EM_Event; diff --git a/includes/class-setup.php b/includes/class-setup.php index 09d9f23..fc742e5 100644 --- a/includes/class-setup.php +++ b/includes/class-setup.php @@ -124,11 +124,11 @@ class Setup { * @var array */ private const EVENT_PLUGIN_CLASSES = array( - '\Activitypub_Event_Extensions\Plugins\Events_Manager', - '\Activitypub_Event_Extensions\Plugins\GatherPress', - '\Activitypub_Event_Extensions\Plugins\The_Events_Calendar', - '\Activitypub_Event_Extensions\Plugins\VS_Event_List', - '\Activitypub_Event_Extensions\Plugins\My_Calendar', + '\ActivityPub_Event_Bridge\Plugins\Events_Manager', + '\ActivityPub_Event_Bridge\Plugins\GatherPress', + '\ActivityPub_Event_Bridge\Plugins\The_Events_Calendar', + '\ActivityPub_Event_Bridge\Plugins\VS_Event_List', + '\ActivityPub_Event_Bridge\Plugins\My_Calendar', ); /** diff --git a/includes/plugins/class-my-calendar.php b/includes/plugins/class-my-calendar.php index 35604ed..4959984 100644 --- a/includes/plugins/class-my-calendar.php +++ b/includes/plugins/class-my-calendar.php @@ -10,7 +10,7 @@ * @since 1.0.0 */ -namespace Activitypub_Event_Extensions\Plugins; +namespace ActivityPub_Event_Bridge\Plugins; use Activitypub_Event_Extensions\Event_Plugins; -- 2.39.5 From 41363f3feec3c445e0161645bf34649a5ff99a8d Mon Sep 17 00:00:00 2001 From: ruru4143 Date: Thu, 10 Oct 2024 14:42:26 +0200 Subject: [PATCH 3/5] get schema directly --- includes/activitypub/transformer/class-my-calendar.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/includes/activitypub/transformer/class-my-calendar.php b/includes/activitypub/transformer/class-my-calendar.php index 179d709..4aa1da5 100644 --- a/includes/activitypub/transformer/class-my-calendar.php +++ b/includes/activitypub/transformer/class-my-calendar.php @@ -34,6 +34,7 @@ final class My_Calendar extends Event_Transformer { * @var array */ protected $mc_event; + protected $mc_event_schema; /** * Extend the constructor, to also set the Eventsmanager objects. @@ -46,7 +47,10 @@ final class My_Calendar extends Event_Transformer { */ public function __construct( $wp_object, $wp_taxonomy ) { parent::__construct( $wp_object, $wp_taxonomy ); - $this->mc_event = get_post_meta( $wp_object->ID, '_mc_event_data', true); + $mc_event_id = get_post_meta( $this->wp_object->ID, '_mc_event_id', true ); + $this->mc_event = mc_get_event( $mc_event_id ); + + $this->mc_event_schema = mc_event_schema( $this->mc_event ); } @@ -68,14 +72,14 @@ final class My_Calendar extends Event_Transformer { * Get the start time from the events metadata. */ public function get_start_time(): string { - return $this->convert_time( $this->mc_event['event_begin'], $this->mc_event['event_time']); + return $this->convert_time( $this->mc_event->event_begin, $this->mc_event->event_time); } /** * Get the end time from the events metadata. */ public function get_end_time(): ?string { - return $this->convert_time( $this->mc_event['event_end'], $this->mc_event['event_endtime']); + return $this->convert_time( $this->mc_event->event_end, $this->mc_event->event_endtime); } public function to_object(): Event { -- 2.39.5 From 2e8d7306bfd15df22c7ad885d36e41d40b5833f9 Mon Sep 17 00:00:00 2001 From: ruru4143 Date: Thu, 10 Oct 2024 14:44:08 +0200 Subject: [PATCH 4/5] added location --- .../transformer/class-my-calendar.php | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/includes/activitypub/transformer/class-my-calendar.php b/includes/activitypub/transformer/class-my-calendar.php index 4aa1da5..0425cb8 100644 --- a/includes/activitypub/transformer/class-my-calendar.php +++ b/includes/activitypub/transformer/class-my-calendar.php @@ -82,11 +82,32 @@ final class My_Calendar extends Event_Transformer { return $this->convert_time( $this->mc_event->event_end, $this->mc_event->event_endtime); } + /** + * Get the event location. + * + * @return Place|null The place/venue if one is set. + */ + public function get_location(): ?Place { + if ( array_key_exists('location', $this->mc_event_schema ) && $this->mc_event_schema['location']['@type'] == 'Place' ) { + $mc_place = $this->mc_event_schema['location']; + + $place = new Place(); + $place->set_name( $mc_place['name'] ); + $place->set_url( $mc_place['url'] ); + $place->set_address( $mc_place['address'] ); + + if ( ! empty( $mc_place['geo'] ) ) { + $place->set_latitude( $mc_place['geo']['latitude'] ); + $place->set_longitude( $mc_place['geo']['longitude'] ); + } + return $place; + } + return null; + } + public function to_object(): Event { $activitypub_object = parent::to_object(); return $activitypub_object; } - - } -- 2.39.5 From fdb4f000a36986872eec9f8e92c4e9af26b6e412 Mon Sep 17 00:00:00 2001 From: ruru4143 Date: Thu, 10 Oct 2024 14:44:26 +0200 Subject: [PATCH 5/5] added static status --- includes/activitypub/transformer/class-my-calendar.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/includes/activitypub/transformer/class-my-calendar.php b/includes/activitypub/transformer/class-my-calendar.php index 0425cb8..a041374 100644 --- a/includes/activitypub/transformer/class-my-calendar.php +++ b/includes/activitypub/transformer/class-my-calendar.php @@ -105,6 +105,16 @@ final class My_Calendar extends Event_Transformer { return null; } + /** + * Get status of the event + * + * @return string status of the event + */ + public function get_status(): ?string { + return 'CONFIRMED'; # my-calender doesn't implement canceled events. + } + + public function to_object(): Event { $activitypub_object = parent::to_object(); -- 2.39.5