Skip to content
Snippets Groups Projects
Select Git revision
  • 4b160476327ecb893c08ce4deb29ce1180f6e0ef
  • 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

Institute.php

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.
    Institute.php 2.83 KiB
    <?php
    
    namespace JsonApi\Schemas;
    
    use Neomerx\JsonApi\Contracts\Schema\ContextInterface;
    use Neomerx\JsonApi\Schema\Link;
    
    class Institute extends SchemaProvider
    {
        const TYPE = 'institutes';
    
        const REL_BLUBBER = 'blubber-threads';
        const REL_FILES = 'file-refs';
        const REL_FOLDERS = 'folders';
        const REL_MEMBERSHIPS = 'memberships';
        const REL_STATUS_GROUPS = 'status-groups';
    
        public function getId($institute): ?string
        {
            return $institute->id;
        }
    
        public function getAttributes($institute, ContextInterface $context): iterable
        {
            return [
                'name' => (string) $institute['Name'],
                'city' => $institute['Plz'],
                'street' => $institute['Strasse'],
                'phone' => $institute['telefon'],
                'fax' => $institute['fax'],
                'url' => $institute['url'],
                'mkdate' => date('c', $institute['mkdate']),
                'chdate' => date('c', $institute['chdate']),
            ];
        }
    
        /**
         * @SuppressWarnings(PHPMD.UnusedFormalParameter)
         */
        public function getRelationships($resource, ContextInterface $context): iterable
        {
            $relationships = [];
    
            $filesLink = $this->getRelationshipRelatedLink($resource, self::REL_FILES);
            $relationships[self::REL_FILES] = [
                self::RELATIONSHIP_LINKS => [
                    Link::RELATED => $filesLink,
                ],
            ];
    
            $foldersLink = $this->getRelationshipRelatedLink($resource, self::REL_FOLDERS);
            $relationships[self::REL_FOLDERS] = [
                self::RELATIONSHIP_LINKS => [
                    Link::RELATED => $foldersLink,
                ],
            ];
    
            $relationships[self::REL_BLUBBER] = [
                self::RELATIONSHIP_LINKS => [
                    Link::RELATED => $this->getRelationshipRelatedLink($resource, self::REL_BLUBBER),
                ],
            ];
    
            $relationships[self::REL_MEMBERSHIPS] = [
                self::RELATIONSHIP_LINKS => [
                    Link::RELATED => $this->getRelationshipRelatedLink($resource, self::REL_MEMBERSHIPS),
                ],
            ];
    
            $relationships = $this->addStatusGroupsRelationship(
                $relationships,
                $resource,
                $this->shouldInclude($context, self::REL_STATUS_GROUPS)
            );
    
            return $relationships;
        }
    
        private function addStatusGroupsRelationship(
            array $relationships,
            $resource,
            $includeData
        ) {
            $relation = [
                self::RELATIONSHIP_LINKS => [
                    Link::RELATED => $this->getRelationshipRelatedLink($resource, self::REL_STATUS_GROUPS),
                ]
            ];
            if ($includeData) {
                $related = $resource->status_groups;
                $relation[self::RELATIONSHIP_DATA] = $related;
            }
    
            return array_merge($relationships, [self::REL_STATUS_GROUPS => $relation]);
        }
    }