1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Fi\CoreBundle\Utils; |
4
|
|
|
|
5
|
|
|
class GrigliaFiltriUtils |
6
|
|
|
{ |
7
|
|
|
/** |
8
|
|
|
* Funzione alla quale si passano i filtri nel formato gestito da jqGrid e |
9
|
|
|
* che restituisce una stringa che contiene la descrizione in linguaggio |
10
|
|
|
* naturale. |
11
|
|
|
* |
12
|
|
|
* @param array $parametri |
13
|
|
|
* |
14
|
|
|
* @return string |
15
|
|
|
*/ |
16
|
2 |
|
public static function traduciFiltri($parametri = array()) |
17
|
|
|
{ |
18
|
2 |
|
$genericofiltri = $parametri['filtri']; |
19
|
|
|
|
20
|
2 |
|
$filtri = isset($genericofiltri->rules) ? $genericofiltri->rules : ''; |
|
|
|
|
21
|
2 |
|
$tipofiltro = isset($genericofiltri->groupOp) ? $genericofiltri->groupOp : ''; |
|
|
|
|
22
|
|
|
GrigliaUtils::$decodificaop = array( |
23
|
2 |
|
'eq' => ' è uguale a ', |
24
|
2 |
|
'ne' => ' è diverso da ', |
25
|
2 |
|
'lt' => ' è inferiore a ', |
26
|
2 |
|
'le' => ' è inferiore o uguale a ', |
27
|
2 |
|
'gt' => ' è maggiore di ', |
28
|
2 |
|
'ge' => ' è maggiore o uguale di ', |
29
|
2 |
|
'bw' => ' comincia con ', |
30
|
2 |
|
'bn' => ' non comincia con ', |
31
|
2 |
|
'in' => ' è uno fra ', |
32
|
2 |
|
'ni' => ' non è uno fra ', |
33
|
2 |
|
'ew' => ' finisce con ', |
34
|
2 |
|
'en' => ' con finisce con ', |
35
|
2 |
|
'cn' => ' contiene ', |
36
|
2 |
|
'nc' => ' non contiene ', |
37
|
2 |
|
'nu' => ' è vuoto', |
38
|
2 |
|
'nn' => ' non è vuoto',); |
39
|
|
|
|
40
|
2 |
|
if (!isset($filtri) || (!$filtri)) { |
41
|
|
|
return ''; |
42
|
|
|
} |
43
|
|
|
|
44
|
2 |
|
$filtrodescritto = self::getFiltrodescritto($filtri, $tipofiltro); |
45
|
|
|
|
46
|
2 |
|
return $filtrodescritto; |
47
|
|
|
} |
48
|
2 |
|
public static function getFiltrodescritto($filtri, $tipofiltro) |
49
|
|
|
{ |
50
|
2 |
|
$filtrodescritto = ('I dati mostrati rispondono a' . ($tipofiltro == 'AND' ? ' tutti i' : 'd almeno uno dei') . ' seguenti criteri: '); |
51
|
|
|
|
52
|
2 |
|
foreach ($filtri as $indice => $filtro) { |
53
|
2 |
|
$campo = $filtro->field; |
|
|
|
|
54
|
2 |
|
$operatore = $filtro->op; |
|
|
|
|
55
|
2 |
|
$data = $filtro->data; |
|
|
|
|
56
|
2 |
|
$strtipofiltro = ($indice !== 0 ? ($tipofiltro == 'AND' ? ' e ' : ' o ') : ''); |
|
|
|
|
57
|
2 |
|
$strcampo = GrigliaUtils::toCamelCase(array('str' => $campo, 'primamaiuscola' => true)); |
|
|
|
|
58
|
2 |
|
$stroperatore = GrigliaUtils::$decodificaop[$operatore]; |
|
|
|
|
59
|
2 |
|
$strdata = "\"$data\""; |
|
|
|
|
60
|
2 |
|
$filtrodescritto = sprintf("%s%s%s%s%s", $filtrodescritto, $strtipofiltro, $strcampo, $stroperatore, $strdata); |
|
|
|
|
61
|
2 |
|
} |
62
|
|
|
|
63
|
2 |
|
$filtrodescritto .= '.'; |
64
|
|
|
|
65
|
2 |
|
return $filtrodescritto; |
66
|
|
|
} |
67
|
|
|
} |
68
|
|
|
|
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.
To visualize
will produce issues in the first and second line, while this second example
will produce no issues.