/
AbstractAdapter.zep
134 lines (113 loc) · 2.71 KB
/
AbstractAdapter.zep
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
* This file is part of the Phalcon Framework.
*
* (c) Phalcon Team <team@phalcon.io>
*
* For the full copyright and license information, please view the LICENSE.txt
* file that was distributed with this source code.
*/
namespace Phalcon\Paginator\Adapter;
use Phalcon\Paginator\Exception;
use Phalcon\Paginator\Repository;
use Phalcon\Paginator\RepositoryInterface;
/**
* Phalcon\Paginator\Adapter\AbstractAdapter
*/
abstract class AbstractAdapter implements AdapterInterface
{
/**
* Configuration of paginator
*
* @var array
*/
protected config;
/**
* Number of rows to show in the paginator. By default is null
*
* @var int|null
*/
protected limitRows = null;
/**
* Current page in paginate
*
* @var int|null
*/
protected page = null;
/**
* Repository for pagination
*
* @var RepositoryInterface
*/
protected repository;
/**
* Phalcon\Paginator\Adapter\AbstractAdapter constructor
*
* @param array $config
*/
public function __construct(array! config)
{
let this->config = config;
if isset config["limit"] {
this->setLimit(
config["limit"]
);
}
if isset config["page"] {
this->setCurrentPage(
config["page"]
);
}
if isset config["repository"] {
this->setRepository(
config["repository"]
);
}
}
/**
* Get current rows limit
*/
public function getLimit() -> int
{
return this->limitRows;
}
/**
* Set the current page number
*/
public function setCurrentPage(int page) -> <AdapterInterface>
{
let this->page = page;
return this;
}
/**
* Set current rows limit
*/
public function setLimit(int limit) -> <AdapterInterface>
{
if limit <= 0 {
throw new Exception("Limit must be greater than zero");
}
let this->limitRows = limit;
return this;
}
/**
* Sets current repository for pagination
*/
public function setRepository(<RepositoryInterface> repository) -> <AdapterInterface>
{
let this->repository = repository;
return this;
}
/**
* Gets current repository for pagination
*/
protected function getRepository(array properties = null) -> <RepositoryInterface>
{
if typeof this->repository != "object" {
let this->repository = new Repository();
}
if properties !== null {
this->repository->setProperties(properties);
}
return this->repository;
}
}