|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace LoginCidadao\CoreBundle\Helper; |
|
4
|
|
|
|
|
5
|
|
|
use Symfony\Component\HttpFoundation\Request; |
|
6
|
|
|
use Doctrine\ORM\QueryBuilder; |
|
7
|
|
|
use LoginCidadao\InfiniteScrollBundle\Model\AbstractInfiniteIterable; |
|
8
|
|
|
use LoginCidadao\InfiniteScrollBundle\Model\QueryBuilderIterator; |
|
9
|
|
|
|
|
10
|
|
|
class GridHelper |
|
11
|
|
|
{ |
|
12
|
|
|
|
|
13
|
|
|
/** @var integer */ |
|
14
|
|
|
protected $perPage; |
|
15
|
|
|
|
|
16
|
|
|
/** @var integer */ |
|
17
|
|
|
protected $maxResult = 25; |
|
18
|
|
|
|
|
19
|
|
|
/** @var integer */ |
|
20
|
|
|
protected $page; |
|
21
|
|
|
|
|
22
|
|
|
/** @var boolean */ |
|
23
|
|
|
protected $infiniteGrid = false; |
|
24
|
|
|
protected $resultset; |
|
25
|
|
|
|
|
26
|
|
|
/** @var QueryBuilder */ |
|
27
|
|
|
protected $queryBuilder; |
|
28
|
|
|
protected $rlength; |
|
29
|
|
|
protected $rstart; |
|
30
|
|
|
protected $rlast; |
|
31
|
|
|
protected $rpage; |
|
32
|
|
|
protected $id; |
|
33
|
|
|
|
|
34
|
|
|
/** @var string */ |
|
35
|
|
|
protected $route; |
|
36
|
|
|
|
|
37
|
|
|
/** @var array */ |
|
38
|
|
|
protected $routeParams; |
|
39
|
|
|
|
|
40
|
|
|
/** @var array */ |
|
41
|
|
|
protected $extraOpts; |
|
42
|
|
|
|
|
43
|
|
|
/** @var AbstractInfiniteIterable */ |
|
44
|
|
|
protected $iterable; |
|
45
|
|
|
|
|
46
|
|
|
public function __construct(AbstractInfiniteIterable $iterable = null) |
|
47
|
|
|
{ |
|
48
|
|
|
if (null !== $iterable) { |
|
49
|
|
|
$this->setIterable($iterable); |
|
50
|
|
|
$this->setMaxResult($this->getIterable()->getPerIteration()); |
|
51
|
|
|
$this->setPerPage($this->getIterable()->getPerIteration()); |
|
52
|
|
|
} |
|
53
|
|
|
} |
|
54
|
|
|
|
|
55
|
|
|
/** |
|
56
|
|
|
* @param boolean $infinite |
|
57
|
|
|
* @return GridHelper |
|
58
|
|
|
*/ |
|
59
|
|
|
public function setInfiniteGrid($infinite) |
|
60
|
|
|
{ |
|
61
|
|
|
$this->infiniteGrid = $infinite; |
|
62
|
|
|
return $this; |
|
63
|
|
|
} |
|
64
|
|
|
|
|
65
|
|
|
public function setPerPage($var) |
|
66
|
|
|
{ |
|
67
|
|
|
$this->perPage = $var; |
|
68
|
|
|
return $this; |
|
69
|
|
|
} |
|
70
|
|
|
|
|
71
|
|
|
public function setMaxResult($var) |
|
72
|
|
|
{ |
|
73
|
|
|
$this->maxResult = $var; |
|
74
|
|
|
return $this; |
|
75
|
|
|
} |
|
76
|
|
|
|
|
77
|
|
|
/** |
|
78
|
|
|
* @deprecated since version 1.1.0 |
|
79
|
|
|
* @param QueryBuilder $var |
|
80
|
|
|
* @return GridHelper |
|
81
|
|
|
*/ |
|
82
|
|
|
public function setQueryBuilder(QueryBuilder & $queryBuilder) |
|
83
|
|
|
{ |
|
84
|
|
|
$this->queryBuilder = $queryBuilder; |
|
85
|
|
|
// create QueryBuilderIterator for legacy code |
|
86
|
|
|
$iterable = new QueryBuilderIterator($queryBuilder, $this->getPerPage()); |
|
87
|
|
|
$this->setIterable($iterable); |
|
88
|
|
|
return $this; |
|
89
|
|
|
} |
|
90
|
|
|
|
|
91
|
|
|
public function createView(Request $request) |
|
92
|
|
|
{ |
|
93
|
|
|
if ($request->get('page')) { |
|
94
|
|
|
$this->page = $request->get('page'); |
|
95
|
|
|
if (null !== $this->queryBuilder) { |
|
96
|
|
|
$this->queryBuilder->setFirstResult(($this->page - 1) * $this->maxResult); |
|
97
|
|
|
} |
|
98
|
|
|
if (null !== $this->getIterable()) { |
|
99
|
|
|
$this->getIterable()->setInitialOffset(($this->page - 1) * $this->maxResult); |
|
100
|
|
|
if (null !== $this->queryBuilder) { |
|
101
|
|
|
$this->getIterable()->setOffset($this->getIterable()->getInitialOffset()); |
|
102
|
|
|
} |
|
103
|
|
|
} |
|
104
|
|
|
} else { |
|
105
|
|
|
$this->page = 1; |
|
106
|
|
|
} |
|
107
|
|
|
if ($this->infiniteGrid) { |
|
108
|
|
|
$this->perPage = $this->maxResult; |
|
109
|
|
|
} |
|
110
|
|
|
if (null !== $this->getIterable()) { |
|
111
|
|
|
//$this->queryBuilder->setMaxResults($this->maxResult + 1); |
|
|
|
|
|
|
112
|
|
|
$this->resultset = $this->getIterable()->current(); |
|
113
|
|
|
//$this->resultset = $this->queryBuilder->getQuery()->getResult(); |
|
|
|
|
|
|
114
|
|
|
} else { |
|
115
|
|
|
$this->resultset = array(); |
|
116
|
|
|
} |
|
117
|
|
|
$this->rlength = count($this->resultset); |
|
118
|
|
|
$this->rstart = ($this->page * $this->maxResult) / $this->perPage; |
|
119
|
|
|
$this->rlast = ($this->rlength < $this->maxResult); |
|
120
|
|
|
|
|
121
|
|
|
$this->rpage = (integer) (($this->rlength / $this->perPage) - (($this->rlength - $this->maxResult) > 0 ? 1 : 0)); |
|
122
|
|
|
$this->rpage = $this->rpage > 0 ? $this->rpage : 0; |
|
123
|
|
|
|
|
124
|
|
|
if ($this->routeParams) { |
|
|
|
|
|
|
125
|
|
|
foreach ($this->routeParams as $val) { |
|
126
|
|
|
$a[$val] = $request->get($val); |
|
127
|
|
|
} |
|
128
|
|
|
$this->routeParams = $a; |
|
|
|
|
|
|
129
|
|
|
} else { |
|
130
|
|
|
$this->routeParams = array(); |
|
131
|
|
|
} |
|
132
|
|
|
return $this; |
|
133
|
|
|
} |
|
134
|
|
|
|
|
135
|
|
|
public function getPage() |
|
136
|
|
|
{ |
|
137
|
|
|
return $this->page; |
|
138
|
|
|
} |
|
139
|
|
|
|
|
140
|
|
|
public function getMaxResult() |
|
141
|
|
|
{ |
|
142
|
|
|
return $this->maxResult; |
|
143
|
|
|
} |
|
144
|
|
|
|
|
145
|
|
|
public function getPerPage() |
|
146
|
|
|
{ |
|
147
|
|
|
return $this->perPage; |
|
148
|
|
|
} |
|
149
|
|
|
|
|
150
|
|
|
public function getResultset() |
|
151
|
|
|
{ |
|
152
|
|
|
return $this->resultset; |
|
153
|
|
|
} |
|
154
|
|
|
|
|
155
|
|
|
public function getRlength() |
|
156
|
|
|
{ |
|
157
|
|
|
return $this->rlength; |
|
158
|
|
|
} |
|
159
|
|
|
|
|
160
|
|
|
public function getRstart() |
|
161
|
|
|
{ |
|
162
|
|
|
return $this->rstart; |
|
163
|
|
|
} |
|
164
|
|
|
|
|
165
|
|
|
public function getRlast() |
|
166
|
|
|
{ |
|
167
|
|
|
return $this->rlast; |
|
168
|
|
|
} |
|
169
|
|
|
|
|
170
|
|
|
public function getRpage() |
|
171
|
|
|
{ |
|
172
|
|
|
return $this->rpage; |
|
173
|
|
|
} |
|
174
|
|
|
|
|
175
|
|
|
public function isInfiniteGrid() |
|
176
|
|
|
{ |
|
177
|
|
|
return $this->infiniteGrid; |
|
178
|
|
|
} |
|
179
|
|
|
|
|
180
|
|
|
public function setId($var) |
|
181
|
|
|
{ |
|
182
|
|
|
$this->id = $var; |
|
183
|
|
|
return $this; |
|
184
|
|
|
} |
|
185
|
|
|
|
|
186
|
|
|
public function getId() |
|
187
|
|
|
{ |
|
188
|
|
|
return $this->id; |
|
189
|
|
|
} |
|
190
|
|
|
|
|
191
|
|
|
public function setRoute($var) |
|
192
|
|
|
{ |
|
193
|
|
|
$this->route = $var; |
|
194
|
|
|
return $this; |
|
195
|
|
|
} |
|
196
|
|
|
|
|
197
|
|
|
public function setRouteParams($var) |
|
198
|
|
|
{ |
|
199
|
|
|
$this->routeParams = $var; |
|
200
|
|
|
return $this; |
|
201
|
|
|
} |
|
202
|
|
|
|
|
203
|
|
|
public function getRoute() |
|
204
|
|
|
{ |
|
205
|
|
|
return $this->route; |
|
206
|
|
|
} |
|
207
|
|
|
|
|
208
|
|
|
public function getRouteParams() |
|
209
|
|
|
{ |
|
210
|
|
|
return $this->routeParams; |
|
211
|
|
|
} |
|
212
|
|
|
|
|
213
|
|
|
public function setExtraOpts($var) |
|
214
|
|
|
{ |
|
215
|
|
|
$this->extraOpts = $var; |
|
216
|
|
|
return $this; |
|
217
|
|
|
} |
|
218
|
|
|
|
|
219
|
|
|
public function getExtraOpts() |
|
220
|
|
|
{ |
|
221
|
|
|
return $this->extraOpts; |
|
222
|
|
|
} |
|
223
|
|
|
|
|
224
|
|
|
/** |
|
225
|
|
|
* @return AbstractInfiniteIterable |
|
226
|
|
|
*/ |
|
227
|
|
|
public function getIterable() |
|
228
|
|
|
{ |
|
229
|
|
|
return $this->iterable; |
|
230
|
|
|
} |
|
231
|
|
|
|
|
232
|
|
|
/** |
|
233
|
|
|
* @param AbstractInfiniteIterable $iterable |
|
234
|
|
|
* @return GridHelper |
|
235
|
|
|
*/ |
|
236
|
|
|
public function setIterable(AbstractInfiniteIterable $iterable) |
|
237
|
|
|
{ |
|
238
|
|
|
$this->iterable = $iterable; |
|
239
|
|
|
return $this; |
|
240
|
|
|
} |
|
241
|
|
|
|
|
242
|
|
|
} |
|
243
|
|
|
|
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.