| 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 |  |  |  |