vendor/knplabs/knp-paginator-bundle/Subscriber/SlidingPaginationSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. namespace Knp\Bundle\PaginatorBundle\Subscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Knp\Component\Pager\Event\PaginationEvent;
  5. use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination;
  6. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  7. use Symfony\Component\HttpKernel\HttpKernelInterface;
  8. class SlidingPaginationSubscriber implements EventSubscriberInterface
  9. {
  10.     private $route;
  11.     private $params = array();
  12.     private $options;
  13.     public function __construct(array $options)
  14.     {
  15.         $this->options $options;
  16.     }
  17.     public function onKernelRequest(GetResponseEvent $event)
  18.     {
  19.         if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
  20.             return;
  21.         }
  22.         $request $event->getRequest();
  23.         $this->route $request->attributes->get('_route');
  24.         $this->params array_merge($request->query->all(), $request->attributes->get('_route_params', array()));
  25.         foreach ($this->params as $key => $param) {
  26.             if (substr($key01) == '_') {
  27.                 unset($this->params[$key]);
  28.             }
  29.         }
  30.     }
  31.     public function pagination(PaginationEvent $event)
  32.     {
  33.         // default sort field and order
  34.         $eventOptions $event->options;
  35.         if (isset($eventOptions['defaultSortFieldName']) && !isset($this->params[$eventOptions['sortFieldParameterName']])) {
  36.             $this->params[$eventOptions['sortFieldParameterName']] = $eventOptions['defaultSortFieldName'];
  37.         }
  38.         if (isset($eventOptions['defaultSortDirection']) && !isset($this->params[$eventOptions['sortDirectionParameterName']])) {
  39.             $this->params[$eventOptions['sortDirectionParameterName']] = $eventOptions['defaultSortDirection'];
  40.         }
  41.         $pagination = new SlidingPagination($this->params);
  42.         $pagination->setUsedRoute($this->route);
  43.         $pagination->setTemplate($this->options['defaultPaginationTemplate']);
  44.         $pagination->setSortableTemplate($this->options['defaultSortableTemplate']);
  45.         $pagination->setFiltrationTemplate($this->options['defaultFiltrationTemplate']);
  46.         $pagination->setPageRange($this->options['defaultPageRange']);
  47.         $event->setPagination($pagination);
  48.         $event->stopPropagation();
  49.     }
  50.     public static function getSubscribedEvents()
  51.     {
  52.         return array(
  53.             'knp_pager.pagination' => array('pagination'1)
  54.         );
  55.     }
  56. }