modified file upgrade-temp-backup

This commit is contained in:
2026-07-28 15:05:31 +00:00
committed by Gitium
parent 64be23dffb
commit dd0a8b69b1
486 changed files with 123520 additions and 0 deletions

View File

@ -0,0 +1,5 @@
# Extended Objects
This folder contains more complex ActivityPub objects.
Although they could be created using the `Base_Object`, they provide an easier structure for creating objects with maximum compatibility.

View File

@ -0,0 +1,415 @@
<?php
/**
* ActivityPub Object of type Event.
*
* @package activity-event-transformers
*/
namespace Activitypub\Activity\Extended_Object;
use Activitypub\Activity\Base_Object;
/**
* Event is an implementation of Activity Streams Event object type.
*
* This class contains extra keys as used by Mobilizon to ensure compatibility.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-event
*
* @method string|null get_actor() Gets which actor created the event.
* @method float|null get_altitude() Gets the altitude of the event location.
* @method bool|null get_anonymous_participation_enabled() Gets whether anonymous participation is enabled.
* @method string|null get_category() Gets the event's category.
* @method bool|null get_comments_enabled() Gets whether comments/replies are enabled.
* @method array|null get_contacts() Gets the event's contacts.
* @method string|null get_external_participation_url() Gets the external participation URL.
* @method string|null get_in_language() Gets the language of the event.
* @method bool|null get_is_online() Gets whether the event is online.
* @method string|null get_join_mode() Gets how new members may be able to join.
* @method int|null get_maximum_attendee_capacity() Gets how many places there can be for an event.
* @method string|null get_name() Gets the title of the event.
* @method int|null get_participant_count() Gets the participant count of the event.
* @method int|null get_remaining_attendee_capacity() Gets the number of attendee places that remain unallocated.
* @method string|null get_replies_moderation_option() Gets the moderation option for replies.
* @method string|null get_status() Gets the event's status.
* @method string|null get_timezone() Gets the timezone of the event.
*
* @method Event set_actor( string $actor ) Sets which actor created the event.
* @method Event set_altitude( float $altitude ) Sets the altitude of the event location.
* @method Event set_anonymous_participation_enabled( bool $enabled ) Sets whether anonymous participation is enabled.
* @method Event set_category( string $category, bool $mobilizon_compatibility ) Sets the event's category.
* @method Event set_comments_enabled( bool $comments_enabled ) Sets whether comments/replies are enabled.
* @method Event set_contacts( array $contacts ) Sets the event's contacts.
* @method Event set_external_participation_url( string $url ) Sets the external participation URL.
* @method Event set_in_language( string $language ) Sets the language of the event.
* @method Event set_is_online( bool $is_online ) Sets whether the event is online.
* @method Event set_join_mode( string $join_mode ) Sets how new members may be able to join.
* @method Event set_maximum_attendee_capacity( int $capacity ) Sets how many places there can be for an event.
* @method Event set_name( string $name ) Sets the title of the event.
* @method Event set_participant_count( int $count ) Sets the participant count of the event.
* @method Event set_remaining_attendee_capacity( int $capacity ) Sets the number of attendee places that remain unallocated.
* @method Event set_replies_moderation_option( string $type ) Sets the moderation option for replies.
* @method Event set_status( string $status ) Sets the event's status.
* @method Event set_timezone( string $timezone ) Sets the timezone of the event.
*/
class Event extends Base_Object {
// Human friendly minimal context for full Mobilizon compatible ActivityPub events.
const JSON_LD_CONTEXT = array(
'https://schema.org/', // The base context is schema.org, because it is used a lot.
'https://www.w3.org/ns/activitystreams', // The ActivityStreams context overrides everything also defined in schema.org.
array( // The keys here override/extend the context even more.
'pt' => 'https://joinpeertube.org/ns#',
'mz' => 'https://joinmobilizon.org/ns#',
'status' => 'http://www.w3.org/2002/12/cal/ical#status',
'commentsEnabled' => 'pt:commentsEnabled',
'isOnline' => 'mz:isOnline',
'timezone' => 'mz:timezone',
'participantCount' => 'mz:participantCount',
'anonymousParticipationEnabled' => 'mz:anonymousParticipationEnabled',
'joinMode' => array(
'@id' => 'mz:joinMode',
'@type' => 'mz:joinModeType',
),
'externalParticipationUrl' => array(
'@id' => 'mz:externalParticipationUrl',
'@type' => 'schema:URL',
),
'repliesModerationOption' => array(
'@id' => 'mz:repliesModerationOption',
'@type' => '@vocab',
),
'contacts' => array(
'@id' => 'mz:contacts',
'@type' => '@id',
),
),
);
/**
* Mobilizon compatible values for repliesModerationOption.
*
* @var array
*/
const REPLIES_MODERATION_OPTION_TYPES = array( 'allow_all', 'closed' );
/**
* Mobilizon compatible values for joinModeTypes.
*/
const JOIN_MODE_TYPES = array( 'free', 'restricted', 'external' ); // and 'invite', but not used by mobilizon atm.
/**
* Allowed values for ical VEVENT STATUS.
*
* @var array
*/
const ICAL_EVENT_STATUS_TYPES = array( 'TENTATIVE', 'CONFIRMED', 'CANCELLED' );
/**
* Default event categories.
*
* These values currently reflect the default set as proposed by Mobilizon to maximize interoperability.
*
* @var array
*/
const DEFAULT_EVENT_CATEGORIES = array(
'ARTS',
'BOOK_CLUBS',
'BUSINESS',
'CAUSES',
'COMEDY',
'CRAFTS',
'FOOD_DRINK',
'HEALTH',
'MUSIC',
'AUTO_BOAT_AIR',
'COMMUNITY',
'FAMILY_EDUCATION',
'FASHION_BEAUTY',
'FILM_MEDIA',
'GAMES',
'LANGUAGE_CULTURE',
'LEARNING',
'LGBTQ',
'MOVEMENTS_POLITICS',
'NETWORKING',
'PARTY',
'PERFORMING_VISUAL_ARTS',
'PETS',
'PHOTOGRAPHY',
'OUTDOORS_ADVENTURE',
'SPIRITUALITY_RELIGION_BELIEFS',
'SCIENCE_TECH',
'SPORTS',
'THEATRE',
'MEETING', // Default value.
);
/**
* Event is an implementation of one of the Activity Streams.
*
* @var string
*/
protected $type = 'Event';
/**
* The Title of the event.
*
* @var string
*/
protected $name;
/**
* The event's contacts.
*
* @context {
* '@id' => 'mz:contacts',
* '@type' => '@id',
* }
*
* @var array Array of contacts (ActivityPub actor IDs).
*/
protected $contacts;
/**
* Extension invented by PeerTube whether comments/replies are <enabled>
* Mobilizon also implemented this as a fallback to their own
* repliesModerationOption.
*
* @see https://docs.joinpeertube.org/api/activitypub#video
* @see https://docs.joinmobilizon.org/contribute/activity_pub/
* @var bool|null
*/
protected $comments_enabled;
/**
* Timezone of the event.
*
* @context https://joinmobilizon.org/ns#timezone
* @var string
*/
protected $timezone;
/**
* Moderation option for replies.
*
* @context https://joinmobilizon.org/ns#repliesModerationOption
* @see https://docs.joinmobilizon.org/contribute/activity_pub/#repliesmoderation
* @var string
*/
protected $replies_moderation_option;
/**
* Whether anonymous participation is enabled.
*
* @context https://joinmobilizon.org/ns#anonymousParticipationEnabled
* @see https://docs.joinmobilizon.org/contribute/activity_pub/#anonymousparticipationenabled
* @var bool
*/
protected $anonymous_participation_enabled;
/**
* The event's category.
*
* @context https://schema.org/category
* @var string
*/
protected $category;
/**
* Language of the event.
*
* @context https://schema.org/inLanguage
* @var string
*/
protected $in_language;
/**
* Whether the event is online.
*
* @context https://joinmobilizon.org/ns#isOnline
* @var bool
*/
protected $is_online;
/**
* The event's status.
*
* @context https://www.w3.org/2002/12/cal/ical#status
* @var string
*/
protected $status;
/**
* Which actor created the event.
*
* This field is needed due to the current group structure of Mobilizon.
*
* @todo this seems to not be a default property of an Object but needed by mobilizon.
* @var string
*/
protected $actor;
/**
* The external participation URL.
*
* @context https://joinmobilizon.org/ns#externalParticipationUrl
* @var string
*/
protected $external_participation_url;
/**
* Indicator of how new members may be able to join.
*
* @context https://joinmobilizon.org/ns#joinMode
* @see https://docs.joinmobilizon.org/contribute/activity_pub/#joinmode
* @var string
*/
protected $join_mode;
/**
* The participant count of the event.
*
* @context https://joinmobilizon.org/ns#participantCount
* @var int
*/
protected $participant_count;
/**
* How many places there can be for an event.
*
* @context https://schema.org/maximumAttendeeCapacity
* @see https://docs.joinmobilizon.org/contribute/activity_pub/#maximumattendeecapacity
* @var int
*/
protected $maximum_attendee_capacity;
/**
* The number of attendee places for an event that remain unallocated.
*
* @context https://schema.org/remainingAttendeeCapacity
* @see https://docs.joinmobilizon.org/contribute/activity_pub/#remainignattendeecapacity
* @var int
*/
protected $remaining_attendee_capacity;
/**
* Setter for the timezone.
*
* The passed timezone is only set when it is a valid one, otherwise the site's timezone is used.
*
* @param string $timezone The timezone string to be set, e.g. 'Europe/Berlin'.
* @return Event
*/
public function set_timezone( $timezone ) {
if ( in_array( $timezone, timezone_identifiers_list(), true ) ) {
$this->timezone = $timezone;
} else {
$this->timezone = wp_timezone_string();
}
return $this;
}
/**
* Custom setter for repliesModerationOption which also directly sets commentsEnabled accordingly.
*
* @param string $type The type of the replies moderation option.
*
* @return Event
*/
public function set_replies_moderation_option( $type ) {
if ( in_array( $type, self::REPLIES_MODERATION_OPTION_TYPES, true ) ) {
$this->replies_moderation_option = $type;
$this->comments_enabled = ( 'allow_all' === $type ) ? true : false;
} else {
_doing_it_wrong(
__METHOD__,
'The replies moderation option must be either allow_all or closed.',
'<version_placeholder>'
);
}
return $this;
}
/**
* Custom setter for commentsEnabled which also directly sets repliesModerationOption accordingly.
*
* @param bool $comments_enabled Whether comments are enabled.
*
* @return Event
*/
public function set_comments_enabled( $comments_enabled ) {
if ( is_bool( $comments_enabled ) ) {
$this->comments_enabled = $comments_enabled;
$this->replies_moderation_option = $comments_enabled ? 'allow_all' : 'closed';
} else {
_doing_it_wrong(
__METHOD__,
'The commentsEnabled must be boolean.',
'<version_placeholder>'
);
}
return $this;
}
/**
* Custom setter for the ical status that checks whether the status is an ical event status.
*
* @param string $status The status of the event.
*
* @return Event
*/
public function set_status( $status ) {
if ( in_array( $status, self::ICAL_EVENT_STATUS_TYPES, true ) ) {
$this->status = $status;
} else {
_doing_it_wrong(
__METHOD__,
'The status of the event must be a VEVENT iCal status.',
'<version_placeholder>'
);
}
return $this;
}
/**
* Custom setter for the event category.
*
* Falls back to Mobilizon's default category.
*
* @param string $category The category of the event.
* @param bool $mobilizon_compatibility Optional. Whether the category must be compatibly with Mobilizon. Default true.
*
* @return Event
*/
public function set_category( $category, $mobilizon_compatibility = true ) {
if ( $mobilizon_compatibility ) {
$this->category = in_array( $category, self::DEFAULT_EVENT_CATEGORIES, true ) ? $category : 'MEETING';
} else {
$this->category = $category;
}
return $this;
}
/**
* Custom setter for an external participation url.
*
* Automatically sets the joinMode to true if called.
*
* @param string $url The URL for external participation.
*
* @return Event
*/
public function set_external_participation_url( $url ) {
if ( preg_match( '/^https?:\/\/.*/i', $url ) ) {
$this->external_participation_url = $url;
$this->join_mode = 'external';
}
return $this;
}
}

