Skip to content
Snippets Groups Projects
Select Git revision
  • 7527e4a71c8c94bf7fd701de58a6e373481be8d5
  • main default protected
  • step-3263
  • feature/plugins-cli
  • feature/vite
  • step-2484-peerreview
  • biest/issue-5051
  • tests/simplify-jsonapi-tests
  • fix/typo-in-1a70031
  • feature/broadcasting
  • database-seeders-and-factories
  • feature/peer-review-2
  • feature-feedback-jsonapi
  • feature/peerreview
  • feature/balloon-plus
  • feature/stock-images-unsplash
  • tic-2588
  • 5.0
  • 5.2
  • biest/unlock-blocks
  • biest-1514
21 results

CoursewareToolbar.vue

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Message.php 3.09 KiB
    <?php
    
    namespace JsonApi\Schemas;
    
    use Neomerx\JsonApi\Contracts\Schema\ContextInterface;
    use Neomerx\JsonApi\Schema\Link;
    
    class Message extends SchemaProvider
    {
        const TYPE = 'messages';
        const REL_SENDER = 'sender';
        const REL_RECIPIENTS = 'recipients';
        const REL_ATTACHMENTS = 'attachments';
    
        public function getId($message): ?string
        {
            return $message->id;
        }
    
        public function getAttributes($message, ContextInterface $context): iterable
        {
            $user = $this->currentUser;
    
            return [
                'subject' => $message->subject,
                '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(),
            ];
        }
    
        public function getRelationships($message, ContextInterface $context): iterable
        {
            $relationships = [];
    
            $isPrimary = $context->getPosition()->getLevel() === 0;
            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;
        }
    
        private function getSenderRelationship(array $relationships, \Message $message, $includeData)
        {
            $userId = $message->getSender()->id;
    
            $data = null;
            if ($userId) {
                $data = $includeData ? \User::find($userId) : \User::build(['id' => $userId], false);
    
                $relationships[self::REL_SENDER] = [
                    // self::RELATIONSHIP_LINKS_SELF => true,
                    self::RELATIONSHIP_LINKS => [
                        Link::RELATED => $this->createLinkToResource($data),
                    ],
                    self::RELATIONSHIP_DATA => $data,
                ];
            }
    
            return $relationships;
        }
    
        /**
         * @SuppressWarnings(PHPMD.UnusedFormalParameter)
         */
        private function getRecipientsRelationship(array $relationships, \Message $message, $includeData)
        {
            $relationships[self::REL_RECIPIENTS] = [
                // self::RELATIONSHIP_LINKS_SELF => true,
                self::RELATIONSHIP_DATA => $message->receivers->map(function ($i) { return $i->user; }),
            ];
    
            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;
        }
    }