2023-10-22 22:20:53 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Inspired by the PHP ActivityPub Library by @Landrok
|
|
|
|
*
|
|
|
|
* @link https://github.com/landrok/activitypub
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Activitypub\Activity;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \Activitypub\Activity\Actor is an implementation of
|
|
|
|
* one an Activity Streams Actor.
|
|
|
|
*
|
|
|
|
* Represents an individual actor.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitystreams-vocabulary/#actor-types
|
|
|
|
*/
|
|
|
|
class Actor extends Base_Object {
|
2024-03-28 09:39:50 +00:00
|
|
|
// Reduced context for actors. TODO: still unused.
|
|
|
|
const JSON_LD_CONTEXT = array(
|
|
|
|
'https://www.w3.org/ns/activitystreams',
|
|
|
|
'https://w3id.org/security/v1',
|
|
|
|
'https://purl.archive.org/socialweb/webfinger',
|
|
|
|
array(
|
|
|
|
'schema' => 'http://schema.org#',
|
|
|
|
'toot' => 'http://joinmastodon.org/ns#',
|
|
|
|
'webfinger' => 'https://webfinger.net/#',
|
|
|
|
'lemmy' => 'https://join-lemmy.org/ns#',
|
|
|
|
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
|
|
|
|
'PropertyValue' => 'schema:PropertyValue',
|
|
|
|
'value' => 'schema:value',
|
|
|
|
'Hashtag' => 'as:Hashtag',
|
|
|
|
'featured' => array(
|
|
|
|
'@id' => 'toot:featured',
|
|
|
|
'@type' => '@id',
|
|
|
|
),
|
|
|
|
'featuredTags' => array(
|
|
|
|
'@id' => 'toot:featuredTags',
|
|
|
|
'@type' => '@id',
|
|
|
|
),
|
|
|
|
'moderators' => array(
|
|
|
|
'@id' => 'lemmy:moderators',
|
|
|
|
'@type' => '@id',
|
|
|
|
),
|
|
|
|
'postingRestrictedToMods' => 'lemmy:postingRestrictedToMods',
|
|
|
|
'discoverable' => 'toot:discoverable',
|
|
|
|
'indexable' => 'toot:indexable',
|
|
|
|
'resource' => 'webfinger:resource',
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
2023-10-22 22:20:53 +00:00
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $type = 'Person';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A reference to an ActivityStreams OrderedCollection comprised of
|
|
|
|
* all the messages received by the actor.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#inbox
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
* | null
|
|
|
|
*/
|
|
|
|
protected $inbox;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A reference to an ActivityStreams OrderedCollection comprised of
|
|
|
|
* all the messages produced by the actor.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#outbox
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
* | null
|
|
|
|
*/
|
|
|
|
protected $outbox;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A link to an ActivityStreams collection of the actors that this
|
|
|
|
* actor is following.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#following
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $following;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A link to an ActivityStreams collection of the actors that
|
|
|
|
* follow this actor.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#followers
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $followers;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A link to an ActivityStreams collection of objects this actor has
|
|
|
|
* liked.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#liked
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $liked;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A list of supplementary Collections which may be of interest.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#streams-property
|
|
|
|
*
|
|
|
|
* @var array
|
|
|
|
*/
|
|
|
|
protected $streams = array();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A short username which may be used to refer to the actor, with no
|
|
|
|
* uniqueness guarantees.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#preferredUsername
|
|
|
|
*
|
|
|
|
* @var string|null
|
|
|
|
*/
|
|
|
|
protected $preferred_username;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A JSON object which maps additional typically server/domain-wide
|
|
|
|
* endpoints which may be useful either for this actor or someone
|
|
|
|
* referencing this actor. This mapping may be nested inside the
|
|
|
|
* actor document as the value or may be a link to a JSON-LD
|
|
|
|
* document with these properties.
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/TR/activitypub/#endpoints
|
|
|
|
*
|
|
|
|
* @var string|array|null
|
|
|
|
*/
|
|
|
|
protected $endpoints;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* It's not part of the ActivityPub protocol but it's a quite common
|
|
|
|
* practice to handle an actor public key with a publicKey array:
|
|
|
|
* [
|
|
|
|
* 'id' => 'https://my-example.com/actor#main-key'
|
|
|
|
* 'owner' => 'https://my-example.com/actor',
|
|
|
|
* 'publicKeyPem' => '-----BEGIN PUBLIC KEY-----
|
|
|
|
* MIIBI [...]
|
|
|
|
* DQIDAQAB
|
|
|
|
* -----END PUBLIC KEY-----'
|
|
|
|
* ]
|
|
|
|
*
|
|
|
|
* @see https://www.w3.org/wiki/SocialCG/ActivityPub/Authentication_Authorization#Signing_requests_using_HTTP_Signatures
|
|
|
|
*
|
|
|
|
* @var string|array|null
|
|
|
|
*/
|
|
|
|
protected $public_key;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* It's not part of the ActivityPub protocol but it's a quite common
|
|
|
|
* practice to lock an account. If anabled, new followers will not be
|
|
|
|
* automatically accepted, but will instead require you to manually
|
|
|
|
* approve them.
|
|
|
|
*
|
|
|
|
* WordPress does only support 'false' at the moment.
|
|
|
|
*
|
|
|
|
* @see https://docs.joinmastodon.org/spec/activitypub/#as
|
|
|
|
*
|
2024-03-28 09:39:50 +00:00
|
|
|
* @context as:manuallyApprovesFollowers
|
|
|
|
*
|
2023-10-22 22:20:53 +00:00
|
|
|
* @var boolean
|
|
|
|
*/
|
|
|
|
protected $manually_approves_followers = false;
|
|
|
|
}
|