/**
* Convert resource object to array.
*
* @param ResourceObjectInterface $resource
* @param bool $isShowSelf
* @param mixed $meta
* @param bool $isShowAttributes
*
* @return array
*/
private function convertResourceToArray(ResourceObjectInterface $resource, $isShowSelf, $meta, $isShowAttributes)
{
$representation = [Document::KEYWORD_TYPE => $resource->getType(), Document::KEYWORD_ID => $resource->getId()];
$attributes = $resource->getAttributes();
assert('isset($attributes[\'' . Document::KEYWORD_TYPE . '\']) === false && ' . 'isset($attributes[\'' . Document::KEYWORD_ID . '\']) === false', '"type" and "id" are reserved keywords and cannot be used as resource object attributes');
if ($isShowAttributes === true && empty($attributes) === false) {
$representation[Document::KEYWORD_ATTRIBUTES] = $attributes;
}
// reserve placeholder for relationships, otherwise it would be added after
// links and meta which is not visually beautiful
$representation[Document::KEYWORD_RELATIONSHIPS] = null;
if ($isShowSelf === true) {
$representation[Document::KEYWORD_LINKS][Document::KEYWORD_SELF] = $this->getLinkRepresentation($this->document->getUrlPrefix(), $resource->getSelfSubLink());
}
if ($meta !== null) {
$representation[Document::KEYWORD_META] = $meta;
}
return $representation;
}