Skip to content

Commit

Permalink
Merge pull request #37 from thanh-taro/add_relationships_data
Browse files Browse the repository at this point in the history
Update code
  • Loading branch information
thanh-taro committed Jun 21, 2016
2 parents ca954cc + eb67463 commit 5895e79
Showing 1 changed file with 70 additions and 68 deletions.
138 changes: 70 additions & 68 deletions src/JsonObjects/V1_0/TopLevel.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,86 +166,88 @@ public function parseModel($model, $getRelationships = true)
if (!empty($links)) {
$resource->set('links', $links);
}
$relationships = $model->getRelationships();
if (!empty($relationships)) {
foreach ($relationships as $key => $value) {
$isList = false;
if ($value instanceof static) {
$relationshipTopLevel = $value;
} else {
$relationshipTopLevel = new static();
if (!is_array($value)) {
$data = $value;
} elseif (!empty($value['data'])) {
$data = $value['data'];
if ($getRelationships) {
$relationships = $model->getRelationships();
if (!empty($relationships)) {
foreach ($relationships as $key => $value) {
$isList = false;
if ($value instanceof static) {
$relationshipTopLevel = $value;
} else {
$data = null;
}
if ($data !== null) {
if ($data instanceof AbstractPaginator) {
$relationshipTopLevel->setPagination($data);
$isList = true;
$relationshipTopLevel = new static();
if (!is_array($value)) {
$data = $value;
} elseif (!empty($value['data'])) {
$data = $value['data'];
} else {
if ($data instanceof Collection) {
$data = $data->all();
$data = null;
}
if ($data !== null) {
if ($data instanceof AbstractPaginator) {
$relationshipTopLevel->setPagination($data);
$isList = true;
} else {
if ($data instanceof Collection) {
$data = $data->all();
$isList = true;
}
$relationshipTopLevel->setModel($data, false);
}
$relationshipTopLevel->setModel($data, false);
}
}
if (!empty($value['links'])) {
if ($value['links'] instanceof Link) {
$links = $value['links']->getParams(['self', 'related']);
} else {
$links = $value['links'];
}
if (!empty($links['self'])) {
$relationshipTopLevel->add('links', $links['self'], 'self');
}
if (!empty($links['related'])) {
$relationshipTopLevel->add('links', $links['related'], 'related');
if (!empty($value['links'])) {
if ($value['links'] instanceof Link) {
$links = $value['links']->getParams(['self', 'related']);
} else {
$links = $value['links'];
}
if (!empty($links['self'])) {
$relationshipTopLevel->add('links', $links['self'], 'self');
}
if (!empty($links['related'])) {
$relationshipTopLevel->add('links', $links['related'], 'related');
}
}
}
}
$relationshipTopLevel->delete('jsonapi');
$data = $relationshipTopLevel->data;
if (is_array($data) && $isList === false) {
$isList = true;
}
$relationshipArray = $relationshipTopLevel->toArray();
$relationship = [];
$include = [];
if (!empty($relationshipArray['meta'])) {
$relationship['meta'] = $relationshipArray['meta'];
}
if (!empty($relationshipArray['links']['self'])) {
$relationship['links']['self'] = $relationshipArray['links']['self'];
}
if (!empty($relationshipArray['links']['related'])) {
$relationship['links']['related'] = $relationshipArray['links']['related'];
}
if (!empty($relationshipArray['data'])) {
if ($relationshipTopLevel->data instanceof Resource) {
$relationship['data'] = $relationshipTopLevel->data->getParams(['id', 'type']);
} else {
foreach ($relationshipTopLevel->data as $relationshipResource) {
if ($relationshipResource instanceof Resource) {
$relationship['data'][] = $relationshipResource->getParams(['id', 'type']);
$relationshipTopLevel->delete('jsonapi');
$data = $relationshipTopLevel->data;
if (is_array($data) && $isList === false) {
$isList = true;
}
$relationshipArray = $relationshipTopLevel->toArray();
$relationship = [];
$include = [];
if (!empty($relationshipArray['meta'])) {
$relationship['meta'] = $relationshipArray['meta'];
}
if (!empty($relationshipArray['links']['self'])) {
$relationship['links']['self'] = $relationshipArray['links']['self'];
}
if (!empty($relationshipArray['links']['related'])) {
$relationship['links']['related'] = $relationshipArray['links']['related'];
}
if (!empty($relationshipArray['data'])) {
if ($relationshipTopLevel->data instanceof Resource) {
$relationship['data'] = $relationshipTopLevel->data->getParams(['id', 'type']);
} else {
foreach ($relationshipTopLevel->data as $relationshipResource) {
if ($relationshipResource instanceof Resource) {
$relationship['data'][] = $relationshipResource->getParams(['id', 'type']);
}
}
}
}
}
if (!empty($relationshipArray['data'])) {
$includes[] = $relationshipArray['data'];
}
if (empty($relationship) || empty($relationship['data'])) {
if ($isList) {
$relationship['data'] = [];
} else {
$relationship['data'] = null;
if (!empty($relationshipArray['data'])) {
$includes[] = $relationshipArray['data'];
}
if (empty($relationship) || empty($relationship['data'])) {
if ($isList) {
$relationship['data'] = [];
} else {
$relationship['data'] = null;
}
}
$resource->add('relationships', $relationship, $key);
}
$resource->add('relationships', $relationship, $key);
}
}

Expand Down

0 comments on commit 5895e79

Please sign in to comment.