Skip to content
Snippets Groups Projects
Select Git revision
  • 650de7b907980cda5e0fbf7c9c425e4c485f4a46
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

CoursewareIframeBlock.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.
    CourseMember.php 2.21 KiB
    <?php
    
    namespace JsonApi\Schemas;
    
    use JsonApi\Routes\Courses\Authority as CourseAuthority;
    use JsonApi\Routes\CourseMemberships\Authority as MembershipAuthority;
    use Neomerx\JsonApi\Contracts\Schema\ContextInterface;
    use Neomerx\JsonApi\Schema\Link;
    
    class CourseMember extends SchemaProvider
    {
        const TYPE = 'course-memberships';
        const REL_COURSE = 'course';
        const REL_USER = 'user';
    
        public function getId($membership): ?string
        {
            return $membership->id;
        }
    
        public function getAttributes($membership, ContextInterface $context): iterable
        {
            $attributes = [
                'permission' => $membership->status,
                'position' => (int) $membership->position,
                'group' => (int) $membership->gruppe,
                'mkdate' => date('c', $membership->mkdate),
                'label' => $membership->label,
            ];
    
            if ($this->currentUser) {
                if (MembershipAuthority::canIndexMembershipsOfUser($this->currentUser, $membership->user)) {
                    # TODO: $attributes['notification'] = (int) $membership->notification;
                    $attributes['visible'] = $membership->visible;
                }
                if (CourseAuthority::canEditCourse($this->currentUser, $membership->course)) {
                    $attributes['comment'] = $membership->comment;
                    $attributes['visible'] = $membership->visible;
                }
            }
    
            return $attributes;
        }
    
        public function getRelationships($membership, ContextInterface $context): iterable
        {
            $isPrimary = $context->getPosition()->getLevel() === 0;
    
            $relationships = [];
    
            if ($isPrimary) {
                $relationships[self::REL_COURSE] = [
                    self::RELATIONSHIP_LINKS => [
                        Link::RELATED => $this->createLinkToResource($membership->course)
                    ],
                    self::RELATIONSHIP_DATA => $membership->course,
                ];
    
                $relationships[self::REL_USER] = [
                    self::RELATIONSHIP_LINKS => [
                        Link::RELATED => $this->createLinkToResource($membership->user)
                    ],
                    self::RELATIONSHIP_DATA => $membership->user,
                ];
            }
    
            return $relationships;
        }
    }