feat(controller): add post lists controller
This commit is contained in:
45
src/Utils/Paginator/Paginator.php
Normal file
45
src/Utils/Paginator/Paginator.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Utils\Paginator;
|
||||
|
||||
class Paginator
|
||||
{
|
||||
/**
|
||||
* Determinate which pages are visible in the paginator
|
||||
* @param int $page
|
||||
* @param int $totalPages
|
||||
* @param int $maxVisiblePages
|
||||
* @return PaginatorResult
|
||||
*/
|
||||
public function getVisiblePages(int $page, int $totalPages, int $maxVisiblePages): PaginatorResult
|
||||
{
|
||||
$half = floor($maxVisiblePages / 2);
|
||||
|
||||
if ($page <= $half) {
|
||||
$start = 1;
|
||||
$end = min($totalPages, $maxVisiblePages);
|
||||
} elseif ($page > $totalPages - $half) {
|
||||
$start = max(1, $totalPages - $maxVisiblePages + 1);
|
||||
$end = $totalPages;
|
||||
} else {
|
||||
$start = $page - $half;
|
||||
$end = min($totalPages, $page + $half);
|
||||
}
|
||||
|
||||
/**
|
||||
* @var array<int> $range
|
||||
*/
|
||||
$range = range($start, $end);
|
||||
|
||||
return new PaginatorResult(
|
||||
$page,
|
||||
$start == 1,
|
||||
$end == $totalPages,
|
||||
$totalPages,
|
||||
$totalPages,
|
||||
$range
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user