Skip to content

Commit

Permalink
First fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Orkin committed Sep 16, 2013
1 parent 03ec0ea commit b0c79f0
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/ZfrRest/Mvc/Router/Http/ResourceGraphRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Selectable;
use Doctrine\Common\Persistence\ObjectRepository;
use Doctrine\ORM\EntityRepository;
use DoctrineModule\Paginator\Adapter\Selectable as SelectableAdapter;
use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator as DoctrineAdapter;
use Doctrine\ORM\Tools\Pagination\Paginator as DoctrinePaginator;
use Metadata\MetadataFactoryInterface;
use Zend\Mvc\Router\Http\RouteInterface;
use Zend\Mvc\Router\Http\RouteMatch;
Expand Down Expand Up @@ -239,6 +242,7 @@ protected function buildRouteMatch(ResourceInterface $resource, $path)
$collectionMetadata = $resourceMetadata->getCollectionMetadata();
$classMetadata = $resourceMetadata->getClassMetadata();
$data = $resource->getData();
$chunks = explode('/', $path);

if ($data instanceof Selectable) {
$criteria = Criteria::create();
Expand All @@ -250,7 +254,11 @@ protected function buildRouteMatch(ResourceInterface $resource, $path)
}

// @TODO: for now, collection is always wrapped around a ResourcePaginator, should instead be configurable
$data = new ResourcePaginator($resourceMetadata, new SelectableAdapter($data, $criteria));
if ($data instanceof EntityRepository && class_exists('DoctrineORMModule/Paginator/Adapter/DoctrinePaginator')) {
$data = new ResourcePaginator($resourceMetadata, new DoctrineAdapter(new DoctrinePaginator($data->find(array_shift($chunks)))));
} else {
$data = new ResourcePaginator($resourceMetadata, new SelectableAdapter($data, $criteria));
}

$resource = new Resource($data, $resourceMetadata);
}
Expand Down

0 comments on commit b0c79f0

Please sign in to comment.