1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Fi\CoreBundle\Utils; |
4
|
|
|
|
5
|
|
|
use Doctrine\ORM\Tools\Pagination\Paginator; |
6
|
|
|
|
7
|
|
|
class GrigliaDatiMultiUtils |
8
|
|
|
{ |
9
|
6 |
|
public static function getTotalPages($quanti, &$limit) |
10
|
|
|
{ |
11
|
|
|
/* calcola in mumero di pagine totali necessarie */ |
12
|
6 |
|
return ceil($quanti / ($limit == 0 ? 1 : $limit)); |
13
|
|
|
} |
14
|
|
|
|
15
|
6 |
|
public static function getLimit(&$limit) |
16
|
|
|
{ |
17
|
6 |
|
return $limit ? $limit : 1; |
18
|
|
|
} |
19
|
|
|
|
20
|
6 |
|
public static function prepareQuery($parametri, &$q, &$sidx, &$sord, &$page, &$limit, &$quanti) |
21
|
|
|
{ |
22
|
6 |
|
$output = GrigliaParametriUtils::getOuputType($parametri); |
23
|
6 |
|
$nospan = GrigliaDatiUtils::getDatiNospan($parametri); |
24
|
|
|
/* su quale campo fare l'ordinamento */ |
25
|
|
|
/* conta il numero di record di risposta |
|
|
|
|
26
|
|
|
$query_tutti_records = $q->getQuery(); |
27
|
|
|
$quanti = count($query_tutti_records->getSingleScalarResult()); */ |
28
|
|
|
|
29
|
6 |
|
$paginator = new Paginator($q, true); |
30
|
6 |
|
$quanti = count($paginator); |
|
|
|
|
31
|
|
|
|
32
|
|
|
/* imposta l'offset, ovvero il record dal quale iniziare a visualizzare i dati */ |
33
|
6 |
|
$offset = ($limit * ($page - 1)); |
34
|
|
|
|
35
|
|
|
/* se si mandano i dati in stampa non tiene conto di limite e offset ovvero risponde con tutti i dati */ |
36
|
6 |
|
if ($output != 'stampa') { |
37
|
|
|
/* se nospan non tiene conto di limite e offset ovvero risponde con tutti i dati */ |
38
|
6 |
|
if (!($nospan)) { |
39
|
|
|
/* Imposta il limite ai record da estrarre */ |
40
|
6 |
|
$q = ($limit ? $q->setMaxResults($limit) : $q); |
41
|
|
|
/* E imposta il primo record da visualizzare (per la paginazione) */ |
42
|
6 |
|
$q = ($offset ? $q->setFirstResult($offset) : $q); |
43
|
|
|
} |
44
|
|
|
} else { |
45
|
|
|
if ($quanti > 1000) { |
46
|
|
|
set_time_limit(960); |
47
|
|
|
ini_set('memory_limit', '2048M'); |
48
|
|
|
} |
49
|
|
|
} |
50
|
|
|
|
51
|
6 |
|
if ($sidx) { |
52
|
6 |
|
$q->orderBy($sidx, $sord); |
53
|
|
|
} |
54
|
|
|
/* Dall'oggetto querybuilder si ottiene la query da eseguire */ |
55
|
6 |
|
$query_paginata = $q->getQuery(); |
56
|
|
|
|
57
|
|
|
/* Object -> $q = $query_paginata->getResult(); */ |
|
|
|
|
58
|
|
|
/* Array */ |
59
|
|
|
/* Si ottiene un array con tutti i records */ |
60
|
6 |
|
$q = $query_paginata->getArrayResult(); |
61
|
|
|
|
62
|
|
|
/* Se il limire non è stato impostato si mette 1 (per calcolare la paginazione) */ |
63
|
6 |
|
$limit = self::getLimit($limit); |
64
|
6 |
|
} |
65
|
|
|
|
66
|
6 |
|
public static function buildRowGriglia(&$singolo, &$vettoreriga, &$vettorerisposta) |
67
|
|
|
{ |
68
|
|
|
|
69
|
|
|
/* Si costruisce la risposta json per la jqgrid */ |
70
|
6 |
|
ksort($vettoreriga); |
71
|
6 |
|
$vettorerigasorted = array(); |
72
|
6 |
|
foreach ($vettoreriga as $value) { |
73
|
6 |
|
$vettorerigasorted[] = $value; |
74
|
|
|
} |
75
|
6 |
|
$vettorerisposta['rows'][] = array('id' => $singolo['id'], 'cell' => $vettorerigasorted); |
76
|
6 |
|
unset($vettoreriga); |
77
|
6 |
|
} |
78
|
|
|
|
79
|
6 |
|
public static function setOrdineColonneDatiGriglia(&$ordinecolonne, &$nomecampo, &$indice, &$indicecolonna) |
80
|
|
|
{ |
81
|
6 |
|
if (isset($ordinecolonne)) { |
82
|
1 |
|
$indicecolonna = array_search($nomecampo, $ordinecolonne); |
83
|
1 |
|
if ($indicecolonna === false) { |
84
|
1 |
|
if ($indice === 0) { |
85
|
1 |
|
$indice = count($ordinecolonne); |
86
|
|
|
} |
87
|
1 |
|
++$indice; |
88
|
1 |
|
$indicecolonna = $indice; |
89
|
|
|
} else { |
90
|
1 |
|
if ($indicecolonna > $indice) { |
91
|
1 |
|
$indice = $indicecolonna; |
92
|
|
|
} |
93
|
|
|
} |
94
|
|
|
} else { |
95
|
5 |
|
++$indice; |
96
|
5 |
|
$indicecolonna = $indice; |
97
|
|
|
} |
98
|
6 |
|
} |
99
|
|
|
|
100
|
6 |
|
public static function buildDatiGriglia($parametri, &$vettoreriga, &$singolo, &$nomecampo, &$indice, &$indicecolonna, &$singolocampo) |
101
|
|
|
{ |
102
|
6 |
|
$doctrine = GrigliaParametriUtils::getDoctrineByEm($parametri); |
103
|
|
|
|
104
|
6 |
|
$bundle = $parametri['nomebundle']; |
|
|
|
|
105
|
6 |
|
$nometabella = $parametri['nometabella']; |
106
|
|
|
|
107
|
6 |
|
$tabellej = $parametri["tabellej"]; |
|
|
|
|
108
|
6 |
|
$decodifiche = $parametri["decodifiche"]; |
|
|
|
|
109
|
6 |
|
$escludere = $parametri["escludere"]; |
|
|
|
|
110
|
6 |
|
$escludereutente = $parametri["escludereutente"]; |
|
|
|
|
111
|
6 |
|
$ordinecolonne = $parametri["ordinecolonne"]; |
|
|
|
|
112
|
|
|
|
113
|
|
|
/* Si controlla se il campo è da escludere o meno */ |
114
|
6 |
|
if ((!isset($escludere) || !(in_array($nomecampo, $escludere))) && (!isset($escludereutente) || !(in_array($nomecampo, $escludereutente)))) { |
115
|
6 |
|
if (isset($tabellej[$nomecampo])) { |
116
|
3 |
|
self::tabellejNomecampoNormalizzato($tabellej, $nomecampo); |
117
|
|
|
/* Per ogni campo si cattura il valore dall'array che torna doctrine */ |
118
|
3 |
|
foreach ($tabellej[$nomecampo]['campi'] as $campoelencato) { |
119
|
|
|
/* Object -> $fields = $singolo->get($tabellej[$nomecampo]["tabella"]) ? |
|
|
|
|
120
|
|
|
$singolo->get($tabellej[$nomecampo]["tabella"])->get($campoelencato): ""; */ |
121
|
|
|
/* array */ |
122
|
|
|
|
123
|
3 |
|
self::setOrdineColonneDatiGriglia($ordinecolonne, $nomecampo, $indice, $indicecolonna); |
124
|
|
|
|
125
|
3 |
|
$parametriCampoElencato = array(); |
|
|
|
|
126
|
3 |
|
$parametriCampoElencato['tabellej'] = $tabellej; |
|
|
|
|
127
|
3 |
|
$parametriCampoElencato['nomecampo'] = $nomecampo; |
|
|
|
|
128
|
3 |
|
$parametriCampoElencato['campoelencato'] = $campoelencato; |
129
|
3 |
|
$parametriCampoElencato['vettoreriga'] = $vettoreriga; |
|
|
|
|
130
|
3 |
|
$parametriCampoElencato['singolo'] = $singolo; |
|
|
|
|
131
|
3 |
|
$parametriCampoElencato['doctrine'] = $doctrine; |
|
|
|
|
132
|
3 |
|
$parametriCampoElencato['bundle'] = $bundle; |
|
|
|
|
133
|
3 |
|
$parametriCampoElencato['ordinecampo'] = $indicecolonna; |
|
|
|
|
134
|
3 |
|
$parametriCampoElencato['decodifiche'] = $decodifiche; |
|
|
|
|
135
|
|
|
|
136
|
3 |
|
$vettoreriga = GrigliaDatiUtils::campoElencato($parametriCampoElencato); |
137
|
|
|
} |
138
|
|
|
} else { |
139
|
6 |
|
self::setOrdineColonneDatiGriglia($ordinecolonne, $nomecampo, $indice, $indicecolonna); |
140
|
|
|
$parametriGrglia = array( |
141
|
6 |
|
'singolocampo' => $singolocampo, |
142
|
6 |
|
'tabella' => $bundle.':'.$nometabella, |
143
|
6 |
|
'nomecampo' => $nomecampo, |
144
|
6 |
|
'doctrine' => $doctrine, |
145
|
6 |
|
'ordinecampo' => $indicecolonna, |
146
|
6 |
|
'decodifiche' => $decodifiche, |
147
|
|
|
); |
148
|
6 |
|
GrigliaDatiUtils::valorizzaVettore($vettoreriga, $parametriGrglia); |
149
|
|
|
} |
150
|
|
|
} |
151
|
6 |
|
} |
152
|
|
|
|
153
|
3 |
|
public static function tabellejNomecampoNormalizzato(&$tabellej, $nomecampo) |
154
|
|
|
{ |
155
|
3 |
|
if (is_object($tabellej[$nomecampo])) { |
156
|
|
|
$tabellej[$nomecampo] = get_object_vars($tabellej[$nomecampo]); |
157
|
|
|
} |
158
|
3 |
|
} |
159
|
|
|
|
160
|
12 |
|
public static function getWidthColonna(&$singoloalias, $colonna) |
161
|
|
|
{ |
162
|
12 |
|
$moltiplicatorelarghezza = GrigliaUtils::MOLTIPLICATORELARGHEZZA; |
163
|
12 |
|
$larghezzamassima = GrigliaUtils::LARGHEZZAMASSIMA; |
|
|
|
|
164
|
12 |
|
$singoloaliaslunghezza = self::getLunghezzaSingoloAlias($singoloalias); |
|
|
|
|
165
|
12 |
|
$larghezzacalc = self::getLunghezzaSingoloAliasCalc($singoloalias, $colonna); |
|
|
|
|
166
|
12 |
|
$moltiplicatore = self::getMoltiplicatoreColonna($singoloaliaslunghezza, $colonna, $moltiplicatorelarghezza); |
|
|
|
|
167
|
12 |
|
$larghezzaricalcolata = ($moltiplicatore > $larghezzamassima ? $larghezzamassima : $larghezzacalc); |
|
|
|
|
168
|
12 |
|
$widthcampo = isset($singoloaliaslunghezza) ? $singoloaliaslunghezza : $larghezzaricalcolata; |
|
|
|
|
169
|
|
|
|
170
|
12 |
|
return $widthcampo; |
171
|
|
|
} |
172
|
|
|
|
173
|
12 |
|
public static function getLunghezzaSingoloAlias(&$singoloalias) |
174
|
|
|
{ |
175
|
12 |
|
return isset($singoloalias['lunghezza']) ? $singoloalias['lunghezza'] : null; |
176
|
|
|
} |
177
|
|
|
|
178
|
12 |
|
public static function getLunghezzaSingoloAliasCalc(&$singoloalias, $colonna) |
179
|
|
|
{ |
180
|
12 |
|
return isset($singoloalias['lunghezza']) ? $singoloalias['lunghezza'] : $colonna['length'] * GrigliaUtils::MOLTIPLICATORELARGHEZZA; |
181
|
|
|
} |
182
|
|
|
|
183
|
12 |
|
public static function getMoltiplicatoreColonna(&$singoloaliaslunghezza, $colonna, $moltiplicatorelarghezza) |
184
|
|
|
{ |
185
|
12 |
|
return isset($singoloaliaslunghezza) ? $singoloaliaslunghezza : $colonna['length'] * $moltiplicatorelarghezza; |
186
|
|
|
} |
187
|
|
|
} |
188
|
|
|
|
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.