Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 protected function createResource($uri = null)
 {
     $resource = new Resource();
     if ($uri) {
         $resource->setURI($uri);
     }
     return $resource;
 }
Ejemplo n.º 3
0
 protected function transformSelfLink(Resource $resource, array $data)
 {
     isset($data[self::LINK_KEY_HREF]) && $resource->setURI($data[self::LINK_KEY_HREF]);
     isset($data[self::LINK_KEY_TITLE]) && $resource->setTitle($data[self::LINK_KEY_TITLE]);
 }
Ejemplo n.º 4
0
 public function testExpandLinkedResourcesTreeThreeLevelLinked()
 {
     $linkedLevel1Resource = new Resource($this->repository);
     $linkedLevel1Resource->setURI('foo');
     $linkedLevel2Resource = new Resource($this->repository);
     $linkedLevel2Resource->setURI('foo');
     $linkedLevel2Resource->linkResource('bar', $linkedLevel1Resource);
     $linkedPhpHalResource = new Resource($this->repository);
     $linkedPhpHalResource->setURI('foo');
     $linkedPhpHalResource->linkResource('qux', $linkedLevel2Resource);
     $this->resource->linkResource('foo', $linkedPhpHalResource);
     $this->assertCount(0, $linkedLevel2Resource->getAllResources());
     $this->resource->expandLinkedResourcesTree(['foo', 'qux', 'bar']);
     $this->assertSame($linkedLevel1Resource, $linkedLevel2Resource->getResources('bar'));
 }