function file_unpack ($conn,$flag_plan,$file_input,$byte,$num_rec,$num_rec_prox,$num_file_input,$logf,$ripristino,$protocollo,$codSel){
include ('include/LSTU_path.inc');
require_once ('LSTM_operazioni_db.php');
include ('include/LSTM_staging_catasto.inc');
require_once ('include/LSTU_controllo_fornitura.inc');
require_once ('include/LSTU_fun_log.inc');
require_once ('LSTU_temp_file.php');
//w_log($logf,'---- DENTRO A file_unpack');
//w_log($logf,"$flag_plan,$file_input,$byte,$num_rec,$num_rec_prox,$num_file_input,$logf,$ripristino,$protocollo,$codSel");
global $gl_ripr;
$ultimo_file = 0;
$url_home = 'LSTV_file_frame.php';
$paramEseguiStaging = '';
$paramEseguiStaging = '&fileselected='.$codSel;
$form_data = "sysdate";
if ($flag_plan) {
list($codSelClear, $extCodSelClear) = explode('.', $codSel);
$real_file_input = getRealName($file_input, $codSelClear);
}
else {
$real_file_input = getRealName($file_input, $codSel);
}
$path_file_input = $path_output."/".$real_file_input;
$inf_input = select_file($path_input, $codSel);
$nome_prodotto = substr($file_input,0,strpos($file_input,".dat"));
$nv = $staging_catasto["$nome_prodotto"]['Nrocampi'];
if ($flag_plan) {
Global $arrFornPln;
if ($num_file_input == count($arrFornPln))
$ultimo_file = 1;
}
else {
$file_tit = $inf_input[1];
if ($file_input == 'titolarita.dat')
$path_file_input = $path_input."/".$file_tit;
if ($num_file_input == count($staging_catasto))
$ultimo_file = 1;
}
if (!file_exists($path_file_input)) {
$fpw = fopen($path_file_input, 'w+');
fclose($fpw);
}// SE NON ESISTE LO CREO (ARTIFICIO PER TRATTARE LE DUE FORNITURE SEPARATAMENTE)
$fp = fopen($path_file_input, 'r') or die('impossibile aprire il file');
if ($gl_ripr) {
for ($riga = 1; $riga < $num_rec; $riga++) {
$line = fgets($fp, 1024);
}
$byte = ftell($fp);
}
fseek($fp, $byte, SEEK_SET);
$line = fgets($fp, 1024);
$line = lastChar(trim($line), '|');
set_time_limit(0);
$debug = 0;
while ((!feof($fp) && $num_rec < $num_rec_prox) && ($debug != 1)) {
$vinput = explode('|', $line);
$ritorno = write_impianto_db($conn, $nome_prodotto, $nv, $vinput, $staging_catasto, $logf, $protocollo, 0);
if (!$ritorno) {
?>
OCIRollback($conn);
fclose($fp);
return false;
}
$num_rec++;
if ($num_rec < $num_rec_prox) {
$line = fgets($fp, 1024);
$line = lastChar(trim($line), '|');
}
}// fine ciclo while esterno
//scrittura del record di errore nella tabella errlog
$num_rec--;
$sql_aggiornamento = "UPDATE tcw17_errlog SET tcw17_step = $num_file_input, TCW17_DESCR_ERR = 'IMPDBERR', tcw17_last_record=$num_rec, TCW17_DATE=$form_data WHERE TCW17_DESCR_ERR='IMPDBERR' and TCW17_PROTOCOLLO = $protocollo";
list ($stmt_err, $ocierr) = exec_sql($conn, $sql_aggiornamento, 0);
if (!$stmt_err) {
$msg = 'Impossibile scrittura DB - fallita UPDATE tcw17_errlog ||| '.$ocierr['message'].' ||| SQL='.$sql_aggiornamento;
$log_write = w_log($logf, $msg);
?>
OCIRollback($conn);
fclose($fp);
return false;
}
if (!OCICommit($conn)) {
?>
$msg = 'Fallita commit impianto';
$log_write = w_log($logf, $msg);
@OCIRollback($conn);
fclose($fp);
return false;
}
//23/06/2004 16.09 modificato x debug
if (feof($fp) && $ultimo_file || ($debug == 1 && $ultimo_file)) {
// fine ultimo file
fclose($fp);
?>
//01/09/2004 16.30
if (!$ripristino) {
$elab_ok = "UPDATE tcw17_errlog SET tcw17_step = 0, TCW17_DESCR_ERR = 'IMPDBOK', tcw17_last_record=0, TCW17_DATE=$form_data WHERE TCW17_DESCR_ERR='IMPDBERR' and TCW17_PROTOCOLLO = $protocollo ";
$msg = 'Impianto tabelle Staging effettuato con successo!';
}
elseif ($ripristino) {
$elab_ok = "UPDATE tcw17_errlog SET tcw17_step = 0, TCW17_DESCR_ERR = 'IMPDBRIPROK', tcw17_last_record=0,TCW17_DATE=$form_data WHERE TCW17_DESCR_ERR='IMPDBERR' and TCW17_PROTOCOLLO = $protocollo";
$msg = 'Impianto tabelle Staging effettuato con successo su ripristino!';
}
$log_write = w_log($logf, $msg);
$el = el_file_tmp($path_output, $codSel, '');
list ($stmt, $ocierr) = exec_sql($conn, $elab_ok, 1);
if (!$stmt) {
$msg = 'Errore update tcw17_errlog ||| '.$ocierr['message'].' ||| SQL='.$elab_ok;
$log_write = w_log($logf, $msg);
?>
}
js_redirect($url_home);
return true;
}
else {
$script = ($flag_plan) ? 'LSTV_planimetrie.php' : 'LSTV_esegui_staging.php';
//23/06/2004 16.09 modificato x debug
if (feof($fp) && !$ultimo_file || ($debug == 1 && !$ultimo_file)) {
// fine file intermedio
$num_file_input++;
$num_rec = 1;
$byte = 0;
$url = $script.'?byte='.$byte.'&num_file_input='.$num_file_input.'&num_rec='.$num_rec.'&ripristino='.$ripristino.'&ti07_protocollo_staging='.$protocollo.$paramEseguiStaging;
fclose($fp);
js_redirect($url);
return true;
}
else {
//parte centrale del file
$byte = ftell($fp);
$num_rec = $num_rec_prox;
$url = $script.'?byte='.$byte.'&num_file_input='.$num_file_input.'&num_rec='.$num_rec.'&ripristino='.$ripristino.'&ti07_protocollo_staging='.$protocollo.$paramEseguiStaging;
$fileClosed = fclose($fp);
js_redirect($url);
return true;
}
}
}
?>