View File

@ -0,0 +1,119 @@
<?php
/**
* Event is an implementation of one of the
* Activity Streams Event object type
*
* @package activity-event-transformers
*/
namespace Activitypub\Activity\Extended_Object;
use Activitypub\Activity\Base_Object;
/**
* Place is an implementation of the Activity Streams Place object type.
*
* The Place object represents a logical or physical location.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-place
*
* @method float|null get_accuracy() Gets the accuracy of position coordinates.
* @method array|string|null get_address() Gets the address of the place.
* @method float|null get_altitude() Gets the altitude of the place.
* @method float|null get_latitude() Gets the latitude of the place.
* @method float|null get_longitude() Gets the longitude of the place.
* @method float|null get_radius() Gets the radius from the given latitude and longitude.
* @method string|null get_units() Gets the measurement units for radius and altitude.
*
* @method Place set_accuracy( float $accuracy ) Sets the accuracy of position coordinates.
* @method Place set_address( array|string $address ) Sets the address of the place.
* @method Place set_altitude( float $altitude ) Sets the altitude of the place.
* @method Place set_latitude( float $latitude ) Sets the latitude of the place.
* @method Place set_longitude( float $longitude ) Sets the longitude of the place.
* @method Place set_radius( float $radius ) Sets the radius from the given latitude and longitude.
* @method Place set_units( string $units ) Sets the measurement units for radius and altitude.
*/
class Place extends Base_Object {
/**
* Place is an implementation of one of the
* Activity Streams
*
* @var string
*/
protected $type = 'Place';
/**
* Indicates the accuracy of position coordinates on a Place objects.
* Expressed in properties of percentage. e.g. "94.0" means "94.0% accurate".
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-accuracy
* @var float xsd:float [>= 0.0f, <= 100.0f]
*/
protected $accuracy;
/**
* Indicates the altitude of a place. The measurement unit is indicated using the unit's property.
* If unit is not specified, the default is assumed to be "m" indicating meters.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-altitude
* @var float xsd:float
*/
protected $altitude;
/**
* The latitude of a place.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-latitude
* @var float xsd:float
*/
protected $latitude;
/**
* The longitude of a place.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-longitude
* @var float xsd:float
*/
protected $longitude;
/**
* The radius from the given latitude and longitude for a Place.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-radius
* @var float
*/
protected $radius;
/**
* Specifies the measurement units for the `radius` and `altitude` properties.
*
* @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-units
* @var string
*/
protected $units;
/**
* The address of the place.
*
* @see https://schema.org/PostalAddress
* @var array|string
*/
protected $address;
/**
* Set the address of the place.
*
* @param array|string $address The address of the place.
*/
public function set_address( $address ) {
if ( is_string( $address ) || is_array( $address ) ) {
$this->address = $address;
} else {
_doing_it_wrong(
__METHOD__,
'The address must be either a string or an array like schema.org/PostalAddress.',
'<version_placeholder>'
);
}
}
}

