FOSElasticaBundle/Subscriber/PaginateElasticaQuerySubscriber.php
Francisco Facioni 0d9e0f1172 Added knp paginator support
Bug fix: no
Feature addition: yes
Backwards compatibility break: no

Encapsulated Pagerfanta dependency for pagination and added support for knp pagination component
2012-05-24 11:35:19 -03:00

33 lines
976 B
PHP

<?php
namespace FOQ\ElasticaBundle\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Knp\Component\Pager\Event\ItemsEvent;
use FOQ\ElasticaBundle\Paginator\PaginatorAdapterInterface;
class PaginateElasticaQuerySubscriber implements EventSubscriberInterface
{
public function items(ItemsEvent $event)
{
if ($event->target instanceof PaginatorAdapterInterface) {
$results = $event->target->getResults($event->getOffset(), $event->getLimit());
$event->count = $results->getTotalHits();
$event->items = $results->toArray();
$facets = $results->getFacets();
if (null != $facets) {
$event->setCustomPaginationParameter('facets', $facets);
}
$event->stopPropagation();
}
}
public static function getSubscribedEvents()
{
return array(
'knp_pager.items' => array('items', 1)
);
}
}