PluginProbe
ActivityPub / 5.7.0
ActivityPub v5.7.0
9.3.1 9.3.0 9.2.2 9.2.1 9.2.0 9.1.0 9.0.2 9.0.1 9.0.0 8.3.0 8.2.1 8.2.0 8.1.1 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.2.0 1.3.0 2.0.0 2.0.1 2.1.0 2.1.1 All 160 releases
← All changes | includes/activity/class-base-object.php +53 -221 9.2.05.7.0 View file →
@@ -8,10 +8,8 @@
8 8 */
9 9
10 10 namespace Activitypub\Activity;
11 11
12 -use Activitypub\Activity\Extended_Object\Place;
13 -
14 12 /**
15 13 * Base_Object is an implementation of one of the
16 14 * Activity Streams Core Types.
17 15 *
@@ -22,98 +20,50 @@
22 20 * 'Base_' for this reason.
23 21 *
24 22 * @see https://www.w3.org/TR/activitystreams-core/#object
25 23 *
26 - * @method array|string|null get_attachment() Gets the attachment property of the object.
27 - * @method array|string|null get_attributed_to() Gets the entity attributed as the original author.
28 - * @method string|null get_audience() Gets the total population of entities for which the object can be considered relevant.
29 - * @method string[]|string|null get_bcc() Gets the private secondary audience of the object.
30 - * @method string[]|string|null get_bto() Gets the private primary audience of the object.
31 - * @method string[]|string|null get_cc() Gets the secondary recipients of the object.
32 - * @method string|null get_content() Gets the content property of the object.
33 - * @method string[]|null get_content_map() Gets the content map property of the object.
34 - * @method string|null get_context() Gets the context within which the object exists.
35 - * @method array|null get_dcterms() Gets the Dublin Core terms property of the object.
36 - * @method string|null get_duration() Gets the duration property of time-bound resources.
37 - * @method string|null get_end_time() Gets the date and time describing the ending time of the object.
38 - * @method string|null get_generator() Gets the entity that generated the object.
39 - * @method string[]|null get_icon() Gets the icon property of the object.
40 - * @method string|null get_id() Gets the object's unique global identifier.
41 - * @method string[]|null get_image() Gets the image property of the object.
42 - * @method string[]|string|null get_in_reply_to() Gets the objects this object is in reply to.
43 - * @method array|null get_interaction_policy() Gets the interaction policy property of the object.
44 - * @method array|null get_likes() Gets the collection of likes for this object.
45 - * @method array|string|null|Place get_location() Gets the physical or logical locations associated with the object.
46 - * @method string|null get_media_type() Gets the MIME media type of the content property.
47 - * @method string|null get_name() Gets the natural language name of the object.
48 - * @method string[]|null get_name_map() Gets the name map property of the object.
49 - * @method string|null get_preview() Gets the entity that provides a preview of this object.
50 - * @method string|null get_published() Gets the date and time the object was published in ISO 8601 format.
51 - * @method string|null get_quote() Gets the quote property of the object (FEP-044f).
52 - * @method string|null get_quote_url() Gets the quoteUrl property of the object.
53 - * @method string|null get_quote_uri() Gets the quoteUri property of the object.
54 - * @method string|null get__misskey_quote() Gets the _misskey_quote property of the object.
55 - * @method string|array|null get_replies() Gets the collection of responses to this object.
56 - * @method bool|null get_sensitive() Gets the sensitive property of the object.
57 - * @method array|null get_shares() Gets the collection of shares for this object.
58 - * @method array|null get_source() Gets the source property indicating content markup derivation.
59 - * @method string|null get_start_time() Gets the date and time describing the starting time of the object.
60 - * @method string|null get_summary() Gets the natural language summary of the object.
61 - * @method string[]|null get_summary_map() Gets the summary map property of the object.
62 - * @method array[]|null get_tag() Gets the tag property of the object.
63 - * @method string[]|string|null get_to() Gets the primary recipients of the object.
64 - * @method string get_type() Gets the type of the object.
65 - * @method string|null get_updated() Gets the date and time the object was updated in ISO 8601 format.
66 - * @method string|null get_url() Gets the URL of the object.
67 - * @method string|null get_former_type() Gets the former type of a Tombstone object.
68 - * @method string|null get_deleted() Gets the date and time the object was deleted in ISO 8601 format.
24 + * @method string|null get_actor() Gets one or more entities that performed or are expected to perform the activity.
25 + * @method string|null get_attributed_to() Gets the entity attributed as the original author.
26 + * @method array|null get_attachment() Gets the attachment property of the object.
27 + * @method array|null get_cc() Gets the secondary recipients of the object.
28 + * @method string|null get_content() Gets the content property of the object.
29 + * @method array|null get_icon() Gets the icon property of the object.
30 + * @method string|null get_id() Gets the object's unique global identifier.
31 + * @method array|null get_image() Gets the image property of the object.
32 + * @method array|string|null get_in_reply_to() Gets the objects this object is in reply to.
33 + * @method string|null get_name() Gets the natural language name of the object.
34 + * @method Base_Object|string|null get_object() Gets the direct object of the activity.
35 + * @method string|null get_published() Gets the date and time the object was published in ISO 8601 format.
36 + * @method string|null get_summary() Gets the natural language summary of the object.
37 + * @method array|null get_tag() Gets the tag property of the object.
38 + * @method array|string|null get_to() Gets the primary recipients of the object.
39 + * @method string get_type() Gets the type of the object.
40 + * @method string|null get_updated() Gets the date and time the object was updated in ISO 8601 format.
41 + * @method string|null get_url() Gets the URL of the object.
69 42 *
70 - * @method string|string[] add_cc( string|array $cc ) Adds one or more entities to the secondary audience of the object.
71 - * @method string|string[] add_to( string|array $to ) Adds one or more entities to the primary audience of the object.
43 + * @method string|array add_cc( string|array $cc ) Adds one or more entities to the secondary audience of the object.
44 + * @method string|array add_to( string|array $to ) Adds one or more entities to the primary audience of the object.
72 45 *
73 - * @method Base_Object set_attachment( array $attachment ) Sets the attachment property of the object.
74 - * @method Base_Object set_attributed_to( string $attributed_to ) Sets the entity attributed as the original author.
75 - * @method Base_Object set_audience( string $audience ) Sets the total population of entities for which the object can be considered relevant.
76 - * @method Base_Object set_bcc( array|string $bcc ) Sets the private secondary audience of the object.
77 - * @method Base_Object set_bto( array|string $bto ) Sets the private primary audience of the object.
78 - * @method Base_Object set_cc( array|string $cc ) Sets the secondary recipients of the object.
79 - * @method Base_Object set_content( string $content ) Sets the content property of the object.
80 - * @method Base_Object set_content_map( array $content_map ) Sets the content property of the object.
81 - * @method Base_Object set_context( string $context ) Sets the context within which the object exists.
82 - * @method Base_Object set_dcterms( array $dcterms ) Sets the Dublin Core terms property of the object.
83 - * @method Base_Object set_duration( string $duration ) Sets the duration property of time-bound resources.
84 - * @method Base_Object set_end_time( string $end_time ) Sets the date and time describing the ending time of the object.
85 - * @method Base_Object set_generator( string $generator ) Sets the entity that generated the object.
86 - * @method Base_Object set_icon( array $icon ) Sets the icon property of the object.
87 - * @method Base_Object set_id( string $id ) Sets the object's unique global identifier.
88 - * @method Base_Object set_image( array $image ) Sets the image property of the object.
89 - * @method Base_Object set_in_reply_to( string|string[] $in_reply_to ) Sets the is in reply to property of the object.
90 - * @method Base_Object set_interaction_policy( array|null $policy ) Sets the interaction policy property of the object.
91 - * @method Base_Object set_likes( array $likes ) Sets the collection of likes for this object.
92 - * @method Base_Object set_location( array|string|Place $location ) Sets the physical or logical locations associated with the object.
93 - * @method Base_Object set_media_type( string $media_type ) Sets the MIME media type of the content property.
94 - * @method Base_Object set_name( string $name ) Sets the natural language name of the object.
95 - * @method Base_Object set_name_map( array|null $name_map ) Sets the name map property of the object.
96 - * @method Base_Object set_preview( string $preview ) Sets the entity that provides a preview of this object.
97 - * @method Base_Object set_published( string|null $published ) Sets the date and time the object was published in ISO 8601 format.
98 - * @method Base_Object set_quote( string $quote ) Sets the quote property of the object (FEP-044f).
99 - * @method Base_Object set_quote_url( string $quote_url ) Sets the quoteUrl property of the object.
100 - * @method Base_Object set_quote_uri( string $quote_uri ) Sets the quoteUri property of the object.
101 - * @method Base_Object set__misskey_quote( mixed $misskey_quote ) Sets the _misskey_quote property of the object.
102 - * @method Base_Object set_replies( string|array $replies ) Sets the collection of responses to this object.
103 - * @method Base_Object set_sensitive( bool|null $sensitive ) Sets the sensitive property of the object.
104 - * @method Base_Object set_shares( array $shares ) Sets the collection of shares for this object.
105 - * @method Base_Object set_source( array $source ) Sets the source property indicating content markup derivation.
106 - * @method Base_Object set_start_time( string $start_time ) Sets the date and time describing the starting time of the object.
107 - * @method Base_Object set_summary( string $summary ) Sets the natural language summary of the object.
108 - * @method Base_Object set_summary_map( array|null $summary_map ) Sets the summary property of the object.
109 - * @method Base_Object set_tag( array|null $tag ) Sets the tag property of the object.
110 - * @method Base_Object set_to( string|string[] $to ) Sets the primary recipients of the object.
111 - * @method Base_Object set_type( string $type ) Sets the type of the object.
112 - * @method Base_Object set_updated( string $updated ) Sets the date and time the object was updated in ISO 8601 format.
113 - * @method Base_Object set_url( string $url ) Sets the URL of the object.
114 - * @method Base_Object set_former_type( string $former_type ) Sets the former type of a Tombstone object.
115 - * @method Base_Object set_deleted( string $deleted ) Sets the date and time the object was deleted in ISO 8601 format.
46 + * @method Base_Object set_actor( string|array $actor ) Sets one or more entities that performed the activity.
47 + * @method Base_Object set_attachment( array $attachment ) Sets the attachment property of the object.
48 + * @method Base_Object set_attributed_to( string $attributed_to ) Sets the entity attributed as the original author.
49 + * @method Base_Object set_cc( array|string $cc ) Sets the secondary recipients of the object.
50 + * @method Base_Object set_content( string $content ) Sets the content property of the object.
51 + * @method Base_Object set_content_map( array $content_map ) Sets the content property of the object.
52 + * @method Base_Object set_icon( array $icon ) Sets the icon property of the object.
53 + * @method Base_Object set_id( string $id ) Sets the object's unique global identifier.
54 + * @method Base_Object set_image( array $image ) Sets the image property of the object.
55 + * @method Base_Object set_name( string $name ) Sets the natural language name of the object.
56 + * @method Base_Object set_origin( string $origin ) Sets the origin property of the object.
57 + * @method Base_Object set_published( string $published ) Sets the date and time the object was published in ISO 8601 format.
58 + * @method Base_Object set_sensitive( bool $sensitive ) Sets the sensitive property of the object.
59 + * @method Base_Object set_summary( string $summary ) Sets the natural language summary of the object.
60 + * @method Base_Object set_summary_map( array|null $summary_map ) Sets the summary property of the object.
61 + * @method Base_Object set_target( string $target ) Sets the target property of the object.
62 + * @method Base_Object set_to( array|string $to ) Sets the primary recipients of the object.
63 + * @method Base_Object set_type( string $type ) Sets the type of the object.
64 + * @method Base_Object set_updated( string $updated ) Sets the date and time the object was updated in ISO 8601 format.
65 + * @method Base_Object set_url( string $url ) Sets the URL of the object.
116 66 */
117 67 class Base_Object extends Generic_Object {
118 68 /**
119 69 * The JSON-LD context for the object.
@@ -122,49 +72,10 @@
122 72 */
123 73 const JSON_LD_CONTEXT = array(
124 74 'https://www.w3.org/ns/activitystreams',
125 75 array(
126 - 'Hashtag' => 'as:Hashtag',
127 - 'sensitive' => 'as:sensitive',
128 - 'dcterms' => 'http://purl.org/dc/terms/',
129 - 'gts' => 'https://gotosocial.org/ns#',
130 - 'schema' => 'http://schema.org/',
131 - 'exifData' => 'schema:exifData',
132 - 'PropertyValue' => 'schema:PropertyValue',
133 - 'interactionPolicy' => array(
134 - '@id' => 'gts:interactionPolicy',
135 - '@type' => '@id',
136 - ),
137 - 'canQuote' => array(
138 - '@id' => 'gts:canQuote',
139 - '@type' => '@id',
140 - ),
141 - 'canReply' => array(
142 - '@id' => 'gts:canReply',
143 - '@type' => '@id',
144 - ),
145 - 'canLike' => array(
146 - '@id' => 'gts:canLike',
147 - '@type' => '@id',
148 - ),
149 - 'canAnnounce' => array(
150 - '@id' => 'gts:canAnnounce',
151 - '@type' => '@id',
152 - ),
153 - 'automaticApproval' => array(
154 - '@id' => 'gts:automaticApproval',
155 - '@type' => '@id',
156 - ),
157 - 'manualApproval' => array(
158 - '@id' => 'gts:manualApproval',
159 - '@type' => '@id',
160 - ),
161 - 'always' => array(
162 - '@id' => 'gts:always',
163 - '@type' => '@id',
164 - ),
165 - 'toot' => 'http://joinmastodon.org/ns#',
166 - 'blurhash' => 'toot:blurhash',
76 + 'Hashtag' => 'as:Hashtag',
77 + 'sensitive' => 'as:sensitive',
167 78 ),
168 79 );
169 80
170 81 /**
@@ -220,9 +131,9 @@
220 131 protected $attributed_to;
221 132
222 133 /**
223 134 * One or more entities that represent the total population of
224 - * entities for which the object can be considered to be relevant.
135 + * entities for which the object can considered to be relevant.
225 136 *
226 137 * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-audience
227 138 *
228 139 * @var string|null
@@ -269,27 +180,8 @@
269 180 */
270 181 protected $content_map;
271 182
272 183 /**
273 - * The date and time at which the object was deleted.
274 - *
275 - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-deleted
276 - *
277 - * @var string|null
278 - */
279 - protected $deleted;
280 -
281 - /**
282 - * The former type of the object. Used in Tombstone objects to
283 - * indicate the type of the object prior to deletion.
284 - *
285 - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-formertype
286 - *
287 - * @var string|null
288 - */
289 - protected $former_type;
290 -
291 - /**
292 184 * A simple, human-readable, plain-text name for the object.
293 185 * HTML markup MUST NOT be included.
294 186 *
295 187 * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-name
@@ -365,9 +257,9 @@
365 257 * object.
366 258 *
367 259 * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-location
368 260 *
369 - * @var string|null|Place
261 + * @var string|null
370 262 */
371 263 protected $location;
372 264
373 265 /**
@@ -502,11 +394,11 @@
502 394 protected $media_type;
503 395
504 396 /**
505 397 * When the object describes a time-bound resource, such as an audio
506 - * or video, a meeting, etc., the duration property indicates the
398 + * or video, a meeting, etc, the duration property indicates the
507 399 * object's approximate duration.
508 - * The value MUST be expressed as a xsd:duration as defined by
400 + * The value MUST be expressed as an xsd:duration as defined by
509 401 * xmlschema11-2, section 3.3.6 (e.g. a period of 5 seconds is
510 402 * represented as "PT5S").
511 403 *
512 404 * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration
@@ -521,9 +413,9 @@
521 413 * future editing by clients.
522 414 *
523 415 * @see https://www.w3.org/TR/activitypub/#source-property
524 416 *
525 - * @var array|null
417 + * @var array
526 418 */
527 419 protected $source;
528 420
529 421 /**
@@ -541,9 +433,9 @@
541 433 * this object.
542 434 *
543 435 * @see https://www.w3.org/TR/activitypub/#likes
544 436 *
545 - * @var array|null
437 + * @var array
546 438 */
547 439 protected $likes;
548 440
549 441 /**
@@ -551,9 +443,9 @@
551 443 * this object.
552 444 *
553 445 * @see https://www.w3.org/TR/activitypub/#shares
554 446 *
555 - * @var array|null
447 + * @var array
556 448 */
557 449 protected $shares;
558 450
559 451 /**
@@ -562,73 +454,13 @@
562 454 * through to view the content.
563 455 *
564 456 * @see https://docs.joinmastodon.org/spec/activitypub/#sensitive
565 457 *
566 - * @var boolean|null
458 + * @var boolean
567 459 */
568 460 protected $sensitive;
569 461
570 462 /**
571 - * The dcterms namespace.
572 - *
573 - * @see https://codeberg.org/fediverse/fep/src/branch/main/fep/b2b8/fep-b2b8.md#sensitive
574 - * @see https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
575 - *
576 - * @var array|null
577 - */
578 - protected $dcterms;
579 -
580 - /**
581 - * Interaction policy is an attempt to limit the harmful effects of unwanted replies and
582 - * other interactions on a user's posts (e.g., "reply guys").
583 - *
584 - * It is also used by Mastodon to limit the ability to quote posts.
585 - *
586 - * @see https://docs.gotosocial.org/en/latest/federation/interaction_policy/
587 - * @see https://blog.joinmastodon.org/2025/09/introducing-quote-posts/
588 - *
589 - * @var array|null
590 - */
591 - protected $interaction_policy;
592 -
593 - /**
594 - * Fediverse Enhancement Proposal 044f: Quote Property
595 - *
596 - * @see https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md
597 - * @see https://w3id.org/fep/044f#quote
598 - *
599 - * @var string|null
600 - */
601 - protected $quote;
602 -
603 - /**
604 - * ActivityStreams quoteUrl property.
605 - *
606 - * @see https://www.w3.org/ns/activitystreams#quoteUrl
607 - *
608 - * @var string|null
609 - */
610 - protected $quote_url;
611 -
612 - /**
613 - * Fedibird-specific quoteUri property.
614 - *
615 - * @see https://fedibird.com/ns#quoteUri
616 - *
617 - * @var string|null
618 - */
619 - protected $quote_uri;
620 -
621 - /**
622 - * Misskey-specific quote property.
623 - *
624 - * @see https://misskey-hub.net/ns/#_misskey_quote
625 - *
626 - * @var string|null
627 - */
628 - protected $_misskey_quote; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
629 -
630 - /**
631 463 * Generic getter.
632 464 *
633 465 * @param string $key The key to get.
634 466 *
@@ -635,9 +467,9 @@
635 467 * @return mixed The value.
636 468 */
637 469 public function get( $key ) {
638 470 if ( ! $this->has( $key ) ) {
639 - return new \WP_Error( 'invalid_key', \__( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
471 + return new \WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
640 472 }
641 473
642 474 return parent::get( $key );
643 475 }
@@ -651,9 +483,9 @@
651 483 * @return mixed The value.
652 484 */
653 485 public function set( $key, $value ) {
654 486 if ( ! $this->has( $key ) ) {
655 - return new \WP_Error( 'invalid_key', \__( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
487 + return new \WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
656 488 }
657 489
658 490 return parent::set( $key, $value );
659 491 }
@@ -667,9 +499,9 @@
667 499 * @return mixed The value.
668 500 */
669 501 public function add( $key, $value ) {
670 502 if ( ! $this->has( $key ) ) {
671 - return new \WP_Error( 'invalid_key', \__( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
503 + return new \WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
672 504 }
673 505
674 506 return parent::add( $key, $value );
675 507 }