From a904294db09ccaa93a5b561e7cd177026010e601 Mon Sep 17 00:00:00 2001 From: winter Date: Wed, 7 May 2025 19:37:08 +0100 Subject: implement extension objects at a basic level --- Digitigrade/Model/ExtensionObject.php | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Digitigrade/Model/ExtensionObject.php (limited to 'Digitigrade/Model') diff --git a/Digitigrade/Model/ExtensionObject.php b/Digitigrade/Model/ExtensionObject.php new file mode 100644 index 0000000..8df8148 --- /dev/null +++ b/Digitigrade/Model/ExtensionObject.php @@ -0,0 +1,43 @@ +uri]) != null) + return 'uri = ' . $db->quote($this->uri); + if (self::findWhere('id = ?', [$this->id]) != null) + return "id = $this->id"; + return null; + } + + protected static function createFromJson(\stdClass $data, bool $autoSave, ?string $uri = null): static { + $obj = new static(); + $obj->uri = $data->self; + $obj->extension = $data->extension; + unset($data->self, $data->extension, $data->type); + $obj->data = clone $data; + $data->self = $obj->uri; + $data->extension = $obj->extension; + $data->type = 'extension'; + return $obj; + } + + public function getRelevantServers(): array { + // TODO + return []; + } + + public function jsonSerialize(): mixed { + return [ + 'type' => 'extension', + 'self' => path_to_uri("/extension/$this->id"), + 'extension' => $this->extension, + ...get_object_vars($this->data) + ]; + } +} \ No newline at end of file -- cgit v1.3