aboutsummaryrefslogtreecommitdiffhomepage
path: root/WpfTest/Model/Note.php
diff options
context:
space:
mode:
Diffstat (limited to 'WpfTest/Model/Note.php')
-rw-r--r--WpfTest/Model/Note.php95
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