File size: 1,118 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php

declare(strict_types=1);

namespace Mautic\CoreBundle\Helper;

use Symfony\Component\HttpFoundation\Session\SessionInterface;

final class PageHelper implements PageHelperInterface
{
    public function __construct(
        private SessionInterface $session,
        private CoreParametersHelper $coreParametersHelper,
        private string $sessionPrefix,
        private int $page
    ) {
    }

    public function getLimit(): int
    {
        return (int) $this->session->get(
            "{$this->sessionPrefix}.limit",
            $this->coreParametersHelper->get('default_pagelimit')
        );
    }

    public function countPage(int $count): int
    {
        $currentPage = (int) (ceil($count / $this->getLimit())) ?: 1;

        return (1 === $count) ? 1 : $currentPage;
    }

    public function getStart(): int
    {
        $start = ($this->page - 1) * $this->getLimit();

        if ($start < 0) {
            return 0;
        }

        return $start;
    }

    public function rememberPage(int $page): void
    {
        $this->session->set("{$this->sessionPrefix}.page", $page);
    }
}