vendor/ibexa/graphql/src/lib/Relay/PageAwareConnection.php line 37

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. namespace Ibexa\GraphQL\Relay;
  7. use Overblog\GraphQLBundle\Definition\Argument;
  8. use Overblog\GraphQLBundle\Relay\Connection\ConnectionBuilder;
  9. use Overblog\GraphQLBundle\Relay\Connection\Output\Connection;
  10. use Overblog\GraphQLBundle\Relay\Connection\PageInfoInterface;
  11. final class PageAwareConnection
  12. {
  13.     /** @var \Overblog\GraphQLBundle\Relay\Connection\Output\Edge[] */
  14.     public $edges = [];
  15.     /** @var \Overblog\GraphQLBundle\Relay\Connection\PageInfoInterface */
  16.     public $pageInfo;
  17.     /** @var int */
  18.     public $totalCount;
  19.     /** @var Page[] */
  20.     public $pages;
  21.     public function __construct(array $edgesPageInfoInterface $pageInfo)
  22.     {
  23.         $this->edges $edges;
  24.         $this->pageInfo $pageInfo;
  25.     }
  26.     public static function fromConnection(Connection $connectionArgument $args): PageAwareConnection
  27.     {
  28.         $return = new self($connection->edges$connection->pageInfo);
  29.         $return->totalCount $connection->totalCount;
  30.         $return->pages = [];
  31.         $perPage $args['first'] ?? $args['last'] ?? 10;
  32.         $totalPages ceil($return->totalCount $perPage);
  33.         $connectionBuilder = new ConnectionBuilder();
  34.         for ($pageNumber 2$pageNumber <= $totalPages; ++$pageNumber) {
  35.             $offset = ($pageNumber 1) * $perPage 1;
  36.             $return->pages[] = new Page($pageNumber$connectionBuilder->offsetToCursor($offset));
  37.         }
  38.         return $return;
  39.     }
  40. }
  41. class_alias(PageAwareConnection::class, 'EzSystems\EzPlatformGraphQL\GraphQL\Relay\PageAwareConnection');