initial upload
This commit is contained in:
		
							parent
							
								
									4e6718564f
								
							
						
					
					
						commit
						bd07e44fdb
					
				
					 28 changed files with 2497 additions and 0 deletions
				
			
		
							
								
								
									
										751
									
								
								src/ContentNation/ActivityPub/Common/APObject.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										751
									
								
								src/ContentNation/ActivityPub/Common/APObject.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,751 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class APObject {
 | 
				
			||||||
 | 
					  // actor | bto | current | first | id | instrument | last | items | oneOf |
 | 
				
			||||||
 | 
					  // anyOf | closed | origin | next | object | prev | result | target |
 | 
				
			||||||
 | 
					  // type | accuracy | altitude | content | duration | height | href | hreflang |
 | 
				
			||||||
 | 
					  // partOf | latitude | longitude | endTime | radius | rel |
 | 
				
			||||||
 | 
					  // startIndex | totalItems | units | width | subject | relationship | describes |
 | 
				
			||||||
 | 
					  // formerType | deleted
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * unique id
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $id = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * child object
 | 
				
			||||||
 | 
					   * @var APObject|null
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $object = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * type
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $type = 'Object';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * content
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $content = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * duration in seconds
 | 
				
			||||||
 | 
					   * @var \DateInterval|false
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $duration = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * height
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $height = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * href
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $href = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * end time
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $endTime = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * width
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $width = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // fiels are attachment | attributedTo | audience | content | context | name | endTime | generator |
 | 
				
			||||||
 | 
					  // icon | image | inReplyTo | location | preview | published | replies | startTime | summary | tag |
 | 
				
			||||||
 | 
					  // updated | url | to | bto | cc | bcc | mediaType | duration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * attachements
 | 
				
			||||||
 | 
					   * @var APObject[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $attachment = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * attributed to
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $attributedTo = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // audience
 | 
				
			||||||
 | 
					  // content
 | 
				
			||||||
 | 
					  // context
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * name
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $name = '';
 | 
				
			||||||
 | 
					  // endTime
 | 
				
			||||||
 | 
					  // generator
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * images
 | 
				
			||||||
 | 
					   * @var Image[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $icon = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * images
 | 
				
			||||||
 | 
					   * @var Image[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $image = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * reply id
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $inReplyTo = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // location
 | 
				
			||||||
 | 
					  // preview
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * published timestamp
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $published = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // startTime
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * summary
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $summary = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * tags
 | 
				
			||||||
 | 
					   * @var Tag[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $tag = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * updated timestamp
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $updated = 0;
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * url
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $url = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * list of to ids
 | 
				
			||||||
 | 
					   * @var array<string>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $to = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // bto
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * list of cc ids
 | 
				
			||||||
 | 
					   * @var array<string>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $cc = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // bcc
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * media type
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $mediaType = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // duration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * list of contexts
 | 
				
			||||||
 | 
					   * @var array<string|array<string,mixed>>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $context = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * atom URI
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $atomURI = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * reply to atom URI
 | 
				
			||||||
 | 
					   * @var ?string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $replyAtomURI = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // found items
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Content Nation generated unique id
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $uuid = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * sensitive flag
 | 
				
			||||||
 | 
					   * @var ?bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $sensitive = null;
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * blur hash
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $blurhash = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * conversation id
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $conversation = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct(string $type) {
 | 
				
			||||||
 | 
					    $this->type = $type;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set note content
 | 
				
			||||||
 | 
					   * @param string $content note content
 | 
				
			||||||
 | 
					   * @return APObject current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setContent(string $content) : APObject {
 | 
				
			||||||
 | 
					    $this->content = $content;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getContent() : string {
 | 
				
			||||||
 | 
					    return $this->content;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * add context to list
 | 
				
			||||||
 | 
					   * @param string|array<string,mixed> $context new context
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  final public function addContext($context) : void {
 | 
				
			||||||
 | 
					    if (!in_array($context, $this->context)) {
 | 
				
			||||||
 | 
					      $this->context[] = $context;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set id
 | 
				
			||||||
 | 
					   * @param string $id new id
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  final public function setID(string $id) {
 | 
				
			||||||
 | 
					    $this->id = $id;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final public function getID() : string {
 | 
				
			||||||
 | 
					    return $this->id;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set href
 | 
				
			||||||
 | 
					   * @param string $href href
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setHref(string $href) : void {
 | 
				
			||||||
 | 
					    $this->href = $href;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set child object
 | 
				
			||||||
 | 
					   * @param APObject $object
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setObject($object) : void {
 | 
				
			||||||
 | 
					    $this->object = $object;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get child object
 | 
				
			||||||
 | 
					   * @return APObject | false child object
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getObject() {
 | 
				
			||||||
 | 
					    return $this->object;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set type
 | 
				
			||||||
 | 
					   * @param string $type type
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setType(string $type) : void {
 | 
				
			||||||
 | 
					    $this->type = $type;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getType() : string {
 | 
				
			||||||
 | 
					    return $this->type;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set attachments
 | 
				
			||||||
 | 
					   * @param APObject[] $attachment
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setAttachment($attachment) : void {
 | 
				
			||||||
 | 
					    $this->attachment = $attachment;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function addAttachment(APObject $attachment) : void {
 | 
				
			||||||
 | 
					    $this->attachment[] = $attachment;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get attachments
 | 
				
			||||||
 | 
					   * @return APObject[] attachments
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getAttachment() {
 | 
				
			||||||
 | 
					    return $this->attachment;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getAttachmentsAsJson() : string {
 | 
				
			||||||
 | 
					    if ($this->attachment === []) {
 | 
				
			||||||
 | 
					      return "{}";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $obj = array();
 | 
				
			||||||
 | 
					    foreach($this->attachment as $a) {
 | 
				
			||||||
 | 
					      $obj[] = $a->toObject();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return json_encode($obj);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set attributed to
 | 
				
			||||||
 | 
					   * @param string $to attribute to
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setAttributedTo(string $to) : void {
 | 
				
			||||||
 | 
					    $this->attributedTo = $to;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getAttributedTo() : string {
 | 
				
			||||||
 | 
					    return $this->attributedTo;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set name
 | 
				
			||||||
 | 
					   * @param string $name name
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setName(string $name) : void {
 | 
				
			||||||
 | 
					    $this->name = $name;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * add Image
 | 
				
			||||||
 | 
					   * @param Image $image image to add
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function addImage(Image $image) : void {
 | 
				
			||||||
 | 
					    $this->image[] = $image;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setInReplyTo(string $reply) : void {
 | 
				
			||||||
 | 
					    $this->inReplyTo = $reply;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getInReplyTo() : string {
 | 
				
			||||||
 | 
					    return $this->inReplyTo ?? "";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set published timestamp
 | 
				
			||||||
 | 
					   * @param int $published published timestamp
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setPublished(int $published) : void {
 | 
				
			||||||
 | 
					    $this->published = $published;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getPublished() : int {
 | 
				
			||||||
 | 
					    return $this->published;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * add Tag
 | 
				
			||||||
 | 
					   * @param Tag $tag tag to add
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function addTag(Tag $tag) : void {
 | 
				
			||||||
 | 
					    $this->tag[] = $tag;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set url
 | 
				
			||||||
 | 
					   * @param string $url URL
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setURL(string $url) : void {
 | 
				
			||||||
 | 
					    $this->url = $url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get URL
 | 
				
			||||||
 | 
					   * @return string URL
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getURL() : string {
 | 
				
			||||||
 | 
					    return $this->url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * add to
 | 
				
			||||||
 | 
					   * @param string $to additional to address
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function addTo(string $to) : void {
 | 
				
			||||||
 | 
					    $this->to[] = $to;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get to
 | 
				
			||||||
 | 
					   * @return array<string>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getTo() {
 | 
				
			||||||
 | 
					    return $this->to;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * add cc
 | 
				
			||||||
 | 
					   * @param string $cc additional cc address
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function addCC(string $cc) : void {
 | 
				
			||||||
 | 
					    $this->cc[] = $cc;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get cc
 | 
				
			||||||
 | 
					   * @return array<string>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getCC() {
 | 
				
			||||||
 | 
					    return $this->cc;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getMediaType() : string {
 | 
				
			||||||
 | 
					    return $this->mediaType;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set atom URI
 | 
				
			||||||
 | 
					   * @param string $uri atom URI
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setAtomURI(string $uri) : void {
 | 
				
			||||||
 | 
					    $this->atomURI = $uri;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set reply atom URI
 | 
				
			||||||
 | 
					   * @param string $uri reply atom URI
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setReplyAtomURI(string $uri) : void {
 | 
				
			||||||
 | 
					    $this->replyAtomURI = $uri;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set sensitive
 | 
				
			||||||
 | 
					   * @param bool $sensitive status
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setSensitive(bool $sensitive) : void {
 | 
				
			||||||
 | 
					    $this->sensitive = $sensitive;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set conversation id
 | 
				
			||||||
 | 
					   * @param string $conversation conversation ID
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setConversation(string $conversation) : void {
 | 
				
			||||||
 | 
					    $this->conversation = $conversation;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getConversation() : ?string {
 | 
				
			||||||
 | 
					    return $this->conversation;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @param array<string, mixed> $json input
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (!is_array($json)) {
 | 
				
			||||||
 | 
					      error_log("fromJson called with ".gettype($json). " => ". debug_backtrace()[1]['function'] . " json: " . print_r($json, true));
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('id', $json)) {
 | 
				
			||||||
 | 
					      $this->id = $json['id'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('content', $json)) {
 | 
				
			||||||
 | 
					      $this->content = $json['content'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('duration', $json)) {
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        $this->duration = new \DateInterval($json['duration']);
 | 
				
			||||||
 | 
					      } catch (\Exception $unused_e) {
 | 
				
			||||||
 | 
					        error_log("error parsing duration ". $json['duration']);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('height', $json)) {
 | 
				
			||||||
 | 
					      $this->height = intval($json['height'], 10);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('href', $json)) {
 | 
				
			||||||
 | 
					      $this->href = $json['href'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('endTime', $json) && $json['endTime'] !== null) {
 | 
				
			||||||
 | 
					      $this->endTime = $this->parseDateTime($json['endTime']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('width', $json)) {
 | 
				
			||||||
 | 
					      $this->width = intval($json['width'], 10);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('attachment', $json) && $json['attachment'] !== null) {
 | 
				
			||||||
 | 
					      $attachment = [];
 | 
				
			||||||
 | 
					      foreach($json['attachment'] as $a) {
 | 
				
			||||||
 | 
					        $att = \ContentNation\ActivityPub\Factory::newFromJson($a, "");
 | 
				
			||||||
 | 
					        if ($att !== false) {
 | 
				
			||||||
 | 
					          $attachment[] = $att;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $this->attachment = $attachment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('attributedTo', $json)) {
 | 
				
			||||||
 | 
					      if (is_array($json['attributedTo']) && array_key_exists(0, $json['attributedTo'])) {
 | 
				
			||||||
 | 
					        //        error_log("attributedTo is array" . print_r($json['attributedTo'], true));
 | 
				
			||||||
 | 
					        if (is_array($json['attributedTo'][0])) {
 | 
				
			||||||
 | 
					          $this->attributedTo = $json['attributedTo'][0]['id'];
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          $this->attributedTo = $json['attributedTo'][0];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        $this->attributedTo = $json['attributedTo'];
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('name', $json)) {
 | 
				
			||||||
 | 
					      $this->name = $json['name'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('icon',$json)) {
 | 
				
			||||||
 | 
					      if (array_key_exists('type', $json['icon'])) {
 | 
				
			||||||
 | 
					        $image = \ContentNation\ActivityPub\Factory::newImage();
 | 
				
			||||||
 | 
					        $image->fromJson($json['icon']);
 | 
				
			||||||
 | 
					        $this->icon[] = $image;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        foreach($json['icon'] as $icon) {
 | 
				
			||||||
 | 
					          $image = \ContentNation\ActivityPub\Factory::newImage();
 | 
				
			||||||
 | 
					          $image->fromJson($icon);
 | 
				
			||||||
 | 
					          $this->icon[] = $image;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('image',$json)) {
 | 
				
			||||||
 | 
					      $image = \ContentNation\ActivityPub\Factory::newImage();
 | 
				
			||||||
 | 
					      $image->fromJson($json['image']);
 | 
				
			||||||
 | 
					      $this->image[] = $image;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('inReplyTo', $json)) {
 | 
				
			||||||
 | 
					      $this->inReplyTo = $json['inReplyTo'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('published', $json)) {
 | 
				
			||||||
 | 
					      $this->published = $this->parseDateTime($json['published']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('summary', $json)) {
 | 
				
			||||||
 | 
					      $this->summary = $json['summary'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('tag', $json)) {
 | 
				
			||||||
 | 
					      require_once("Tag.php");
 | 
				
			||||||
 | 
					      $tags = [];
 | 
				
			||||||
 | 
					      foreach($json['tag'] as $t) {
 | 
				
			||||||
 | 
					        $tag = new Tag();
 | 
				
			||||||
 | 
					        $tag->fromJson($t);
 | 
				
			||||||
 | 
					        $tags[] = $tag;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $this->tag = $tags;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('updated', $json)) {
 | 
				
			||||||
 | 
					      $this->updated = $this->parseDateTime($json['updated']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('url', $json)) {
 | 
				
			||||||
 | 
					      $this->url = $json['url'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('to', $json)) {
 | 
				
			||||||
 | 
					      if (is_array($json['to'])) {
 | 
				
			||||||
 | 
					        foreach($json['to'] as $to) {
 | 
				
			||||||
 | 
					          $this->to[] = $to;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        $this->to[] = $json['to'];
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('cc', $json)) {
 | 
				
			||||||
 | 
					      if (is_array($json['cc'])) {
 | 
				
			||||||
 | 
					        foreach($json['cc'] as $cc) {
 | 
				
			||||||
 | 
					          $this->cc[] = $cc;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        $this->cc[] = $json['cc'];
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('mediaType', $json)) {
 | 
				
			||||||
 | 
					      $this->mediaType = $json['mediaType'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('object', $json)) {
 | 
				
			||||||
 | 
					      $this->object = \ContentNation\ActivityPub\Factory::newFromJson($json['object'], "");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('sensitive', $json)) {
 | 
				
			||||||
 | 
					      $this->sensitive = $json['sensitive'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('blurhash', $json)) {
 | 
				
			||||||
 | 
					      $this->blurhash = $json['blurhash'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('uuid', $json)) {
 | 
				
			||||||
 | 
					      $this->uuid = $json['uuid'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('conversation', $json)) {
 | 
				
			||||||
 | 
					      $this->conversation = $json['conversation'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = [];
 | 
				
			||||||
 | 
					    if (sizeof($this->context) == 1) {
 | 
				
			||||||
 | 
					      $return['@context'] = array_values($this->context)[0];
 | 
				
			||||||
 | 
					    } else if (sizeof($this->context) > 1) {
 | 
				
			||||||
 | 
					      $c = [];
 | 
				
			||||||
 | 
					      foreach(array_values($this->context) as $context) {
 | 
				
			||||||
 | 
					        $c[] = $context;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $return['@context'] = $c;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->id !== "") {
 | 
				
			||||||
 | 
					      $return['id'] = $this->id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $return['type'] = $this->type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($this->content !== "") {
 | 
				
			||||||
 | 
					      $return['content'] = $this->content;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($this->duration !== false) {
 | 
				
			||||||
 | 
					      $return['duration'] = $this->duration->format("P%yY%mM%dDT%hH%iM%sS");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->height != -1) {
 | 
				
			||||||
 | 
					      $return['height'] = $this->height;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->href !== "") {
 | 
				
			||||||
 | 
					      $return['href'] = $this->href;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->endTime > 0) {
 | 
				
			||||||
 | 
					      $return['endTime'] = gmdate("Y-m-d\TH:i:s\Z", $this->endTime);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->width != -1) {
 | 
				
			||||||
 | 
					      $return['width'] = $this->width;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (sizeof($this->attachment) > 0) {
 | 
				
			||||||
 | 
					      $attachment = [];
 | 
				
			||||||
 | 
					      foreach($this->attachment as $a) {
 | 
				
			||||||
 | 
					        $attachment[] = $a->toObject();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $return['attachment'] = $attachment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->attributedTo !== "") {
 | 
				
			||||||
 | 
					      $return['attributedTo'] = $this->attributedTo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->name !== "") {
 | 
				
			||||||
 | 
					      $return['name'] = $this->name;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (sizeof($this->icon) > 0 ) {
 | 
				
			||||||
 | 
					      if (sizeof($this->icon) > 1) {
 | 
				
			||||||
 | 
					        $icons = [];
 | 
				
			||||||
 | 
					        foreach($this->icon as $icon) {
 | 
				
			||||||
 | 
					          $icons[] = $icon->toObject();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $return['icon'] = $icons;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        $return['icon'] = $this->icon[0]->toObject();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (sizeof($this->image) > 0 ) {
 | 
				
			||||||
 | 
					      $images = [];
 | 
				
			||||||
 | 
					      foreach($this->image as $image) {
 | 
				
			||||||
 | 
					        $images[] = $image->toObject();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $return['image'] = $images;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->inReplyTo !== "") {
 | 
				
			||||||
 | 
					      $return['inReplyTo'] = $this->inReplyTo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->published > 0) {
 | 
				
			||||||
 | 
					      $return['published'] = gmdate("Y-m-d\TH:i:s\Z", $this->published);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->summary !== "") {
 | 
				
			||||||
 | 
					      $return['summary'] = $this->summary;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (sizeof($this->tag) > 0) {
 | 
				
			||||||
 | 
					      $tags = [];
 | 
				
			||||||
 | 
					      foreach($this->tag as $tag) {
 | 
				
			||||||
 | 
					        $tags[] = $tag->toObject();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $return['tag'] = $tags;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->updated > 0) {
 | 
				
			||||||
 | 
					      $return['updated'] = gmdate("Y-m-d\TH:i:S\Z", $this->updated);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->url !== '') {
 | 
				
			||||||
 | 
					      $return['url'] = $this->url;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (sizeof($this->to) > 0) {
 | 
				
			||||||
 | 
					      $return['to'] = $this->to;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (sizeof($this->cc) > 0) {
 | 
				
			||||||
 | 
					      $return['cc'] = $this->cc;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->mediaType !== '') {
 | 
				
			||||||
 | 
					      $return['mediaType'] = $this->mediaType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->object !== null) {
 | 
				
			||||||
 | 
					      $return['object'] = $this->object->toObject();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->atomURI !== '') {
 | 
				
			||||||
 | 
					      $return['atomUri'] = $this->atomURI;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->replyAtomURI !== null) {
 | 
				
			||||||
 | 
					      $return['inReplyTo'] = $this->replyAtomURI;
 | 
				
			||||||
 | 
					      $return['inReplyToAtomUri'] = $this->replyAtomURI;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->sensitive !== null) {
 | 
				
			||||||
 | 
					      $return['sensitive'] = $this->sensitive;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->blurhash !== '') {
 | 
				
			||||||
 | 
					      $return['blurhash'] = $this->blurhash;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->conversation !== '') {
 | 
				
			||||||
 | 
					      $return['conversation'] = $this->conversation;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->uuid !== '') {
 | 
				
			||||||
 | 
					      $return['uuid'] = $this->uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set uuid
 | 
				
			||||||
 | 
					   * @param string $id
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setUUID(string $id) : void {
 | 
				
			||||||
 | 
					    $this->uuid = $id;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getUUID() : string {
 | 
				
			||||||
 | 
					    return $this->uuid;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  public static function parseDateTime(string $input) : int {
 | 
				
			||||||
 | 
					    $timestamp = 0;
 | 
				
			||||||
 | 
					    if (strpos($input, "T")!== false) {
 | 
				
			||||||
 | 
					      $date = \DateTime::createFromFormat('Y-m-d\TH:i:sT', $input);
 | 
				
			||||||
 | 
					      if ($date === false) {
 | 
				
			||||||
 | 
					        $date = \DateTime::createFromFormat('Y-m-d\TH:i:s+', $input);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if ($date !== false) {
 | 
				
			||||||
 | 
					        $timestamp = $date->getTimestamp();
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        error_log("date parsing error ". $input);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      $timestamp = intval($input, 10);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $timestamp;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										11
									
								
								src/ContentNation/ActivityPub/Common/Accept.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/ContentNation/ActivityPub/Common/Accept.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Accept extends Activity {
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct('Accept');
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										67
									
								
								src/ContentNation/ActivityPub/Common/Activity.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/ContentNation/ActivityPub/Common/Activity.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,67 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("APObject.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Activity extends APObject {
 | 
				
			||||||
 | 
					  // actor | object | target | result | origin | instrument
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * actor
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $actor = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * constructor
 | 
				
			||||||
 | 
					   * @param ?string $type type
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct($type = null) {
 | 
				
			||||||
 | 
					    parent::__construct($type ?? "Activity");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set actor
 | 
				
			||||||
 | 
					   * @param string $actor new actor
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setAActor(string $actor) : void {
 | 
				
			||||||
 | 
					    $this->actor = $actor;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getAActor() : string {
 | 
				
			||||||
 | 
					    return $this->actor;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create from json/array
 | 
				
			||||||
 | 
					   * @param mixed $json
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (array_key_exists('actor', $json)) {
 | 
				
			||||||
 | 
					      $this->actor = $json['actor'];
 | 
				
			||||||
 | 
					      unset($json['actor']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (!parent::fromJson($json)) {
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->actor !== '') {
 | 
				
			||||||
 | 
					      $return['actor'] = $this->actor;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get Child Object
 | 
				
			||||||
 | 
					   * @return Note|false
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getObject() {
 | 
				
			||||||
 | 
					    return parent::getObject();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										44
									
								
								src/ContentNation/ActivityPub/Common/Announce.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/ContentNation/ActivityPub/Common/Announce.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Announce extends Activity {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * object overwrite
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $object = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setAObject(string $object) : void {
 | 
				
			||||||
 | 
					    $this->object = $object;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function getAObject() : string {
 | 
				
			||||||
 | 
					    return $this->object;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct('Announce');
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (array_key_exists('object', $json)) {
 | 
				
			||||||
 | 
					      $this->object = $json['object'];
 | 
				
			||||||
 | 
					      unset($json['object']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->object !== "") {
 | 
				
			||||||
 | 
					      $return['object'] = $this->object;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/ContentNation/ActivityPub/Common/Article.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/ContentNation/ActivityPub/Common/Article.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("APObject.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Article extends APObject {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Article");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param mixed $json input
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										54
									
								
								src/ContentNation/ActivityPub/Common/Collection.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/ContentNation/ActivityPub/Common/Collection.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("APObject.php");
 | 
				
			||||||
 | 
					class Collection extends APObject {
 | 
				
			||||||
 | 
					  protected int $totalItems = 0;
 | 
				
			||||||
 | 
					  private string $first = '';
 | 
				
			||||||
 | 
					  private string $last = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct('Collection');
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    $return['type'] = 'Collection';
 | 
				
			||||||
 | 
					    if ($this->totalItems > 0) {
 | 
				
			||||||
 | 
					      $return['totalItems'] = $this->totalItems;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->first !== '') {
 | 
				
			||||||
 | 
					      $return['first'] = $this->first;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->last !== '') {
 | 
				
			||||||
 | 
					      $return['last'] = $this->last;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param array<string,mixed> $json input json
 | 
				
			||||||
 | 
					   * @return bool true on success
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function count() : int {
 | 
				
			||||||
 | 
					    return $this->totalItems;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setFirst(string $url) : void {
 | 
				
			||||||
 | 
					    $this->first = $url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setLast(string $url) : void {
 | 
				
			||||||
 | 
					    $this->last = $url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										27
									
								
								src/ContentNation/ActivityPub/Common/Create.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/ContentNation/ActivityPub/Common/Create.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					class Create extends Activity {
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct('Create');
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    $return['type'] = 'Create';
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param array<string,mixed> $json input json
 | 
				
			||||||
 | 
					   * @return bool true on success
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								src/ContentNation/ActivityPub/Common/Delete.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/ContentNation/ActivityPub/Common/Delete.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Delete extends Activity {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * object overwrite
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $object = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setFObject(string $object) : void {
 | 
				
			||||||
 | 
					    $this->object = $object;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct('Delete');
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create from json/array
 | 
				
			||||||
 | 
					   * @param mixed $json
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (array_key_exists('object', $json)) {
 | 
				
			||||||
 | 
					      $this->object = $json['object'];
 | 
				
			||||||
 | 
					      unset($json['object']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->object !== "") {
 | 
				
			||||||
 | 
					      $return['object'] = $this->object;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										9
									
								
								src/ContentNation/ActivityPub/Common/Document.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/ContentNation/ActivityPub/Common/Document.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("APObject.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Document extends APObject {
 | 
				
			||||||
 | 
					  public function __construct(?string $type = null) {
 | 
				
			||||||
 | 
					    parent::__construct($type ?? "Document");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										28
									
								
								src/ContentNation/ActivityPub/Common/Event.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/ContentNation/ActivityPub/Common/Event.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Event extends Activity {
 | 
				
			||||||
 | 
					    public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct('Event');
 | 
				
			||||||
 | 
					//    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create from json/array
 | 
				
			||||||
 | 
					   * @param mixed $json
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								src/ContentNation/ActivityPub/Common/Follow.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/ContentNation/ActivityPub/Common/Follow.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Follow extends Activity {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * object overwrite
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $object = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setFObject(string $object) : void {
 | 
				
			||||||
 | 
					    $this->object = $object;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Follow");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (array_key_exists('object', $json)) {
 | 
				
			||||||
 | 
					      $this->object = $json['object'];
 | 
				
			||||||
 | 
					      unset($json['object']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->object !== "") {
 | 
				
			||||||
 | 
					      $return['object'] = $this->object;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										49
									
								
								src/ContentNation/ActivityPub/Common/Image.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/ContentNation/ActivityPub/Common/Image.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,49 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Image extends APObject {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * url
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $url = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * media type
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $mediaType = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Image");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set media type
 | 
				
			||||||
 | 
					   * @param string $mediaType media type
 | 
				
			||||||
 | 
					   * @return Image current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setMediaType(string $mediaType) : Image {
 | 
				
			||||||
 | 
					    $this->mediaType = $mediaType;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param mixed $json input
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (!parent::fromJson($json)) {
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('url', $json)) {
 | 
				
			||||||
 | 
					      $this->url = $json['url'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('mediaType', $json)) {
 | 
				
			||||||
 | 
					      $this->mediaType = $json['mediaType'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class IntransitiveActivity extends Activity {
 | 
				
			||||||
 | 
					  // actor | object | target | result | origin | instrument
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * constructor
 | 
				
			||||||
 | 
					   * @param ?string $type type
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct($type = null) {
 | 
				
			||||||
 | 
					    parent::__construct($type ?? "IntransitiveActivity");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create from json/array
 | 
				
			||||||
 | 
					   * @param mixed $json
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    unset($return['object']);
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										77
									
								
								src/ContentNation/ActivityPub/Common/Note.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								src/ContentNation/ActivityPub/Common/Note.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,77 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("Document.php");
 | 
				
			||||||
 | 
					class Note extends APObject {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * sender
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $sender = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * receiver
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $receiver = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Note");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set sender
 | 
				
			||||||
 | 
					   * @param string $sender note sender
 | 
				
			||||||
 | 
					   * @return Note current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setSender(string $sender) : Note {
 | 
				
			||||||
 | 
					    $this->sender = $sender;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get sender
 | 
				
			||||||
 | 
					   * @return string sender
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getSender() : string {
 | 
				
			||||||
 | 
					    return $this->sender;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set receiver
 | 
				
			||||||
 | 
					   * @param string $receiver note receiver
 | 
				
			||||||
 | 
					   * @return Note current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setReceiver(string $receiver) : Note {
 | 
				
			||||||
 | 
					    $this->receiver = $receiver;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->sender !== "") {
 | 
				
			||||||
 | 
					      $return['sender'] = $this->sender;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->receiver !== "") {
 | 
				
			||||||
 | 
					      $return['receiver'] = $this->receiver;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param mixed $json input json
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (!parent::fromJson($json))
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    $this->receiver = "";
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										71
									
								
								src/ContentNation/ActivityPub/Common/OrderedCollection.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								src/ContentNation/ActivityPub/Common/OrderedCollection.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("Collection.php");
 | 
				
			||||||
 | 
					class OrderedCollection extends Collection {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * nested items
 | 
				
			||||||
 | 
					   * @var APObject[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $items=[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct();
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    $return['type'] = 'OrderedCollection';
 | 
				
			||||||
 | 
					    if ($this->totalItems > 0) {
 | 
				
			||||||
 | 
					      foreach($this->items as $item) {
 | 
				
			||||||
 | 
					        $return['OrderedItems'][] = $item->toObject();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param array<string,mixed> $json input json
 | 
				
			||||||
 | 
					   * @return bool true on success
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function append(APObject &$item) : void {
 | 
				
			||||||
 | 
					    $this->items[] = $item;
 | 
				
			||||||
 | 
					    $this->totalItems = sizeof($this->items);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get item with given index
 | 
				
			||||||
 | 
					   * @return APObject|false
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function get(int $index) {
 | 
				
			||||||
 | 
					    if ($index >= 0) {
 | 
				
			||||||
 | 
					      if ($index >= $this->totalItems) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return $this->items[$index];
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      if ($this->totalItems+ $index < 0) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return $this->items[$this->totalItems + $index];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set items
 | 
				
			||||||
 | 
					   * @param APObject[] $items
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setItems(&$items) : void {
 | 
				
			||||||
 | 
					    $this->items = $items;
 | 
				
			||||||
 | 
					    $this->totalItems = sizeof($items);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("OrderedCollection.php");
 | 
				
			||||||
 | 
					class OrderedCollectionPage extends OrderedCollection {
 | 
				
			||||||
 | 
					  private string $next = '';
 | 
				
			||||||
 | 
					  private string $prev = '';
 | 
				
			||||||
 | 
					  private string $partOf = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct();
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->next !== '') {
 | 
				
			||||||
 | 
					      $return['next'] = $this->next;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->prev !== '') {
 | 
				
			||||||
 | 
					      $return['prev'] = $this->prev;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($this->partOf !== '') {
 | 
				
			||||||
 | 
					      $return['partOf'] = $this->partOf;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param array<string,mixed> $json input json
 | 
				
			||||||
 | 
					   * @return bool true on success
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setNext(string $url) : void {
 | 
				
			||||||
 | 
					    $this->next = $url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setPrev(string $url) : void {
 | 
				
			||||||
 | 
					    $this->prev = $url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function setPartOf(string $url) : void {
 | 
				
			||||||
 | 
					    $this->partOf = $url;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								src/ContentNation/ActivityPub/Common/Outbox.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/ContentNation/ActivityPub/Common/Outbox.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once("OrderedCollectionPage.php");
 | 
				
			||||||
 | 
					class Outbox extends OrderedCollectionPage {
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct();
 | 
				
			||||||
 | 
					    parent::addContext('https://www.w3.org/ns/activitystreams');
 | 
				
			||||||
 | 
					    parent::addContext(array(
 | 
				
			||||||
 | 
					      "ostatus" => "http://ostatus.org#",
 | 
				
			||||||
 | 
					      "atomUri" => "ostatus:atomUri",
 | 
				
			||||||
 | 
					      "inReplyToAtomUri" => "ostatus:inReplyToAtomUri",
 | 
				
			||||||
 | 
					      "conversation" => "ostatus:conversation",
 | 
				
			||||||
 | 
					      "sensitive" => "as:sensitive",
 | 
				
			||||||
 | 
					      "toot" => "http://joinmastodon.org/ns#",
 | 
				
			||||||
 | 
					      "votersCount" => "toot:votersCount",
 | 
				
			||||||
 | 
					      "Hashtag" => "as:Hashtag"
 | 
				
			||||||
 | 
					    ));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param array<string,mixed> $json input json
 | 
				
			||||||
 | 
					   * @return bool true on success
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										9
									
								
								src/ContentNation/ActivityPub/Common/Page.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/ContentNation/ActivityPub/Common/Page.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("Document.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Page extends Document {
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Page");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										35
									
								
								src/ContentNation/ActivityPub/Common/Question.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/ContentNation/ActivityPub/Common/Question.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("IntransitiveActivity.php");
 | 
				
			||||||
 | 
					class Question extends IntransitiveActivity {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * voters count
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $votersCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // oneOf | anyOf | closed
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Question");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    $return['votersCount'] = $this->votersCount;
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object from json
 | 
				
			||||||
 | 
					   * @param mixed $json input json
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (array_key_exists('votersCount', $json)) {
 | 
				
			||||||
 | 
					      $this->votersCount = intval($json['votersCount'], 10);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										48
									
								
								src/ContentNation/ActivityPub/Common/Stats.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/ContentNation/ActivityPub/Common/Stats.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Stats {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * user count
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $userCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * page count
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $pageCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set user count
 | 
				
			||||||
 | 
					   * @param int $count user count
 | 
				
			||||||
 | 
					   * @return Stats current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setUserCount(int $count) : Stats {
 | 
				
			||||||
 | 
					    $this->userCount = $count;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set page count
 | 
				
			||||||
 | 
					   * @param int $count page count
 | 
				
			||||||
 | 
					   * @return Stats current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setPageCount(int $count) : Stats {
 | 
				
			||||||
 | 
					    $this->pageCount = $count;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $ret = array(
 | 
				
			||||||
 | 
					      "user_count"=> $this->userCount,
 | 
				
			||||||
 | 
					      "status_count"=> $this->pageCount
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    return $ret;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/ContentNation/ActivityPub/Common/Tag.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/ContentNation/ActivityPub/Common/Tag.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Tag extends APObject {
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Tag");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * fill object from json
 | 
				
			||||||
 | 
					   * @param mixed $json input
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (!parent::fromJson($json)) {
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (array_key_exists('type',$json)) {
 | 
				
			||||||
 | 
					      $this->setType($json['type']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								src/ContentNation/ActivityPub/Common/Undo.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/ContentNation/ActivityPub/Common/Undo.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("Activity.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Undo extends Activity {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * constructor
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Undo");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					  * convert internal state to php array
 | 
				
			||||||
 | 
					  * @return array<string,mixed>
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										294
									
								
								src/ContentNation/ActivityPub/Common/User.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										294
									
								
								src/ContentNation/ActivityPub/Common/User.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,294 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class User {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * User name
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $userName = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Account name
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $accountName = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Display name
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $displayName = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Locked flag
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $locked = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Bot flag
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $bot = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Discoverable flag
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $discoverable = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Group flag
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $group = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Created timestamp
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $created = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Created note
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $note = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Created url
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $url = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Avatar URL
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $avatarURL = '';
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * headerURL
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $headerURL = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * follower count
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $followerCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * status count
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $statusCount = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * last status timestamp
 | 
				
			||||||
 | 
					   * @var int
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $lastStatus = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Field list (name, value verified)
 | 
				
			||||||
 | 
					   * @var array<array<string,string,?string>>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $fields = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set user name
 | 
				
			||||||
 | 
					   * @param string $userName user name
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setUserName(string $userName) : User {
 | 
				
			||||||
 | 
					    $this->userName = $userName;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set account name
 | 
				
			||||||
 | 
					   * @param string $accountName account name
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setAccountName(string $accountName) : User {
 | 
				
			||||||
 | 
					    $this->accountName = $accountName;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set display name
 | 
				
			||||||
 | 
					   * @param string $displayName display name
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setDisplayName(string $displayName) : User {
 | 
				
			||||||
 | 
					    $this->displayName = $displayName;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set locked status
 | 
				
			||||||
 | 
					   * @param bool $locked locked status
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setLocked(bool $locked) : User {
 | 
				
			||||||
 | 
					    $this->locked = $locked;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set bot status
 | 
				
			||||||
 | 
					   * @param bool $bot bot status
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setBot(bool $bot) : User {
 | 
				
			||||||
 | 
					    $this->bot = $bot;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set discoverable status
 | 
				
			||||||
 | 
					   * @param bool $discoverable discoverable status
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setDiscoverable(bool $discoverable) : User {
 | 
				
			||||||
 | 
					    $this->discoverable = $discoverable;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set group flag
 | 
				
			||||||
 | 
					   * @param bool $group group flag
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setGroupFlag(bool $group) : User {
 | 
				
			||||||
 | 
					    $this->group = $group;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set created timestamp
 | 
				
			||||||
 | 
					   * @param int $timestamp timestamp
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setCreated(int $timestamp) : User {
 | 
				
			||||||
 | 
					    $this->created = $timestamp;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set note
 | 
				
			||||||
 | 
					   * @param string $note note
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setNote(string $note) : User {
 | 
				
			||||||
 | 
					    $this->note = $note;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set URL
 | 
				
			||||||
 | 
					   * @param string $url url
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setURL(string $url) : User {
 | 
				
			||||||
 | 
					    $this->url = $url;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set avatar URL
 | 
				
			||||||
 | 
					   * @param string $url url
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setAvatarURL(string $url) : User {
 | 
				
			||||||
 | 
					    $this->avatarURL = $url;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set header URL
 | 
				
			||||||
 | 
					   * @param string $url url
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setHeaderURL(string $url) : User {
 | 
				
			||||||
 | 
					    $this->headerURL = $url;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set follower count
 | 
				
			||||||
 | 
					   * @param int $count follower count
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setFollowerCount(int $count) : User {
 | 
				
			||||||
 | 
					    $this->followerCount = $count;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set stats count
 | 
				
			||||||
 | 
					   * @param int $count status count
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setStatusCount(int $count) : User {
 | 
				
			||||||
 | 
					    $this->statusCount = $count;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set last status timestamp
 | 
				
			||||||
 | 
					   * @param int $timestamp status timestamp
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setLastStatus(int $timestamp) : User {
 | 
				
			||||||
 | 
					    $this->lastStatus = $timestamp;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Add field entry
 | 
				
			||||||
 | 
					   * @param string $name field name
 | 
				
			||||||
 | 
					   * @param string $value field value
 | 
				
			||||||
 | 
					   * @param int $verified verified timestamp
 | 
				
			||||||
 | 
					   * @return User current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function addField(string $name, string $value, int $verified) : User {
 | 
				
			||||||
 | 
					    $this->fields[] = array(
 | 
				
			||||||
 | 
					      "name" => $name,
 | 
				
			||||||
 | 
					      "value" => $value,
 | 
				
			||||||
 | 
					      "verified_at" => ($verified > 0) ? gmdate("Y-m-d\TH:i:S\Z", $verified) : null
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = array(
 | 
				
			||||||
 | 
					      "username" => $this->userName,
 | 
				
			||||||
 | 
					      "acct" => $this->accountName,
 | 
				
			||||||
 | 
					      "display_name" => $this->displayName,
 | 
				
			||||||
 | 
					      "locked" => $this->locked,
 | 
				
			||||||
 | 
					      "bot" => $this->bot,
 | 
				
			||||||
 | 
					      "discoverable" => $this->discoverable,
 | 
				
			||||||
 | 
					      "group" => $this->group,
 | 
				
			||||||
 | 
					      "created_at" => gmdate("Y-m-d\TH:i:S\Z", $this->created),
 | 
				
			||||||
 | 
					      "note" => $this->note,
 | 
				
			||||||
 | 
					      "url" => $this->url,
 | 
				
			||||||
 | 
					      "avatar" => $this->avatarURL,
 | 
				
			||||||
 | 
					      "avatar_static" => $this->avatarURL,
 | 
				
			||||||
 | 
					      "header" => $this->headerURL,
 | 
				
			||||||
 | 
					      "header_static" => $this->headerURL,
 | 
				
			||||||
 | 
					      "followers_count" => $this->followerCount,
 | 
				
			||||||
 | 
					      "statuses_count" => $this->statusCount,
 | 
				
			||||||
 | 
					      "emojis" => [],
 | 
				
			||||||
 | 
					      "fields" => $this->fields
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    if ($this->lastStatus > 0) $return['last_status_at'] = gmdate("Y-m-d", $this->lastStatus);
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										37
									
								
								src/ContentNation/ActivityPub/Common/Video.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/ContentNation/ActivityPub/Common/Video.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Common;
 | 
				
			||||||
 | 
					require_once("Document.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Video extends Document {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * is live broadcast
 | 
				
			||||||
 | 
					   * @var ?bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $isLiveBroadcast = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct() {
 | 
				
			||||||
 | 
					    parent::__construct("Video");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @param array<string, mixed> $json input
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function fromJson($json) : bool {
 | 
				
			||||||
 | 
					    if (array_key_exists('isLiveBroadcast', $json)) {
 | 
				
			||||||
 | 
					      $this->isLiveBroadcast = $json['isLiveBroadcast'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return parent::fromJson($json);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = parent::toObject();
 | 
				
			||||||
 | 
					    if ($this->isLiveBroadcast !== null ) {
 | 
				
			||||||
 | 
					      $return['isLiveBroadcast'] = $this->isLiveBroadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										302
									
								
								src/ContentNation/ActivityPub/Factory.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										302
									
								
								src/ContentNation/ActivityPub/Factory.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,302 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * ContentNation.net activitpub server implementation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @link      https://contentnation.net
 | 
				
			||||||
 | 
					 * @copyright Copyright (c) Sascha Nitsch Unternehmenberatung GmbH
 | 
				
			||||||
 | 
					 * @license   https://www.gnu.org/licenses/lgpl-2.1.html GNU Lesser General Public License, Version 2.1
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * See the LICENSE file in the project root for more information.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Factory class for creating various ActivityPub classes
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class Factory {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new create message
 | 
				
			||||||
 | 
					   * @retval Message\Create new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function createMessage() : Message\Create {
 | 
				
			||||||
 | 
					    require_once("Message/Create.php");
 | 
				
			||||||
 | 
					    return new Message\Create();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Document object
 | 
				
			||||||
 | 
					   * @retval Common\Document new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newDocument() : Common\Document {
 | 
				
			||||||
 | 
					    require_once("Common/Document.php");
 | 
				
			||||||
 | 
					    return new Common\Document();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Image object
 | 
				
			||||||
 | 
					   * @retval Common\Image new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newImage() : Common\Image {
 | 
				
			||||||
 | 
					    require_once("Common/Image.php");
 | 
				
			||||||
 | 
					    return new Common\Image();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new response for instance requests
 | 
				
			||||||
 | 
					   * @retval \Response\Instance new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newInstanceResponse() : Response\Instance {
 | 
				
			||||||
 | 
					    return new Response\Instance();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Article object
 | 
				
			||||||
 | 
					   * @retval Common\Article new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newArticle() : Common\Article {
 | 
				
			||||||
 | 
					    require_once("Common/Article.php");
 | 
				
			||||||
 | 
					    return new Common\Article();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Collection object
 | 
				
			||||||
 | 
					   * @retval Common\Collection new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newCollection() : Common\Collection {
 | 
				
			||||||
 | 
					    require_once("Common/Collection.php");
 | 
				
			||||||
 | 
					    return new Common\Collection();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Note object
 | 
				
			||||||
 | 
					   * @retval Common\Note new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newNote() : Common\Note {
 | 
				
			||||||
 | 
					    require_once("Common/Note.php");
 | 
				
			||||||
 | 
					    return new Common\Note();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Outbox object
 | 
				
			||||||
 | 
					   * @retval Common\Outbox new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newOutbox() : Common\Outbox {
 | 
				
			||||||
 | 
					    require_once("Common/Outbox.php");
 | 
				
			||||||
 | 
					    return new Common\Outbox();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new OrderedCollection object
 | 
				
			||||||
 | 
					   * @retval Common\OrderedCollection new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newOrderedCollection() : Common\OrderedCollection {
 | 
				
			||||||
 | 
					    require_once("Common/OrderedCollection.php");
 | 
				
			||||||
 | 
					    return new Common\OrderedCollection();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Page object
 | 
				
			||||||
 | 
					   * @retval Common\Page new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newPage() : Common\Page {
 | 
				
			||||||
 | 
					    require_once("Common/Page.php");
 | 
				
			||||||
 | 
					    return new Common\Page();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new stats object
 | 
				
			||||||
 | 
					   * @retval Common\Stats new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newStats() : Common\Stats {
 | 
				
			||||||
 | 
					    return new Common\Stats();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new contact object
 | 
				
			||||||
 | 
					   * @retval Common\User new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newUser() : Common\User {
 | 
				
			||||||
 | 
					    return new Common\User();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Tag object
 | 
				
			||||||
 | 
					   * @retval Common\Tag new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newTag() : Common\Tag {
 | 
				
			||||||
 | 
					    require_once("Common/Tag.php");
 | 
				
			||||||
 | 
					    return new Common\Tag();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Follow object
 | 
				
			||||||
 | 
					   * @retval Common\Follow new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newFollow() : Common\Follow {
 | 
				
			||||||
 | 
					    require_once("Common/Follow.php");
 | 
				
			||||||
 | 
					    return new Common\Follow();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Question object
 | 
				
			||||||
 | 
					   * @retval Common\Question new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newQuestion() : Common\Question {
 | 
				
			||||||
 | 
					    require_once("Common/Question.php");
 | 
				
			||||||
 | 
					    return new Common\Question();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Undo object
 | 
				
			||||||
 | 
					   * @retval Common\Undo new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newUndo() : Common\Undo {
 | 
				
			||||||
 | 
					    require_once("Common/Undo.php");
 | 
				
			||||||
 | 
					    return new Common\Undo();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Video object
 | 
				
			||||||
 | 
					   * @retval Common\Video new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newVideo() : Common\Video {
 | 
				
			||||||
 | 
					    require_once("Common/Video.php");
 | 
				
			||||||
 | 
					    return new Common\Video();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					////////////////////// Activities
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Accept object
 | 
				
			||||||
 | 
					   * @return Common\Accept new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newAccept() : Common\Accept {
 | 
				
			||||||
 | 
					    require_once("Common/Accept.php");
 | 
				
			||||||
 | 
					    return new Common\Accept();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Announce object
 | 
				
			||||||
 | 
					   * @return Common\Announce new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newAnnounce() : Common\Announce {
 | 
				
			||||||
 | 
					    require_once("Common/Announce.php");
 | 
				
			||||||
 | 
					    return new Common\Announce();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Create object
 | 
				
			||||||
 | 
					   * @return Common\Create new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newCreate() : Common\Create {
 | 
				
			||||||
 | 
					    require_once("Common/Create.php");
 | 
				
			||||||
 | 
					    return new Common\Create();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Delete object
 | 
				
			||||||
 | 
					   * @return Common\Delete new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newDelete() : Common\Delete {
 | 
				
			||||||
 | 
					    require_once("Common/Delete.php");
 | 
				
			||||||
 | 
					    return new Common\Delete();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * get a new Event object
 | 
				
			||||||
 | 
					   * @return Common\Event new instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newEvent() : Common\Event {
 | 
				
			||||||
 | 
					    require_once("Common/Event.php");
 | 
				
			||||||
 | 
					    return new Common\Event();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object tree from json
 | 
				
			||||||
 | 
					   * @param array<string, mixed> $json input json
 | 
				
			||||||
 | 
					   * @return Common\APObject|false object or false on error
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newFromJson($json, string $jsonstring) {
 | 
				
			||||||
 | 
					    if (gettype($json) !== "array") {
 | 
				
			||||||
 | 
					      error_log("newFromJson called with ".gettype($json). " => ". debug_backtrace()[1]['function'] . " json: " . print_r($json, true));
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (!array_key_exists('type', $json)) {
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $return = false;
 | 
				
			||||||
 | 
					    switch($json['type']) {
 | 
				
			||||||
 | 
					      case 'Article':
 | 
				
			||||||
 | 
					        $return = Factory::newArticle();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Document':
 | 
				
			||||||
 | 
					        $return = Factory::newDocument();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Event':
 | 
				
			||||||
 | 
					        $return = Factory::newEvent();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Follow':
 | 
				
			||||||
 | 
					        $return = Factory::newFollow();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Image':
 | 
				
			||||||
 | 
					        $return = Factory::newImage();
 | 
				
			||||||
 | 
					        /*error_log("Image: ". print_r($json, true));
 | 
				
			||||||
 | 
					        error_log("Image json " . $jsonstring);*/
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Note':
 | 
				
			||||||
 | 
					        $return = Factory::newNote();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Question':
 | 
				
			||||||
 | 
					        $return = Factory::newQuestion();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Video':
 | 
				
			||||||
 | 
					        // error_log("newFromJson: video " . $jsonstring);
 | 
				
			||||||
 | 
					        $return = Factory::newVideo();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      default:
 | 
				
			||||||
 | 
					        error_log("newFromJson: unknown type: '" . $json['type'] . "' " . $jsonstring);
 | 
				
			||||||
 | 
					        error_log(print_r($json, true));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($return !== false && $return->fromJson($json)) {
 | 
				
			||||||
 | 
					      return $return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * create object tree from json
 | 
				
			||||||
 | 
					   * @param array<string, mixed> $json input json
 | 
				
			||||||
 | 
					   * @return Common\Activity|false object or false on error
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static function newActivityFromJson($json) {
 | 
				
			||||||
 | 
					    if (!array_key_exists('type', $json)) {
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $return = false;
 | 
				
			||||||
 | 
					    switch($json['type']) {
 | 
				
			||||||
 | 
					      case 'Accept':
 | 
				
			||||||
 | 
					        $return = Factory::newAccept();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Announce':
 | 
				
			||||||
 | 
					        $return = Factory::newAnnounce();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Create':
 | 
				
			||||||
 | 
					        $return = Factory::newCreate();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Delete':
 | 
				
			||||||
 | 
					        $return = Factory::newDelete();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Follow':
 | 
				
			||||||
 | 
					        $return = Factory::newFollow();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Undo':
 | 
				
			||||||
 | 
					        $return = Factory::newUndo();
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      default:
 | 
				
			||||||
 | 
					        error_log("newActivityFromJson " . print_r($json, true));
 | 
				
			||||||
 | 
					        echo "unknown activity type: '" . $json['type'] . "'\n";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($return !== false && $return->fromJson($json)) {
 | 
				
			||||||
 | 
					      return $return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										70
									
								
								src/ContentNation/ActivityPub/Message/Create.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/ContentNation/ActivityPub/Message/Create.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,70 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Message;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Create {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * unique id
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $id = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * actor
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $actor = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * object to create
 | 
				
			||||||
 | 
					   * @var \ContentNation\ActivityPub\Common\APObject
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $object = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set id
 | 
				
			||||||
 | 
					   * @param string $id new id
 | 
				
			||||||
 | 
					   * @return Create current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setID(string $id) : Create {
 | 
				
			||||||
 | 
					    $this->id = $id;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set actor
 | 
				
			||||||
 | 
					   * @param string $actor new actor
 | 
				
			||||||
 | 
					   * @return Create current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setActor(string $actor) : Create {
 | 
				
			||||||
 | 
					    $this->actor = $actor;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set object to create
 | 
				
			||||||
 | 
					   * @param \ContentNation\ActivityPub\Common\APObject $object object to create
 | 
				
			||||||
 | 
					   * @return Create current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setObject(\ContentNation\ActivityPub\Common\APObject $object) : Create {
 | 
				
			||||||
 | 
					    $this->object = $object;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function toObject() {
 | 
				
			||||||
 | 
					    $return = array(
 | 
				
			||||||
 | 
					      '@context' => 'https://www.w3.org/ns/activitystreams',
 | 
				
			||||||
 | 
					      'id' => $this->id,
 | 
				
			||||||
 | 
					      'type' => 'Create',
 | 
				
			||||||
 | 
					      'actor' => $this->actor,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    if ($this->object !== null) {
 | 
				
			||||||
 | 
					      $return['object'] = $this->object->toObject();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					   return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										235
									
								
								src/ContentNation/ActivityPub/Response/Instance.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										235
									
								
								src/ContentNation/ActivityPub/Response/Instance.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,235 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace ContentNation\ActivityPub\Response;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Instance {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Service URI
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $uri = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Service title
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $title = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Short description
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $shortDescription = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Long description
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $description = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * E-Mail
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $email = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Version
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $version = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Thumbnail URL
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $thumbnail = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Is registration allowed
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $registration = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Is approval required
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $approval = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Are invites enabled
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $invites = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Languages
 | 
				
			||||||
 | 
					   * @var string[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $languages = ['en'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Stats object
 | 
				
			||||||
 | 
					   * @var ?\ContentNation\ActivityPub\Common\Stats
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $stats = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Contact object
 | 
				
			||||||
 | 
					   * @var ?\ContentNation\ActivityPub\Common\User
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  private $contact = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * set uri
 | 
				
			||||||
 | 
					   * @param string $uri
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setURI(string $uri) : Instance {
 | 
				
			||||||
 | 
					    $this->uri = $uri;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set title
 | 
				
			||||||
 | 
					   * @param string $title
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setTitle(string $title) : Instance {
 | 
				
			||||||
 | 
					    $this->title = $title;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set short description
 | 
				
			||||||
 | 
					   * @param string $short
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setShortDescription(string $short) : Instance {
 | 
				
			||||||
 | 
					    $this->shortDescription = $short;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set description
 | 
				
			||||||
 | 
					   * @param string $description
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setDescription(string $description) : Instance {
 | 
				
			||||||
 | 
					    $this->description = $description;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set E-Mail
 | 
				
			||||||
 | 
					   * @param string $email
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setEmail(string $email) : Instance {
 | 
				
			||||||
 | 
					    $this->email = $email;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set version
 | 
				
			||||||
 | 
					   * @param string $version
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setVersion(string $version) : Instance {
 | 
				
			||||||
 | 
					    $this->version = $version;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set thumbnail image
 | 
				
			||||||
 | 
					   * @param string $thumbnail
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setThumbnail(string $thumbnail) : Instance {
 | 
				
			||||||
 | 
					    $this->thumbnail = $thumbnail;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set registration allowed
 | 
				
			||||||
 | 
					   * @param bool $allowed
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setRegistration(bool $allowed) : Instance {
 | 
				
			||||||
 | 
					    $this->registration = $allowed;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set approval required
 | 
				
			||||||
 | 
					   * @param bool $required
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setApproval(bool $required) : Instance {
 | 
				
			||||||
 | 
					    $this->approval = $required;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set invited enabled
 | 
				
			||||||
 | 
					   * @param bool $invites
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setInvites(bool $invites) : Instance {
 | 
				
			||||||
 | 
					    $this->invites = $invites;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set languages
 | 
				
			||||||
 | 
					   * @param string[] $languages
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setLanguages($languages) : Instance {
 | 
				
			||||||
 | 
					    $this->languages = $languages;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set stats object
 | 
				
			||||||
 | 
					   * @param \ContentNation\ActivityPub\Common\Stats $stats
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setStats($stats) : Instance {
 | 
				
			||||||
 | 
					    $this->stats = $stats;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Set contact object
 | 
				
			||||||
 | 
					   * @param \ContentNation\ActivityPub\Common\User $user
 | 
				
			||||||
 | 
					   * @return Instance current instance
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function setcontact($user) : Instance {
 | 
				
			||||||
 | 
					    $this->contact = $user;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * convert internal state to php array
 | 
				
			||||||
 | 
					   * @return array<string,mixed>
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  function toObject() {
 | 
				
			||||||
 | 
					    $return = array(
 | 
				
			||||||
 | 
					      'uri' => $this->uri,
 | 
				
			||||||
 | 
					      'title' => $this->title,
 | 
				
			||||||
 | 
					      'short_description' => $this->shortDescription,
 | 
				
			||||||
 | 
					      'description' => $this->description,
 | 
				
			||||||
 | 
					      'email' => $this->email,
 | 
				
			||||||
 | 
					      'version' => $this->version,
 | 
				
			||||||
 | 
					      'thumbnail' => $this->thumbnail,
 | 
				
			||||||
 | 
					      'registrations' => $this->registration,
 | 
				
			||||||
 | 
					      'approval_required' => $this->approval,
 | 
				
			||||||
 | 
					      'invites_enabled' => $this->invites,
 | 
				
			||||||
 | 
					      'languages'=> $this->languages,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    if ($this->stats !== null) $return['stats'] = $this->stats->toObject();
 | 
				
			||||||
 | 
					    if ($this->contact !== null) $return['contact_account'] = $this->contact->toObject();
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								src/ContentNation/manualloader.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/ContentNation/manualloader.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					@include "ActivityPub/Factory.php";
 | 
				
			||||||
 | 
					@include "ActivityPub/Response/Instance.php";
 | 
				
			||||||
 | 
					@include "ActivityPub/Common/Stats.php";
 | 
				
			||||||
 | 
					@include "ActivityPub/Common/User.php";
 | 
				
			||||||
 | 
					@include "ActivityPub/Common/Note.php";
 | 
				
			||||||
 | 
					@include "ActivityPub/Common/Image.php";
 | 
				
			||||||
 | 
					@include "ActivityPub/Common/Question.php";
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue