Completed
Push — master ( 69263b...b8d5de )
by Andrea
14:35
created

GrigliaDatiUtils::setTabelleJoin()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 4.0218

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 8
cts 9
cp 0.8889
rs 9.2
c 0
b 0
f 0
cc 4
eloc 8
nc 3
nop 2
crap 4.0218
1
<?php
2
3
namespace Fi\CoreBundle\DependencyInjection;
4
5
class GrigliaDatiUtils
6
{
7
8 1
    public static function getTabellejNormalizzate($parametri)
9
    {
10 1
        $tabellej = (isset($parametri['tabellej']) ? $parametri['tabellej'] : null);
11 1
        if (is_object($tabellej)) {
12
            $tabellej = get_object_vars($tabellej);
13
        }
14
15 1
        return $tabellej;
16
    }
17
18 1
    public static function setTabelleJoin(&$q, $parametri = array())
19
    {
20 1
        $tabellej = $parametri['tabellej'];
21 1
        $nometabella = $parametri['nometabella'];
22
23 1
        foreach ($tabellej as $tabellaj) {
24 1
            if (is_object($tabellaj)) {
25
                $tabellaj = get_object_vars($tabellaj);
26
            }
27
            /* Serve per far venire nella getArrayResult() anche i campi della tabella il leftjoin
28
              altrimenti mostra solo quelli della tabella con alias a */
29 1
            $q->addSelect(array($tabellaj['tabella']));
30 1
            $q = $q->leftJoin((isset($tabellaj['padre']) ? $tabellaj['padre'] : $nometabella) . '.' . $tabellaj['tabella'], $tabellaj['tabella']);
31
        }
32 1
    }
33
34 1
    public static function getDatiDecodifiche($parametri)
35
    {
36 1
        return isset($parametri['decodifiche']) ? $parametri['decodifiche'] : null;
37
    }
38
39 1
    public static function getDatiNospan($parametri)
40
    {
41 1
        return isset($parametri['nospan']) ? $parametri['nospan'] : false;
42
    }
43
44 1
    public static function getDatiPrecondizioni($parametri)
45
    {
46 1
        return isset($parametri['precondizioni']) ? $parametri['precondizioni'] : false;
47
    }
48
49 1
    public static function getDatiPrecondizioniAvanzate($parametri)
50
    {
51 1
        return isset($parametri['precondizioniAvanzate']) ? $parametri['precondizioniAvanzate'] : false;
52
    }
53
54 1
    public static function getDatiCampiExtra($parametri)
55
    {
56 1
        return isset($parametri['campiextra']) ? $parametri['campiextra'] : null;
57
    }
58
59 1
    public static function getDatiOrdineColonne($parametri)
60
    {
61 1
        $ordinecolonne = (isset($parametri['ordinecolonne']) ? $parametri['ordinecolonne'] : null);
62 1
        if (!isset($ordinecolonne)) {
63 1
            $ordinecolonne = GrigliaUtils::ordinecolonne($parametri);
64
        }
65
66 1
        return $ordinecolonne;
67
    }
68
69 1
    public static function getDatiOrdinamento(&$sidx, $nometabella)
70
    {
71
        /* se non è passato nessun campo (ipotesi peregrina) usa id */
72 1
        if (!$sidx) {
73 1
            $sidx = $nometabella . '.id';
74
        } elseif (strrpos($sidx, '.') == 0) {
75
            if (strrpos($sidx, ',') == 0) {
76
                $sidx = $nometabella . '.' . $sidx; // un solo campo
77
            } else { // più campi, passati separati da virgole
78
                $parti = explode(',', $sidx);
79
                $sidx = '';
80
                foreach ($parti as $parte) {
81
                    if (trim($sidx) != '') {
82
                        $sidx = $sidx . ',';
83
                    }
84
                    $sidx = $sidx . $nometabella . '.' . trim($parte);
85
                }
86
            }
87
        }
88 1
    }
89
90 1
    public static function valorizzaVettore(&$vettoreriga, $parametri)
91
    {
92 1
        $tabella = $parametri['tabella'];
93 1
        $nomecampo = $parametri['nomecampo'];
94 1
        $doctrine = $parametri['doctrine'];
95 1
        $ordinecampo = $parametri['ordinecampo'];
96 1
        $decodifiche = $parametri['decodifiche'];
97
98 1
        $vettoreparcampi = $doctrine->getMetadataFactory()->getMetadataFor($tabella)->fieldMappings;
99
100 1
        if (is_object($vettoreparcampi)) {
101
            $vettoreparcampi = get_object_vars($vettoreparcampi);
102
        }
103
104 1
        $singolocampo = $parametri['singolocampo'];
105
106 1
        if (isset($decodifiche[$nomecampo])) {
107
            $vettoreriga[] = $decodifiche[$nomecampo][$singolocampo];
108
        } else {
109 1
            $vettoretype = isset($vettoreparcampi[$nomecampo]['type']) ? $vettoreparcampi[$nomecampo]['type'] : null;
110 1
            if (isset($vettoretype) && ($vettoretype == 'date' || $vettoretype == 'datetime') && $singolocampo) {
111 1
                if (isset($ordinecampo)) {
112 1
                    $vettoreriga[$ordinecampo] = $singolocampo->format('d/m/Y');
113
                } else {
114 1
                    $vettoreriga[] = $singolocampo->format('d/m/Y');
115
                }
116 1
            } elseif (isset($vettoretype) && ($vettoreparcampi[$nomecampo]['type'] == 'time') && $singolocampo) {
117
                if (isset($ordinecampo)) {
118
                    $vettoreriga[$ordinecampo] = $singolocampo->format('H:i');
119
                } else {
120
                    $vettoreriga[] = $singolocampo->format('H:i');
121
                }
122
            } else {
123 1
                if (isset($ordinecampo)) {
124 1
                    $vettoreriga[$ordinecampo] = $singolocampo;
125
                } else {
126
                    $vettoreriga[] = $singolocampo;
127
                }
128
            }
129
        }
130 1
    }
131
132 1
    public static function campoElencato($parametriCampoElencato)
133
    {
134 1
        $tabellej = $parametriCampoElencato['tabellej'];
135 1
        $nomecampo = $parametriCampoElencato['nomecampo'];
136 1
        $campoelencato = $parametriCampoElencato['campoelencato'];
137 1
        $vettoreriga = $parametriCampoElencato['vettoreriga'];
138 1
        $singolo = $parametriCampoElencato['singolo'];
139 1
        $doctrine = $parametriCampoElencato['doctrine'];
140 1
        $bundle = $parametriCampoElencato['bundle'];
141 1
        $decodifiche = $parametriCampoElencato['decodifiche'];
142
143 1
        if (isset($parametriCampoElencato['ordinecampo'])) {
144 1
            $ordinecampo = $parametriCampoElencato['ordinecampo'];
145
        } else {
146
            $ordinecampo = null;
147
        }
148
149 1
        if (isset($tabellej[$campoelencato])) {
150
            foreach ($tabellej[$campoelencato]['campi'] as $campoelencatointerno) {
151
                $parametriCampoElencatoInterno = array();
152
                $parametriCampoElencatoInterno['tabellej'] = $tabellej;
153
                $parametriCampoElencatoInterno['nomecampo'] = $campoelencato;
154
                $parametriCampoElencatoInterno['campoelencato'] = $campoelencatointerno;
155
                $parametriCampoElencatoInterno['vettoreriga'] = $vettoreriga;
156
                $parametriCampoElencatoInterno['singolo'] = $singolo;
157
                $parametriCampoElencatoInterno['doctrine'] = $doctrine;
158
                $parametriCampoElencatoInterno['bundle'] = $bundle;
159
                $parametriCampoElencatoInterno['ordinecampo'] = $ordinecampo;
160
                $parametriCampoElencatoInterno['decodifiche'] = $decodifiche;
161
162
                $vettoreriga = self::campoElencato($parametriCampoElencatoInterno);
163
            }
164
        } else {
165 1
            if (isset($tabellej[$nomecampo]['padre'])) {
166
                $fields = $singolo[$tabellej[$nomecampo]['padre']][$tabellej[$nomecampo]['tabella']] ?
167
                        $singolo[$tabellej[$nomecampo]['padre']][$tabellej[$nomecampo]['tabella']][$campoelencato] :
168
                        '';
169
            } else {
170 1
                $fields = $singolo[$tabellej[$nomecampo]['tabella']] ?
171 1
                        $singolo[$tabellej[$nomecampo]['tabella']][$campoelencato] :
172 1
                        '';
173
            }
174
            $vettoredavalorizzare = array(
175 1
                'singolocampo' => $fields,
176 1
                'tabella' => $bundle . ':' . $tabellej[$nomecampo]['tabella'],
177 1
                'nomecampo' => $campoelencato,
178 1
                'doctrine' => $doctrine,
179 1
                'ordinecampo' => $ordinecampo,
180 1
                'decodifiche' => $decodifiche,
181
            );
182 1
            self::valorizzaVettore($vettoreriga, $vettoredavalorizzare);
183
        }
184
185 1
        return $vettoreriga;
186
    }
187
}
188