protected function transformEmbedded(array $data) { $resource = new Resource(); isset($data['attributes'][self::LINK_KEY_HREF]) && $resource->setURI($data['attributes'][self::LINK_KEY_HREF]); isset($data['attributes'][self::LINK_KEY_TITLE]) && $resource->setTitle($data['attributes'][self::LINK_KEY_TITLE]); $embeddeds = []; $links = []; $data2 = []; foreach ($data['values'] as &$node) { if ($this->nodeIsResource($node)) { $embeddeds[$node['attributes']['rel']][] = $this->transformEmbedded($node); } elseif ($this->nodeIsLink($node)) { $links[$node['attributes']['rel']][] = $this->transformLink($node); } else { if (is_array($node['values'])) { $toSave = []; foreach ($node['values'] as &$value) { $toSave[$value['name']][] = $value['values']; } } else { $toSave = $node['values']; } $data2[$node['name']][] = $toSave; } } $resource->setData($data2); foreach ($links as $rel => $link) { $resource->setLinks($rel, $link); } foreach ($embeddeds as $rel => $embedded) { $resource->addResources($rel, $embedded); } return $resource; }
protected function transformEmbeddeds(Resource $resource, array $embeddedsByRel) { foreach ($embeddedsByRel as $rel => $data) { if ($this->isAssocArray($data)) { $embedded = $this->doTransformEmbedded($data); $resource->addResource($rel, $embedded); } else { $embeddeds = $this->doTransformEmbeddeds($data); $resource->addResources($rel, $embeddeds); } } }