feat(controller): add post lists controller

This commit is contained in:
2024-08-03 10:47:43 +02:00
parent 58f43f096a
commit a99f6244b4
32 changed files with 8956 additions and 447 deletions

View 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
);
}
}