Skip to content

Commit

Permalink
Add every pagination options in PaginationOptions
Browse files Browse the repository at this point in the history
  • Loading branch information
soyuka committed Feb 16, 2021
1 parent 0d784fd commit c969b94
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
5 changes: 5 additions & 0 deletions src/Bridge/Symfony/Bundle/Resources/config/data_provider.xml
Expand Up @@ -41,6 +41,11 @@
<argument>%api_platform.collection.pagination.items_per_page_parameter_name%</argument>
<argument>%api_platform.collection.pagination.client_enabled%</argument>
<argument>%api_platform.collection.pagination.enabled_parameter_name%</argument>
<argument>%api_platform.collection.pagination.items_per_page%</argument>
<argument>%api_platform.collection.pagination.maximum_items_per_page%</argument>
<argument>%api_platform.collection.pagination.partial%</argument>
<argument>%api_platform.collection.pagination.client_partial%</argument>
<argument>%api_platform.collection.pagination.partial_parameter_name%</argument>
</service>
<service id="ApiPlatform\Core\DataProvider\PaginationOptions" alias="api_platform.pagination_options" />

Expand Down
43 changes: 42 additions & 1 deletion src/DataProvider/PaginationOptions.php
Expand Up @@ -21,15 +21,25 @@ final class PaginationOptions
private $itemsPerPageParameterName;
private $paginationClientEnabled;
private $paginationClientEnabledParameterName;
private int $itemsPerPage;
private ?int $maximumItemsPerPage;
private bool $partialPaginationEnabled;
private bool $clientPartialPaginationEnabled;
private string $partialPaginationParameterName;

public function __construct(bool $paginationEnabled = true, string $paginationPageParameterName = 'page', bool $clientItemsPerPage = false, string $itemsPerPageParameterName = 'itemsPerPage', bool $paginationClientEnabled = false, string $paginationClientEnabledParameterName = 'pagination')
public function __construct(bool $paginationEnabled = true, string $paginationPageParameterName = 'page', bool $clientItemsPerPage = false, string $itemsPerPageParameterName = 'itemsPerPage', bool $paginationClientEnabled = false, string $paginationClientEnabledParameterName = 'pagination', int $itemsPerPage = 30, ?int $maximumItemsPerPage = null, bool $partialPaginationEnabled = false, bool $clientPartialPaginationEnabled = false, string $partialPaginationParameterName = 'partial')
{
$this->paginationEnabled = $paginationEnabled;
$this->paginationPageParameterName = $paginationPageParameterName;
$this->clientItemsPerPage = $clientItemsPerPage;
$this->itemsPerPageParameterName = $itemsPerPageParameterName;
$this->paginationClientEnabled = $paginationClientEnabled;
$this->paginationClientEnabledParameterName = $paginationClientEnabledParameterName;
$this->itemsPerPage = $itemsPerPage;
$this->maximumItemsPerPage = $maximumItemsPerPage;
$this->partialPaginationEnabled = $partialPaginationEnabled;
$this->clientPartialPaginationEnabled = $clientPartialPaginationEnabled;
$this->partialPaginationParameterName = $partialPaginationParameterName;
}

public function isPaginationEnabled(): bool
Expand Down Expand Up @@ -57,8 +67,39 @@ public function getPaginationClientEnabled(): bool
return $this->paginationClientEnabled;
}

public function isPaginationClientEnabled(): bool
{
return $this->paginationClientEnabled;
}

public function getPaginationClientEnabledParameterName(): string
{
return $this->paginationClientEnabledParameterName;
}


public function getItemsPerPage(): int
{
return $this->itemsPerPage;
}

public function getMaximumItemsPerPage(): ?int
{
return $maximumItemsPerPage;
}

public function isPartialPaginationEnabled(): bool
{
return $this->partialPaginationEnabled;
}

public function isClientPartialPaginationEnabled(): bool
{
return $this->clientPartialPaginationEnabled;
}

public function getPartialPaginationParameterName(): string
{
return $this->partialPaginationParameterName;
}
}

0 comments on commit c969b94

Please sign in to comment.