/** * @param array $value * * @return array */ protected function serialization(array &$value) { $data = [self::DATA_KEY => \array_merge(PropertyHelper::setResponseDataTypeAndId($this->mappings, $value), DataAttributesHelper::setResponseDataAttributes($this->mappings, $value), DataLinksHelper::setResponseDataLinks($this->mappings, $value), DataLinksHelper::setResponseDataRelationship($this->mappings, $value, $value))]; DataIncludedHelper::setResponseDataIncluded($this->mappings, $value, $data); $this->setResponseLinks($value, $data); $this->setResponseMeta($data); $this->setResponseVersion($data); return $data; }
/** * @param \NilPortugues\Api\Mapping\Mapping[] $mappings * @param array $data * @param array $attributes * @param array $value */ protected static function addToIncludedArray(array &$mappings, array &$data, array &$attributes, array &$value) { if (\count($attributes) > 0) { $includedData = PropertyHelper::setResponseDataTypeAndId($mappings, $value); if (self::hasIdKey($includedData)) { $arrayData = \array_merge([JsonApiTransformer::TYPE_KEY => $includedData[JsonApiTransformer::TYPE_KEY], JsonApiTransformer::ID_KEY => $includedData[JsonApiTransformer::ID_KEY], JsonApiTransformer::ATTRIBUTES_KEY => $attributes, JsonApiTransformer::RELATIONSHIPS_KEY => []], DataLinksHelper::setResponseDataLinks($mappings, $value)); $relationshipData = []; self::addRelationshipsToIncludedResources($mappings, $relationshipData, $value, $value[Serializer::CLASS_IDENTIFIER_KEY], $attributes); if ($relationshipData) { $arrayData[JsonApiTransformer::RELATIONSHIPS_KEY] = \array_merge($arrayData[JsonApiTransformer::RELATIONSHIPS_KEY], $relationshipData); } $data[JsonApiTransformer::INCLUDED_KEY][] = \array_filter($arrayData); } } if (!empty($data[JsonApiTransformer::INCLUDED_KEY])) { $data[JsonApiTransformer::INCLUDED_KEY] = \array_values(\array_unique($data[JsonApiTransformer::INCLUDED_KEY], SORT_REGULAR)); } }
/** * @param array $value * @param array $data */ protected function setResponseLinks(array $value, array &$data) { $data[self::LINKS_KEY] = \array_filter(\array_merge($this->addHrefToLinks($this->buildLinks()), !empty($data[self::LINKS_KEY]) ? $data[self::LINKS_KEY] : [])); if (!empty($value[Serializer::CLASS_IDENTIFIER_KEY])) { $type = $value[Serializer::CLASS_IDENTIFIER_KEY]; if (\is_scalar($type) && !empty($this->mappings[$type])) { $urls = $this->mappings[$type]->getUrls(); $data[self::LINKS_KEY] = \array_filter(\array_merge(empty($data[self::LINKS_KEY]) ? [] : $data[self::LINKS_KEY], !empty($urls) ? $this->addHrefToLinks($this->getResponseAdditionalLinks($value, $type)) : [])); /* * Adds the _links:self:href link to the response. */ list($idValues, $idProperties) = RecursiveFormatterHelper::getIdPropertyAndValues($this->mappings, $value, $type); $href = DataLinksHelper::buildUrl($this->mappings, $idProperties, $idValues, $this->mappings[$type]->getResourceUrl(), $type); if ($href != $this->mappings[$type]->getResourceUrl()) { $data[self::LINKS_KEY][self::SELF_LINK][self::LINKS_HREF] = $href; } } } if (empty($data[self::LINKS_KEY])) { unset($data[self::LINKS_KEY]); } }