コード例 #1
0
 /**
  * @param array $relationship
  * @param ResourceEntityInterface $entity
  * @param LinkedResourcesSerialization $resourcesSerialization
  */
 protected function addLinkedResource(ResourceRelationship $relationship, ResourceEntityInterface $entity, LinkedResourcesSerialization $resourcesSerialization)
 {
     if (!$this->securityContext->isGranted(static::ACCESS_VIEW, $entity) || $this->document->linkedResources->hasResource($relationship->type, EntityResource::getStringId($entity))) {
         return;
     }
     $resource = $this->document->linkedResources->addResourceForEntity($entity);
     $resourceObject = $this->serializeResourceObject($resource);
     $resourcesSerialization->addLinkedResource($resource, $resourceObject);
 }
コード例 #2
0
 /**
  * @param ResourceEntityInterface $entity
  * @return boolean
  */
 protected function hasResourceForEntity(ResourceEntityInterface $entity)
 {
     $class = $this->metadataCache->getReflection($entity);
     $id = EntityResource::getStringId($entity);
     return isset(self::$resourcesByClass[$class->getName()][$id]);
 }
コード例 #3
0
 /**
  * @param ResourceEntityInterface $entity
  */
 private function getKeyFromEntity(ResourceEntityInterface $entity)
 {
     $class = $this->metadataCache->getReflection($entity);
     return $class->getName() . '-' . EntityResource::getStringId($entity);
 }
コード例 #4
0
 private function getResourceLinks(EntityResource $resource)
 {
     $links = [];
     foreach ($this->resource->getMetadata()->relationships->toOne as $relationship => $relation) {
         $entity = $this->resource->callGetter($relationship);
         EntityResource::validateToOneRelation($entity, $relationship);
         $links[$relationship] = $this->securityContext->isGranted(static::ACCESS_VIEW, $entity) ? EntityResource::getStringId($entity) : NULL;
     }
     foreach ($this->resource->getMetadata()->relationships->toMany as $relationship => $relation) {
         $collection = $this->resource->callGetter($relationship);
         $collection = EntityResource::normalizeToManyRelation($collection, $relationship);
         $links[$relationship] = [];
         foreach ($collection as $entity) {
             if (!$this->securityContext->isGranted(static::ACCESS_VIEW, $entity)) {
                 continue;
             }
             $links[$relationship][] = EntityResource::getStringId($entity);
         }
     }
     return $links;
 }