wordpress-event-bridge-for-.../includes/activitypub/transmogrifier/class-gatherpress.php
André Menrath 3f5c57134e
Some checks failed
PHP Code Checker / PHP Code Checker (pull_request) Failing after 49s
PHPUnit / PHPUnit – PHP 7.4 (pull_request) Failing after 57s
PHPUnit / PHPUnit – PHP 8.0 (pull_request) Successful in 1m5s
PHPUnit / PHPUnit – PHP 8.1 (pull_request) Successful in 1m2s
PHPUnit / PHPUnit – PHP 8.2 (pull_request) Successful in 1m4s
PHPUnit / PHPUnit – PHP 8.3 (pull_request) Successful in 1m3s
PHPUnit / PHPUnit – PHP 8.4 (pull_request) Successful in 1m6s
wip
2024-12-11 23:09:12 +01:00

124 lines
3.4 KiB
PHP

<?php
/**
* ActivityPub Transmogrify for the GatherPress event plugin.
*
* Handles converting incoming external ActivityPub events to GatherPress Events.
*
* @package Event_Bridge_For_ActivityPub
* @since 1.0.0
* @license AGPL-3.0-or-later
*/
namespace Event_Bridge_For_ActivityPub\Activitypub\Transmogrifier;
use Activitypub\Activity\Extended_Object\Event;
use Activitypub\Activity\Extended_Object\Place;
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
use GatherPress\Core\Event as GatherPress_Event;
/**
* ActivityPub Transmogrifier for the GatherPress event plugin.
*
* Handles converting incoming external ActivityPub events to GatherPress Events.
*
* @since 1.0.0
*/
class GatherPress {
/**
* The current GatherPress Event object.
*
* @var Event
*/
protected $activitypub_event;
/**
* Extend the constructor, to also set the GatherPress objects.
*
* This is a special class object form The Events Calendar which
* has a lot of useful functions, we make use of our getter functions.
*
* @param array $activitypub_event The ActivityPub Event as associative array.
*/
public function __construct( $activitypub_event ) {
$activitypub_event = Event::init_from_array( $activitypub_event );
if ( is_wp_error( $activitypub_event ) ) {
return;
}
$this->activitypub_event = $activitypub_event;
}
/**
* Get post.
*/
private function get_post_id_from_activitypub_id() {
global $wpdb;
$id = $this->activitypub_event->get_id();
return $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid=%s AND post_type=%s", $id, 'gatherpress_event' ) );
}
/**
* Save the ActivityPub event object as GatherPress Event.
*/
public function create() {
// Insert new GatherPress Event post.
$post_id = wp_insert_post(
array(
'post_title' => $this->activitypub_event->get_name(),
'post_type' => 'gatherpress_event',
'post_content' => $this->activitypub_event->get_content(),
'post_excerpt' => $this->activitypub_event->get_summary(),
'post_status' => 'publish',
'guid' => $this->activitypub_event->get_id(),
)
);
if ( ! $post_id || is_wp_error( $post_id ) ) {
return;
}
$event = new \GatherPress\Core\Event( $post_id );
$params = array(
'datetime_start' => $this->activitypub_event->get_start_time(),
'datetime_end' => $this->activitypub_event->get_end_time(),
'timezone' => $this->activitypub_event->get_timezone(),
);
$event->save_datetimes( $params );
}
/**
* Save the ActivityPub event object as GatherPress Event.
*/
public function update() {
$post_id = $this->get_post_id_from_activitypub_id();
// Insert new GatherPress Event post.
$post_id = wp_update_post(
array(
'ID' => $post_id,
'post_title' => $this->activitypub_event->get_name(),
'post_type' => 'gatherpress_event',
'post_content' => $this->activitypub_event->get_content(),
'post_excerpt' => $this->activitypub_event->get_summary(),
'post_status' => 'publish',
'guid' => $this->activitypub_event->get_id(),
)
);
if ( ! $post_id || is_wp_error( $post_id ) ) {
return;
}
$event = new \GatherPress\Core\Event( $post_id );
$params = array(
'datetime_start' => $this->activitypub_event->get_start_time(),
'datetime_end' => $this->activitypub_event->get_end_time(),
'timezone' => $this->activitypub_event->get_timezone(),
);
$event->save_datetimes( $params );
}
}