vendor/pimcore/pimcore/lib/Model/Paginator/EventSubscriber/PaginateListingSubscriber.php line 25

  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Model\Paginator\EventSubscriber;
  16. use Knp\Component\Pager\Event\ItemsEvent;
  17. use Pimcore\Model\Paginator\PaginateListingInterface;
  18. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  19. class PaginateListingSubscriber implements EventSubscriberInterface
  20. {
  21.     public function items(ItemsEvent $event): void
  22.     {
  23.         $paginationAdapter $event->target;
  24.         if ($paginationAdapter instanceof PaginateListingInterface) {
  25.             $items $paginationAdapter->getItems($event->getOffset(), $event->getLimit());
  26.             $event->count $paginationAdapter->count();
  27.             $event->items $items;
  28.             $event->stopPropagation();
  29.         }
  30.         if (!$event->isPropagationStopped()) {
  31.             throw new \RuntimeException('Paginator only accepts instances of the type ' .
  32.                 PaginateListingInterface::class . ' or types defined here: https://github.com/KnpLabs/KnpPaginatorBundle#controller');
  33.         }
  34.     }
  35.     /**
  36.      * @internal
  37.      */
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             'knp_pager.items' => ['items', -5/* other data listeners should be analyzed first*/],
  42.         ];
  43.     }
  44. }