/** * Get included resources. * * @param ElementInterface $element * @param bool $includeParent * @return Resource[] */ protected function getIncluded(ElementInterface $element, $includeParent = false) { $included = []; foreach ($element->getResources() as $resource) { if ($resource->isIdentifier()) { continue; } if ($includeParent) { $included = $this->mergeResource($included, $resource); } else { $type = $resource->getType(); $id = $resource->getId(); } foreach ($resource->getUnfilteredRelationships() as $relationship) { $includedElement = $relationship->getData(); if (!$includedElement instanceof ElementInterface) { continue; } foreach ($this->getIncluded($includedElement, true) as $child) { // If this resource is the same as the top-level "data" // resource, then we don't want it to show up again in the // "included" array. if (!$includeParent && $child->getType() === $type && $child->getId() === $id) { continue; } $included = $this->mergeResource($included, $child); } } } $flattened = []; array_walk_recursive($included, function ($a) use(&$flattened) { $flattened[] = $a; }); return $flattened; }
/** * Get included resources. * * @param ElementInterface $element * @param bool $includeParent * @return Resource[] */ protected function getIncluded(ElementInterface $element, $includeParent = false) { $included = []; foreach ($element->getResources() as $resource) { if ($includeParent) { $included = $this->mergeResource($included, $resource); } foreach ($resource->getRelationships() as $relationship) { $includedElement = $relationship->getData(); foreach ($this->getIncluded($includedElement, true) as $child) { $included = $this->mergeResource($included, $child); } } } return $included; }
/** * Get included resources. * * @param ElementInterface $element * @param bool $includeParent * @return Resource[] */ protected function getIncluded(ElementInterface $element, $includeParent = false) { $included = []; foreach ($element->getResources() as $resource) { if ($resource->isIdentifier()) { continue; } if ($includeParent) { $included = $this->mergeResource($included, $resource); } foreach ($resource->getUnfilteredRelationships() as $relationship) { $includedElement = $relationship->getData(); foreach ($this->getIncluded($includedElement, true) as $child) { $included = $this->mergeResource($included, $child); } } } $flattened = []; array_walk_recursive($included, function ($a) use(&$flattened) { $flattened[] = $a; }); return $flattened; }