Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6 | Andrea | 1 | <?php |
2 | |||
3 | // ************************************************ |
||
4 | // INCLUDE CLASSE ZIP |
||
5 | // ************************************************ |
||
6 | require_once(APP_PATH.'include/LSTU_pclzip.lib.php'); |
||
7 | |||
8 | // ************************************************ |
||
9 | // INCLUDE CLASSE PEAR Mail/mimeDecode.php |
||
10 | // ************************************************ |
||
11 | require_once('Mail/mimeDecode.php'); |
||
12 | |||
13 | // ******************************************************* |
||
14 | // Classi per il parsing xml |
||
15 | // ******************************************************* |
||
16 | require_once(APP_PATH.'include/LSTM_Incrementale_Fab.class.php'); |
||
17 | require_once(APP_PATH.'include/LSTM_Incrementale_Ter.class.php'); |
||
18 | require_once(APP_PATH.'include/LSTM_Incrementale_Sog.class.php'); |
||
19 | require_once(APP_PATH.'include/LSTM_Incrementale_ICI.class.php'); |
||
20 | require_once(APP_PATH.'include/LSTM_Incrementale_TARSU.class.php'); |
||
21 | require_once(APP_PATH.'include/LSTM_Incrementale_TARES.class.php'); |
||
22 | require_once(APP_PATH.'impiantodb/include/LSTM_staging_catasto.inc'); |
||
23 | require_once(APP_PATH.'impiantodb/LSTM_operazioni_db.php'); |
||
24 | |||
25 | function gestione_errore($err, $msg, $associata = false) { |
||
26 | |||
27 | global $conn, $flag_ass; |
||
28 | |||
29 | out('ERRORE = '.$err); |
||
30 | |||
31 | @OCIRollback($conn); |
||
32 | |||
33 | if ($associata) |
||
34 | $flag_ass = 1; |
||
35 | |||
36 | wlog($err, 1, $msg); |
||
37 | |||
38 | if (!update_codstato(11)) |
||
39 | wlog(30014, 1); |
||
40 | |||
41 | $flag_ass = 0; |
||
42 | |||
43 | } |
||
44 | |||
45 | function gestione_update_stato($associata) { |
||
46 | |||
47 | global $flag_ass; |
||
48 | |||
49 | if ($associata) { |
||
50 | |||
51 | $flag_ass = 1; |
||
52 | $autocommit = 0; |
||
53 | } |
||
54 | else { |
||
55 | |||
56 | $autocommit = 1; |
||
57 | } |
||
58 | |||
59 | $ret = update_codstato(12, $autocommit); |
||
60 | |||
61 | $flag_ass = 0; |
||
62 | |||
63 | if (!$ret) { |
||
64 | |||
65 | gestione_errore(30009, '', $associata); |
||
66 | return false; |
||
67 | } |
||
68 | |||
69 | return true; |
||
70 | } |
||
71 | |||
72 | function parse_xml(&$xml, $keyservizio) { |
||
73 | |||
74 | ////////////////////////////////////////////////////////// |
||
75 | // opzioni per il costruttore della classe XML_Unserializer |
||
76 | ////////////////////////////////////////////////////////// |
||
77 | $attribs_name = 'attribs'; |
||
78 | $options = array( |
||
79 | 'complexType' => 'array', |
||
80 | 'parseAttributes' => true, |
||
81 | 'attributesArray' => $attribs_name |
||
82 | ); |
||
83 | |||
84 | switch ($keyservizio) { |
||
85 | |||
86 | case 5: |
||
87 | ////////////////////////////////////////////////////////// |
||
88 | // istanza della classe Incrementale_TARSU |
||
89 | ////////////////////////////////////////////////////////// |
||
90 | $Parser = &new Incrementale_TARSU($options, 'http://www.agenziaterritorio.it/TARSU.xsd'); |
||
91 | break; |
||
92 | case 3: |
||
93 | ////////////////////////////////////////////////////////// |
||
94 | // istanza della classe Incrementale_TARES |
||
95 | ////////////////////////////////////////////////////////// |
||
96 | $Parser = &new Incrementale_TARES($options, 'http://www.agenziaentrate.it/TARES'); |
||
97 | break; |
||
98 | case 6: |
||
99 | |||
100 | ////////////////////////////////////////////////////////// |
||
101 | // istanza della classe Incrementale_ICI |
||
102 | ////////////////////////////////////////////////////////// |
||
103 | $Parser = &new Incrementale_ICI($options, 'http://www.agenziaterritorio.it/ICI.xsd'); |
||
104 | break; |
||
105 | |||
106 | |||
107 | case 7: |
||
108 | |||
109 | ////////////////////////////////////////////////////////// |
||
110 | // istanza della classe Incrementale_Fab |
||
111 | ////////////////////////////////////////////////////////// |
||
112 | $Parser = &new Incrementale_Fab($options, 'http://www.agenziaterritorio.it/IncrementaleOggettiFabbricati.xsd'); |
||
113 | |||
114 | break; |
||
115 | |||
116 | case 8: |
||
117 | case 27: |
||
118 | |||
119 | ////////////////////////////////////////////////////////// |
||
120 | // istanza della classe Incrementale_Ter |
||
121 | ////////////////////////////////////////////////////////// |
||
122 | $Parser = &new Incrementale_Ter($options, 'http://www.agenziaterritorio.it/IncrementaleOggettiTerreni.xsd'); |
||
123 | |||
124 | break; |
||
125 | |||
126 | case 9: |
||
127 | case 10: |
||
128 | |||
129 | ////////////////////////////////////////////////////////// |
||
130 | // istanza della classe Incrementale_Sog |
||
131 | ////////////////////////////////////////////////////////// |
||
132 | $Parser = &new Incrementale_Sog($options, 'http://www.agenziaterritorio.it/IncrementaleSoggetti.xsd'); |
||
133 | |||
134 | break; |
||
135 | } |
||
136 | |||
137 | ////////////////////////////////////////////////////////// |
||
138 | // deserializzazione dell'xml |
||
139 | ////////////////////////////////////////////////////////// |
||
140 | $status = $Parser->P_Unserialize($xml, false); |
||
141 | if (!$status) { |
||
142 | |||
143 | return array(false, 30008, $Parser->P_error); |
||
144 | } |
||
145 | |||
146 | ////////////////////////////////////////////////////////// |
||
147 | // composizione array dati per staging |
||
148 | ////////////////////////////////////////////////////////// |
||
149 | $Parser->compose_staging(); |
||
150 | |||
151 | $arr_staging = $Parser->get_staging(); |
||
152 | |||
153 | if (empty($arr_staging)) |
||
154 | return array(false, 30023, 'Risultato parsing nullo'); |
||
155 | return array(true, $arr_staging, ''); |
||
156 | } |
||
157 | |||
158 | function load_staging_tables(&$arr_staging, $protocollo_staging, &$extra) { |
||
159 | |||
160 | global $conn, $staging_catasto, $GL_OCI_LOB; |
||
161 | |||
162 | foreach ($arr_staging as $_prodotto=>$arr_tabella) { |
||
163 | $ret_w = true; |
||
164 | foreach ($arr_tabella as $nr=>$arr_riga) { |
||
165 | |||
166 | // per i riferimenti planimetrici viene effettuata una insert per ogni pagina |
||
167 | // della planimetria. Il record differisce solo per il numero pagina. |
||
168 | //echo "Il valore della fornitura vale".$_prodotto."\n"; |
||
169 | if ($_prodotto == 'plan') { |
||
170 | // in $arr_riga[8] c'� il totale delle pagine della planimetria |
||
171 | $tot_pag = $arr_riga[8]; |
||
172 | |||
173 | // ciclo per sostituire il totale delle pagine con il numero pagina |
||
174 | for ($npag = 1; $npag <= $tot_pag; $npag++) { |
||
175 | |||
176 | $arr_riga[8] = $npag; |
||
177 | $filename_plan = APP_PATH.'tmp/'.$arr_riga[7].'.'.str_pad($npag, 3, '0', STR_PAD_LEFT); |
||
178 | if(file_exists($filename_plan)) { |
||
179 | list($ret_w, $err, $msg)=insert_blob_plan($filename_plan,$arr_riga,$protocollo_staging); |
||
180 | if (!$ret_w) { |
||
181 | return array(false, 30022, ''); |
||
182 | } |
||
183 | } |
||
184 | } |
||
185 | |||
186 | } |
||
187 | else { |
||
188 | |||
189 | // controllo sul flag classamento MM |
||
190 | if($_prodotto == 'uiu'){ |
||
191 | if(!is_numeric($arr_riga[43])){ |
||
192 | $arr_riga[43]=-1; |
||
193 | } |
||
194 | } |
||
195 | // chiamata alla funzione di scrittura sulle tabelle di staging |
||
196 | $ret_w = write_impianto_db($conn, $_prodotto, null, $arr_riga, $staging_catasto, '', $protocollo_staging, 0); |
||
197 | } |
||
198 | |||
199 | if (!$ret_w) { |
||
200 | |||
201 | return array(false, 30022, ''); |
||
202 | } |
||
203 | /* |
||
204 | elseif ($_prodotto == 'plan') { |
||
205 | |||
206 | // se si tratta di planimetrie bisogna riempire anche il campo blob |
||
207 | // (precedentemente inserito come EMPTY_BLOB()) usando la risorsa |
||
208 | // globale $GL_OCI_LOB settata nelle funzioni oci_db; |
||
209 | |||
210 | global $GL_OCI_LOB; |
||
211 | |||
212 | // chiamata alla funzione che prepara le planimetrie in un file zip; |
||
213 | // parametri in input: nome planimetria, numero fogli; |
||
214 | list($ret, $filename) = get_planimetrie_zipped($arr_riga[7], $arr_riga[8]); |
||
215 | |||
216 | if (!$ret) |
||
217 | return array(false, 30025, 'Creazione file zip planimetrie staging'); |
||
218 | |||
219 | if (!$GL_OCI_LOB->savefile($filename)) { |
||
220 | |||
221 | unlink($filename); |
||
222 | return array(false, 30024, ''); |
||
223 | } |
||
224 | |||
225 | unlink($filename); |
||
226 | } |
||
227 | */ |
||
228 | elseif ($_prodotto == 'uiu' || $_prodotto == 'particelle' || $_prodotto == 'titolarita') { |
||
229 | |||
230 | // INSERT NELLA TABELLA TCW20_CARICAMENTO |
||
231 | |||
232 | if ($_prodotto == 'uiu') { |
||
233 | |||
234 | $arr_caricamento[0] = array(1, $arr_riga[22], 'F', $arr_riga[1], $arr_riga[2], $arr_riga[35], $arr_riga[4], 0, '', '', '', '', '', '', '', '', '', '', $extra[$nr][1], $extra[$nr][2], $extra[$nr][3], $extra[$nr][4], $extra[$nr][5]); |
||
235 | |||
236 | if ($arr_riga[36] != '') |
||
237 | $arr_caricamento[1] = array(1, $arr_riga[28], 'F', $arr_riga[1], $arr_riga[2], $arr_riga[36], $arr_riga[4], 1, '', '', '', '', '', '', '', '', '', '', $extra[$nr][1], $extra[$nr][2], $extra[$nr][3], $extra[$nr][4], $extra[$nr][5]); |
||
238 | |||
239 | } |
||
240 | elseif ($_prodotto == 'particelle') { |
||
241 | |||
242 | $arr_caricamento[0] = array(5, $arr_riga[23], 'T', $arr_riga[1], $arr_riga[2], $arr_riga[36], $arr_riga[4], 0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); |
||
243 | |||
244 | if ($arr_riga[37] != '') |
||
245 | $arr_caricamento[1] = array(5, $arr_riga[29], 'T', $arr_riga[1], $arr_riga[2], $arr_riga[37], $arr_riga[4], 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); |
||
246 | |||
247 | } |
||
248 | elseif ($_prodotto == 'titolarita') { |
||
249 | |||
250 | // controllo tipo catasto per settare tipo operazione |
||
251 | $tipo_operazione = ($arr_riga[6] == 'F') ? 9 : 12; |
||
252 | |||
253 | $arr_caricamento[0] = array($tipo_operazione, $arr_riga[18], $arr_riga[6], $arr_riga[1], $arr_riga[2], $arr_riga[26], '', 0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); |
||
254 | |||
255 | if ($arr_riga[27] != '') |
||
256 | $arr_caricamento[1] = array($tipo_operazione, $arr_riga[25], $arr_riga[6], $arr_riga[1], $arr_riga[2], $arr_riga[27], '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); |
||
257 | |||
258 | } |
||
259 | |||
260 | foreach ($arr_caricamento as $arr_carica_riga) { |
||
261 | |||
262 | // chiamata alla funzione di scrittura sulle tabelle di staging |
||
263 | $ret_w = write_impianto_db($conn, 'caricamento', null, $arr_carica_riga, $staging_catasto, '', $protocollo_staging, 0); |
||
264 | if (!$ret_w) |
||
265 | return array(false, 30022, ''); |
||
266 | } |
||
267 | |||
268 | unset($arr_caricamento); |
||
269 | } |
||
270 | } |
||
271 | } |
||
272 | |||
273 | return array(true, '', ''); |
||
274 | } |
||
275 | |||
276 | |||
277 | function get_xml(&$blob_zipped) { |
||
278 | |||
279 | list($ret, $data_fname, $msg) = get_by_extension($blob_zipped, 'smime'); |
||
280 | |||
281 | if (!$ret) |
||
282 | return array(false, $data_fname, $msg); |
||
283 | |||
284 | $smime = implode('', file($data_fname)); |
||
285 | |||
286 | unlink($data_fname); |
||
287 | |||
288 | /////////////////////////////////////////////////////////////////// |
||
289 | // DECODIFICA DEL PKCS7 E RECUPERO DEL CORPO (BODY) DEL MESSAGGIO |
||
290 | /////////////////////////////////////////////////////////////////// |
||
291 | $struct_pkcs7 = decode_pkcs7($smime); |
||
292 | |||
293 | if (!isset($struct_pkcs7->parts[0]->body)) |
||
294 | return array(false, 30007, 'Decodifica PKCS7 fallita'); |
||
295 | |||
296 | $xml = $struct_pkcs7->parts[0]->body; |
||
297 | |||
298 | return array(true, $xml, ''); |
||
299 | } |
||
300 | |||
301 | function gestione_fornitura_associata() { |
||
302 | |||
303 | global $keyservizio, $keycom, $keysez, $progiscrizione, $periodo_da, $periodo_a, $keydett, $protocollo_ass; |
||
304 | |||
305 | /////////////////////////////////////////////////////// |
||
306 | // CONTROLLO PRESENZA FORNITURA ASSOCIATA ED EVENTUALE |
||
307 | // RECUPERO DI TOTALE_FILE E PROTOCOLLO |
||
308 | /////////////////////////////////////////////////////// |
||
309 | list($ret, $n_file_tot_ass, $protocollo_ass,$keydett_ass) = check_fornitura($progiscrizione, $periodo_da, $periodo_a, 1, $keydett, 4); |
||
310 | |||
311 | if (!$ret) |
||
312 | return array(false, 30013, ''); |
||
313 | elseif ($ret === 'NODATA') |
||
314 | return array('NODATA', '', ''); |
||
315 | |||
316 | list($ret, $data_prot) = insert_protocollo_staging($keyservizio, $keycom, $keysez, $periodo_da, $periodo_a, $protocollo_ass, 0); |
||
317 | |||
318 | if (!$ret) |
||
319 | return array(false, $data_prot, ''); |
||
320 | |||
321 | $protocollo_staging = $data_prot; |
||
322 | |||
323 | $arr_hash = array(); |
||
324 | |||
325 | ///////////////////////////////////////////////// |
||
326 | // CICLO SU OGNI FILE DELLA FORNITURA ASSOCIATA |
||
327 | ///////////////////////////////////////////////// |
||
328 | for ($idfile = 1; $idfile <= $n_file_tot_ass; $idfile++) { |
||
329 | |||
330 | ///////////////////////////////////////////////// |
||
331 | // RECUPERO DEL FILE DELLA FORNITURA |
||
332 | ///////////////////////////////////////////////// |
||
333 | list($ret, $data, $msg) = extract_blob($progiscrizione, $periodo_da, $periodo_a, 1, $keydett_ass, $idfile); |
||
334 | |||
335 | if (!$ret) |
||
336 | return array(false, $data, $msg); |
||
337 | |||
338 | if ($keyservizio == 7) { |
||
339 | |||
340 | /////////////////////////////////////////////////////// |
||
341 | // CALCOLO E MEMORIZZAZIONE DELL'HASH DELLE PLANIMETRIE |
||
342 | // ($arr_hash passato per riferimento) |
||
343 | /////////////////////////////////////////////////////// |
||
344 | list($ret, $err, $msg) = get_hash($data, $arr_hash); |
||
345 | } |
||
346 | elseif ($keyservizio == 27) { |
||
347 | |||
348 | ///////////////////////////////////////////////// |
||
349 | // GESTIONE DELLE FORNITURE XML |
||
350 | ///////////////////////////////////////////////// |
||
351 | list($ret, $err, $msg) = gestione_dati_xml($data, '', $protocollo_staging); |
||
352 | } |
||
353 | |||
354 | if (!$ret) |
||
355 | return array(false, $err, $msg); |
||
356 | } |
||
357 | |||
358 | if(!update_codstato_ass(12,0,$keydett_ass)) |
||
359 | return array(false,30009, 'Errore aggiornamento dello stato'); |
||
360 | |||
361 | return array(true, $arr_hash, ''); |
||
362 | } |
||
363 | |||
364 | function get_hash(&$blob_zipped, &$arr_hash) { |
||
365 | |||
366 | list($ret, $data_fname, $msg) = get_by_extension($blob_zipped, 'zip'); |
||
367 | |||
368 | if (!$ret) |
||
369 | return array(false, $data_fname, $msg); |
||
370 | |||
371 | $zip = new PclZip($data_fname); |
||
372 | |||
373 | $arr_list = $zip->listContent(); |
||
374 | |||
375 | if (!$arr_list) |
||
376 | return array(false, 30021, 'Fallita lista del contenuto del file zip:'.$zip->errorInfo()); |
||
377 | |||
378 | foreach ($arr_list as $v) { |
||
379 | |||
380 | if (!$zip->extractByIndex($v['index'], APP_PATH.'tmp')) |
||
381 | return array(false, 30017, 'Fallita estrazione file da zip'); |
||
382 | |||
383 | $filename = basename($v['filename']); |
||
384 | |||
385 | $arr_hash[$filename] = md5_file(APP_PATH.'tmp/'.$filename); |
||
386 | |||
387 | //unlink(APP_PATH.'tmp/'.$filename); |
||
388 | } |
||
389 | |||
390 | unlink($data_fname); |
||
391 | |||
392 | return array(true, '', ''); |
||
393 | } |
||
394 | |||
395 | function check_hash($arr_hash, $arr_check) { |
||
396 | |||
397 | foreach ($arr_check as $v) { |
||
398 | |||
399 | $chiave = $v[1].'.'.str_pad($v[2], 3, '0', STR_PAD_LEFT); |
||
400 | |||
401 | if (isset($arr_hash[$chiave])) { |
||
402 | |||
403 | if ($arr_hash[$chiave] != $v[3]) |
||
404 | return array(false, 30019, 'Nome file: '.$chiave); |
||
405 | |||
406 | } |
||
407 | else { |
||
408 | |||
409 | out('Nome file: '.$chiave.' non trovato'); |
||
410 | //return array(false, 30018, 'Nome file: '.$chiave); |
||
411 | } |
||
412 | } |
||
413 | |||
414 | return array(true, '', ''); |
||
415 | } |
||
416 | |||
417 | function get_by_extension(&$blob_zipped, $ext) { |
||
418 | |||
419 | $fname_blob = tempnam(APP_PATH.'tmp', 'BLOB_'); |
||
420 | |||
421 | if (!wfile($fname_blob, $blob_zipped)) |
||
422 | return array(false, 30005, 'Errore scrittura file: '.$fname_blob); |
||
423 | |||
424 | $zip = new PclZip($fname_blob); |
||
425 | |||
426 | $arr_list = $zip->listContent(); |
||
427 | |||
428 | if (!$arr_list) |
||
429 | return array(false, 30020, 'Fallita lista del contenuto del file zip:'.$zip->errorInfo()); |
||
430 | |||
431 | foreach ($arr_list as $v) { |
||
432 | |||
433 | $arr_name = explode('.', basename($v['filename'])); |
||
434 | $ext_file = end($arr_name); |
||
435 | |||
436 | if ($ext_file == $ext) { |
||
437 | |||
438 | $fname = APP_PATH.'tmp/'.basename($v['filename']); |
||
439 | $index = $v['index']; |
||
440 | break; |
||
441 | } |
||
442 | } |
||
443 | |||
444 | if (!isset($index)) { |
||
445 | |||
446 | unlink($fname_blob); |
||
447 | return array(false, 30015, $ext.' non contenuto nel file zip'); |
||
448 | } |
||
449 | |||
450 | if (!$zip->extractByIndex($index, APP_PATH.'tmp')) { |
||
451 | |||
452 | unlink($fname_blob); |
||
453 | return array(false, 30006, 'Fallita estrazione file: '.$fname); |
||
454 | } |
||
455 | |||
456 | unlink($fname_blob); |
||
457 | |||
458 | return array(true, $fname, ''); |
||
459 | } |
||
460 | |||
461 | function get_planimetrie_zipped($name, $number) { |
||
462 | |||
463 | $fname_zip = tempnam(APP_PATH.'tmp', 'ZIP_'); |
||
464 | |||
465 | $zip = new PclZip($fname_zip); |
||
466 | |||
467 | for ($i = 1; $i <= $number; $i++) { |
||
468 | |||
469 | $filelist[] = APP_PATH.'tmp/'.$name.'.'.str_pad($i, 3, '0', STR_PAD_LEFT); |
||
470 | } |
||
471 | |||
472 | $ret = $zip->create($filelist, '', APP_PATH.'tmp'); |
||
473 | |||
474 | foreach ($filelist as $file) { |
||
475 | |||
476 | unlink($file); |
||
477 | } |
||
478 | |||
479 | if (!$ret) |
||
480 | return array(false, ''); |
||
481 | |||
482 | return array(true, $fname_zip); |
||
483 | } |
||
484 | |||
485 | function gestione_dati_xml(&$blob_zipped, $data_hash, $protocollo_staging) { |
||
486 | |||
487 | global $keyservizio; |
||
488 | |||
489 | ///////////////////////////////////////////////// |
||
490 | // RECUPERO DELL'XML DEL FILE DELLA FORNITURA |
||
491 | ///////////////////////////////////////////////// |
||
492 | list($ret, $data_xml, $msg) = get_xml($blob_zipped); |
||
493 | |||
494 | if (!$ret) |
||
495 | return array(false, $data_xml, $msg); |
||
496 | |||
497 | //////////////////////////////////////////////////// |
||
498 | // PARSIG DELL'XML E CARICAMENTO DELL'ARRAY DI DATI |
||
499 | //////////////////////////////////////////////////// |
||
500 | list($ret, $data_staging, $msg) = parse_xml($data_xml, $keyservizio); |
||
501 | |||
502 | if (!$ret) |
||
503 | return array(false, $data_staging, $msg); |
||
504 | |||
505 | if ('DATI_ASSENTI' != $data_staging) { |
||
506 | |||
507 | if ($keyservizio == 7) { |
||
508 | |||
509 | if (isset($data_staging['check'])) { |
||
510 | /////////////////////////////////////////////////////// |
||
511 | // SE IL SERVIZIO E' INCREMENTALE FABBRICATI |
||
512 | // E DAL PARSING DELL'XML SI SONO OTTENUTI GLI HASH -> |
||
513 | // CONTROLLO HASH |
||
514 | /////////////////////////////////////////////////////// |
||
515 | list($ret, $err, $msg) = check_hash($data_hash, $data_staging['check']); |
||
516 | |||
517 | // $data_staging['check'] viene eliminato perch� non deve essere passato |
||
518 | // alla funzione load_staging_tables() |
||
519 | unset($data_staging['check']); |
||
520 | |||
521 | if (!$ret) |
||
522 | return array(false, $err, $msg); |
||
523 | |||
524 | out('OK HASH'); |
||
525 | } |
||
526 | |||
527 | /////////////////////////////////////////////////////// |
||
528 | // SE IL SERVIZIO E' INCREMENTALE FABBRICATI |
||
529 | // IMPOSTO $caricamento_extra PER I FLAGS |
||
530 | // E POI RIPULISCO L'ARRAY DI STAGING |
||
531 | /////////////////////////////////////////////////////// |
||
532 | $caricamento_extra = $data_staging['flags_fabbricati']; |
||
533 | unset($data_staging['flags_fabbricati']); |
||
534 | //print_r($data_staging); |
||
535 | } |
||
536 | else { |
||
537 | |||
538 | $caricamento_extra = ''; |
||
539 | } |
||
540 | |||
541 | out('CARICAMENTO TABELLE DI STAGING'); |
||
542 | |||
543 | //////////////////////////////////////////////////// |
||
544 | // CARICAMENTO TABELLE DI STAGING |
||
545 | //////////////////////////////////////////////////// |
||
546 | list($ret, $err, $msg) = load_staging_tables($data_staging, $protocollo_staging, $caricamento_extra); |
||
547 | |||
548 | if (!$ret) |
||
549 | return array(false, $err, $msg); |
||
550 | } |
||
551 | |||
552 | return array(true, '', ''); |
||
553 | } |
||
554 | |||
555 | function gestione_dati_zip(&$blob_zipped, $protocollo_fornitura, $protocollo_staging, $progressivo) { |
||
556 | |||
557 | global $gl_PP_arr_xml; |
||
558 | |||
559 | ///////////////////////////////////////////////// |
||
560 | // INCLUDE CLASSE PATH_PARSER |
||
561 | ///////////////////////////////////////////////// |
||
562 | |||
563 | require_once(APP_PATH.'include/LSTM_class_path_parser.php'); |
||
564 | |||
565 | ///////////////////////////////////////////////// |
||
566 | // RECUPERO DELL'XML DEL FILE DELLA FORNITURA |
||
567 | ///////////////////////////////////////////////// |
||
568 | list($ret, $data_xml, $msg) = get_xml($blob_zipped); |
||
569 | |||
570 | if (!$ret) |
||
571 | return array(false, $data_xml, $msg); |
||
572 | |||
573 | ///////////////////////////////////////////////// |
||
574 | // LETTURA HASH DALL'XML |
||
575 | ///////////////////////////////////////////////// |
||
576 | |||
577 | //MM Inizio Trattamento Dati Assenti |
||
578 | //Cerco se i dati sono presenti |
||
579 | |||
580 | $path_ass = '/DatiOut/DatiAssenti'; |
||
581 | //MODIFICA MM |
||
582 | if(read_xml_if_exist_single_tag($data_xml,$path_ass)){ |
||
583 | if(!empty($gl_PP_arr_xml)){ |
||
584 | if(array_key_exists($path_ass, $gl_PP_arr_xml)){ |
||
585 | $assenza_dati = $gl_PP_arr_xml[$path_ass]; |
||
586 | echo "Il valore dei Dati assenti vale ".$assenza_dati; |
||
587 | if ('true' == $assenza_dati || '1' == $assenza_dati) |
||
588 | return array(true, '', ''); |
||
589 | } |
||
590 | } |
||
591 | } |
||
592 | //MM fine Trattamento Dati Assenti |
||
593 | |||
594 | $path = '/DatiOut/DatiPresenti/ChecksumZip/Hash'; |
||
595 | read_xml_single_tag($data_xml, $path); |
||
596 | $hash_in_xml = $gl_PP_arr_xml[$path]; |
||
597 | |||
598 | if (empty($hash_in_xml)) |
||
599 | return array(false, 30026, 'HASH DEL FILE ZIP NON PRESENTE'); |
||
600 | |||
601 | ///////////////////////////////////////////////// |
||
602 | // RECUPERO DELLO ZIP DEL FILE DELLA FORNITURA |
||
603 | ///////////////////////////////////////////////// |
||
604 | list($ret, $data_fname, $msg) = get_by_extension($blob_zipped, 'zip'); |
||
605 | |||
606 | if (!$ret) |
||
607 | return array(false, $data_fname, $msg); |
||
608 | |||
609 | ///////////////////////////////////////////////// |
||
610 | // CALCOLO HASH DEL FILE |
||
611 | ///////////////////////////////////////////////// |
||
612 | $hash_zip = md5_file($data_fname); |
||
613 | |||
614 | //echo "IL VALORE DEL FILE HASH VALE=|".$hash_zip."|\n"; |
||
615 | //echo "IL VALORE DEL HASH NEL FILE XML VALE=|".$hash_in_xml."|\n"; |
||
616 | //echo "IL NOME FILE=|".$data_fname."|\n"; |
||
617 | |||
618 | ///////////////////////////////////////////////// |
||
619 | // CONFRONTO HASH |
||
620 | ///////////////////////////////////////////////// |
||
621 | //if ($hash_zip != $hash_in_xml) |
||
622 | //return array(false, 30027, ''); |
||
623 | |||
624 | //////////////////////////////////////////////////// |
||
625 | // INSERIMENTO DELLO ZIP NELLA TABELLA TCW24_BLOB_CART |
||
626 | //////////////////////////////////////////////////// |
||
627 | list($ret, $err, $msg) = insert_blob_cart($data_fname, $protocollo_fornitura, $protocollo_staging, $progressivo); |
||
628 | |||
629 | if (!$ret) |
||
630 | return array(false, $err, $msg); |
||
631 | |||
632 | return array(true, '', ''); |
||
633 | } |
||
634 | ?> |