Оптимизация вычитки листов из кэша с пагинацией, удалены количества онлайн/офлайн листов
This commit is contained in:
@@ -36,28 +36,24 @@ class WebController extends BasicController
|
||||
*/
|
||||
public function home(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
|
||||
{
|
||||
$playlists = ini()->getPlaylists();
|
||||
|
||||
$count = count($playlists);
|
||||
$onlineCount = count(array_filter($playlists, static fn (array $playlist) => $playlist['isOnline'] === true));
|
||||
$uncheckedCount = count(array_filter($playlists, static fn (array $playlist) => $playlist['isOnline'] === null));
|
||||
$offlineCount = $count - $onlineCount - $uncheckedCount;
|
||||
$ini = ini()->load();
|
||||
|
||||
$count = count($ini);
|
||||
$pageSize = config('app.page_size');
|
||||
if ($pageSize > 0) {
|
||||
$pageCurrent = (int)($request->getAttributes()['page'] ?? $request->getQueryParams()['page'] ?? 1);
|
||||
$pageCount = ceil($count / $pageSize);
|
||||
$offset = max(0, ($pageCurrent - 1) * $pageSize);
|
||||
$playlists = array_slice($playlists, $offset, $pageSize, true);
|
||||
$ini = array_slice($ini, $offset, $pageSize, true);
|
||||
$playlists = ini()->getPlaylists(array_keys($ini));
|
||||
} else {
|
||||
$playlists = ini()->getPlaylists();
|
||||
}
|
||||
|
||||
return $this->view($request, $response, 'list.twig', [
|
||||
'updatedAt' => ini()->updatedAt(),
|
||||
'playlists' => $playlists,
|
||||
'count' => $count,
|
||||
'onlineCount' => $onlineCount,
|
||||
'uncheckedCount' => $uncheckedCount,
|
||||
'offlineCount' => $offlineCount,
|
||||
'pageCount' => $pageCount ?? 1,
|
||||
'pageCurrent' => $pageCurrent ?? 1,
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user