/** * @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); }
/** * @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]); }
/** * @param ResourceEntityInterface $entity */ private function getKeyFromEntity(ResourceEntityInterface $entity) { $class = $this->metadataCache->getReflection($entity); return $class->getName() . '-' . EntityResource::getStringId($entity); }
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; }