context = $context; return $this; } public function setActor($profile) { $this->actor = $profile; return $this; } public function setActorActivity($activity) { $this->activity = $activity; $this->setPublishedAt($activity->created_at->format('Y-m-d\Th:i:s\Z')); return $this; } public function setTo($audience) { $this->to = $audience; return $this; } public function setCc($audience) { $this->cc = $audience; return $this; } public function setBcc($audience) { $this->bcc = $audience; return $this; } public function setPublishedAt($timestamp) { $this->publishedAt = $timestamp; return $this; } public function audience($audience) { $this->setAudience($audience); $this->buildAudience(); return $this; } public function setAudience($audience) { if(in_array($audience, $this->audience)) { $this->audience = $audience; } return $this; } public function buildAudience() { switch ($this->audience) { case 'public': $this->to = [ $this->context . '#Public' ]; $this->cc = [ $this->actor->permalink('/followers') ]; break; case 'unlisted': $this->to = [ $this->actor->permalink('/followers') ]; $this->cc = [ $this->context . '#Public' ]; break; case 'private': $this->to = [ $this->actor->permalink('/followers') ]; break; default: # code... break; } return $this; } public function get() { return $this->getJson(); } public function getJson() { return json_encode($this->response); } public function getArray() { return $this->response; } }