diff --git a/lib/classes/JsonApi/Routes/Messages/BoxController.php b/lib/classes/JsonApi/Routes/Messages/BoxController.php index 39a5f41f2bede87defa1752813a59947aae0a8b3..f17f832cd12cb1eb96535704b0ba1b87a552844c 100644 --- a/lib/classes/JsonApi/Routes/Messages/BoxController.php +++ b/lib/classes/JsonApi/Routes/Messages/BoxController.php @@ -13,7 +13,7 @@ use JsonApi\JsonApiController; */ abstract class BoxController extends JsonApiController { - protected $allowedIncludePaths = ['sender', 'recipients']; + protected $allowedIncludePaths = ['sender', 'recipients', 'attachments']; protected $allowedPagingParameters = ['offset', 'limit']; diff --git a/lib/classes/JsonApi/Schemas/Message.php b/lib/classes/JsonApi/Schemas/Message.php index eeefe25094d1f07022997ee0c6cabdf950053213..8eea1fc33ef475bf6d2786ccdbb49a609e2514f0 100644 --- a/lib/classes/JsonApi/Schemas/Message.php +++ b/lib/classes/JsonApi/Schemas/Message.php @@ -10,6 +10,7 @@ class Message extends SchemaProvider const TYPE = 'messages'; const REL_SENDER = 'sender'; const REL_RECIPIENTS = 'recipients'; + const REL_ATTACHMENTS = 'attachments'; public function getId($message): ?string { @@ -25,6 +26,7 @@ class Message extends SchemaProvider 'message' => $message->message, 'mkdate' => date('c', $message->mkdate), 'is-read' => (bool) $message->isRead($user->id), + 'is-answered' => (bool) $message->isAnswered($user->id), 'priority' => $message->priority, 'tags' => $message->getTags(), ]; @@ -38,6 +40,7 @@ class Message extends SchemaProvider if ($isPrimary) { $relationships = $this->getSenderRelationship($relationships, $message, $this->shouldInclude($context, self::REL_SENDER)); $relationships = $this->getRecipientsRelationship($relationships, $message, $this->shouldInclude($context, self::REL_RECIPIENTS)); + $relationships = $this->getAttachmentsRelationship($relationships, $message, $this->shouldInclude($context, self::REL_ATTACHMENTS)); } return $relationships; @@ -75,4 +78,16 @@ class Message extends SchemaProvider return $relationships; } + + private function getAttachmentsRelationship(array $relationships, \Message $message, bool $shouldInclude) + { + $attachments = $message->attachment_folder->file_refs; + + $relationships[self::REL_ATTACHMENTS] = [ + // self::RELATIONSHIP_LINKS_SELF => true, + self::RELATIONSHIP_DATA => $attachments ? $attachments->map(function ($a) { return \FileRef::build(['id' => $a->id], false); }) : [], + ]; + + return $relationships; + } } diff --git a/lib/models/Message.class.php b/lib/models/Message.class.php index 05cfc39feb29868f9f1117cc02f58a6de960580a..8d408e88743ad9e7f6b6361824de2f36935958b7 100644 --- a/lib/models/Message.class.php +++ b/lib/models/Message.class.php @@ -21,7 +21,7 @@ * @property string readed database column * @property string priority database column * @property SimpleORMapCollection receivers has_many MessageUser - * @property SimpleORMapCollection attachment_folder has_one Folder + * @property Folder $attachment_folder has_one Folder * @property User author has_one User * @property MessageUser originator has_one MessageUser */