View File

@ -0,0 +1,70 @@
<?php
/**
* Quote_Authorization is an implementation of the QuoteAuthorization activity type,
* as defined in FEP-044f (https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md#quoteauthorization).
*
* This class represents a QuoteAuthorization activity for ActivityPub implementations.
*
* @package Activitypub
*/
namespace Activitypub\Activity\Extended_Object;
use Activitypub\Activity\Base_Object;
/**
* Class representing a QuoteAuthorization activity.
*
* @see https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md#quoteauthorization
*
* @since 7.5.0
*
* @method Base_Object|string|array|null get_interacting_object() Gets the interacting object property of the object.
* @method Base_Object|string|array|null get_interaction_target() Gets the interaction target property of the object.
*
* @method Quote_Authorization set_interacting_object( string|array|Base_Object|null $data ) Sets the interacting object property of the object.
* @method Quote_Authorization set_interaction_target( string|array|Base_Object|null $data ) Sets the interaction target property of the object.
*/
class Quote_Authorization extends Base_Object {
/**
* The JSON-LD context for the object.
*
* @var array
*/
const JSON_LD_CONTEXT = array(
'https://www.w3.org/ns/activitystreams',
array(
'QuoteAuthorization' => 'https://w3id.org/fep/044f#QuoteAuthorization',
'gts' => 'https://gotosocial.org/ns#',
'interactingObject' => array(
'@id' => 'gts:interactingObject',
'@type' => '@id',
),
'interactionTarget' => array(
'@id' => 'gts:interactionTarget',
'@type' => '@id',
),
),
);
/**
* The type of the object.
*
* @var string
*/
protected $type = 'QuoteAuthorization';
/**
* The object that is being interacted with.
*
* @var Base_Object|string|array|null
*/
protected $interacting_object;
/**
* The target of the interaction.
*
* @var Base_Object|string|array|null
*/
protected $interaction_target;
}