Completed
Push — 1.0.x ( 209591...7a1bb8 )
by Korvin
04:54
created

PagerfantaPaginatorAdapter   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 118
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 1

Test Coverage

Coverage 78.26%

Importance

Changes 0
Metric Value
wmc 10
lcom 2
cbo 1
dl 0
loc 118
ccs 18
cts 23
cp 0.7826
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getCurrentPage() 0 4 1
A getLastPage() 0 4 1
A getTotal() 0 4 1
A getCount() 0 10 2
A getPerPage() 0 4 1
A getUrl() 0 4 1
A getPaginator() 0 4 1
A getRouteGenerator() 0 4 1
1
<?php
2
3
/*
4
 * This file is part of the League\Fractal package.
5
 *
6
 * (c) Phil Sturgeon <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace League\Fractal\Pagination;
13
14
use Pagerfanta\Pagerfanta;
15
16
/**
17
 * A paginator adapter for pagerfanta/pagerfanta.
18
 *
19
 * @author Márk Sági-Kazár <[email protected]>
20
 */
21
class PagerfantaPaginatorAdapter implements PaginatorInterface
22
{
23
    /**
24
     * The paginator instance.
25
     *
26
     * @var \Pagerfanta\Pagerfanta
27
     */
28
    protected $paginator;
29
30
    /**
31
     * The route generator.
32
     *
33
     * @var callable
34
     */
35
    protected $routeGenerator;
36
37
    /**
38
     * Create a new pagerfanta pagination adapter.
39
     *
40
     * @param \Pagerfanta\Pagerfanta $paginator
41
     * @param callable               $routeGenerator
42
     *
43
     * @return void
44
     */
45 1
    public function __construct(Pagerfanta $paginator, $routeGenerator)
46
    {
47 1
        $this->paginator = $paginator;
48 1
        $this->routeGenerator = $routeGenerator;
49 1
    }
50
51
    /**
52
     * Get the current page.
53
     *
54
     * @return int
55
     */
56 1
    public function getCurrentPage()
57
    {
58 1
        return $this->paginator->getCurrentPage();
59
    }
60
61
    /**
62
     * Get the last page.
63
     *
64
     * @return int
65
     */
66 1
    public function getLastPage()
67
    {
68 1
        return $this->paginator->getNbPages();
69
    }
70
71
    /**
72
     * Get the total.
73
     *
74
     * @return int
75
     */
76 1
    public function getTotal()
77
    {
78 1
        return count($this->paginator);
79
    }
80
81
    /**
82
     * Get the count.
83
     *
84
     * @return int
85
     */
86 1
    public function getCount()
87
    {
88 1
        $page = $this->paginator->getCurrentPageResults();
89
90 1
        if (is_countable($page)) {
91 1
            return count($page);
92
        }
93
94
        return 0;
95
    }
96
97
    /**
98
     * Get the number per page.
99
     *
100
     * @return int
101
     */
102 1
    public function getPerPage()
103
    {
104 1
        return $this->paginator->getMaxPerPage();
105
    }
106
107
    /**
108
     * Get the url for the given page.
109
     *
110
     * @param int $page
111
     *
112
     * @return string
113
     */
114 1
    public function getUrl($page)
115
    {
116 1
        return call_user_func($this->routeGenerator, $page);
117
    }
118
119
    /**
120
     * Get the paginator instance.
121
     *
122
     * @return \Pagerfanta\Pagerfanta
123
     */
124
    public function getPaginator()
125
    {
126
        return $this->paginator;
127
    }
128
129
    /**
130
     * Get the the route generator.
131
     *
132
     * @return callable
133
     */
134
    public function getRouteGenerator()
135
    {
136
        return $this->routeGenerator;
137
    }
138
}
139