diff options
Diffstat (limited to 'WpfTest/Model/Note.php')
| -rw-r--r-- | WpfTest/Model/Note.php | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/WpfTest/Model/Note.php b/WpfTest/Model/Note.php deleted file mode 100644 index af2d2aa..0000000 --- a/WpfTest/Model/Note.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php -namespace WpfTest\Model; - -use WpfTest\Db; - -class Note extends FetchableModel implements \JsonSerializable { - public ?int $id; - public string $uri; - public \DateTimeImmutable $created; - public ?\DateTimeImmutable $modified; - public Actor $author; - public ?string $summary; - public string $plainContent; - /** - * @var array<string, string> - */ - public array $formattedContent = []; - public string $language; - /** - * @var Actor[] - */ - public array $mentions = []; - public ?Note $inReplyTo; - public ?Note $threadApex; - public NotePrivacy $privacy; - /** - * @var NoteAttachment[] - */ - public array $attachments = []; - public array $extensions = []; - - protected function getUpdateWhereClause(\PDO $db): ?string { - if (self::findWhere('uri = ?', [$this->uri]) != null) - return 'uri = ' . $db->quote($this->uri); - if (self::findWhere('id = ?', [$this->id]) != null) - return "id = $this->id"; - return null; - } - - protected function hydrate() { - $this->privacy = NotePrivacy::findWhere('note_id = ?', [$this->id]); - $this->formattedContent = $this->findFormattedContents(); - $this->mentions = $this->findMentions(); - $this->attachments = NoteAttachment::findAllWhere('note_id = ?', [$this->id]); - } - - private function findFormattedContents(): array { - $pdo = Db::getInstance()->getPdo(); - $stmt = $pdo->prepare('SELECT mimetype, body FROM note_formatted_content WHERE note_id = ?'); - $stmt->execute([$this->id]); - return $stmt->fetchAll(\PDO::FETCH_ASSOC); - } - - private function findMentions(): array { - $pdo = Db::getInstance()->getPdo(); - $stmt = $pdo->prepare('SELECT actor_id FROM note_mention WHERE note_id = ?'); - $stmt->execute([$this->id]); - $actors = array_map(function ($actorId) { - return Actor::find($actorId); - }, $stmt->fetchAll(\PDO::FETCH_COLUMN, 0)); - return $actors; - } - - public static function findAllWithAuthor(Actor $author): array { - return self::findAllWhere('author = ?', [$author->id]); - } - - public function jsonSerialize(): array { - return [ - 'type' => 'note', - 'self' => path_to_uri("/post/$this->id"), - 'created' => $this->created->format('c'), - 'modified' => $this->modified?->format('c'), - 'author' => $this->author->uri, - 'summary' => $this->summary, - 'plainContent' => $this->plainContent, - 'formattedContent' => $this->formattedContent, - 'language' => $this->language, - 'mentions' => array_map(function (Actor $actor) { - return $actor->uri; - }, $this->mentions), - 'inReplyTo' => $this->inReplyTo?->uri, - 'threadApex' => $this->threadApex?->uri, - 'privacy' => $this->privacy, - 'attachments' => array_map(function (NoteAttachment $attachment) { - return [ - 'type' => $attachment->type, - 'href' => $attachment->href, - 'description' => $attachment->description - ]; - }, $this->attachments), - //'extensions' => [] - ]; - } -}
\ No newline at end of file |
