form('op') ){ case "updatecomponente": $idcomponente = save( $_GET['id'] ); $matricola = $id_record; $data = savedate( $_POST['data'] ); $post_array = array(); foreach( $_POST as $impostazione_post=>$valore_impostazione_post ){ //Creo l'array con tutti i valori passati dal POST $impostazione_post = str_replace( "_", " ", $impostazione_post); $impostazione_post = htmlentities( $impostazione_post, ENT_QUOTES, "UTF-8" ); $post_array[$impostazione_post] = save ($valore_impostazione_post); } $nome = $post_array['Nome']; // mi ricavo il valore di contenuto leggendolo dal db $query = "SELECT * FROM my_impianto_componenti WHERE idimpianto=\"$matricola\" AND id=\"$idcomponente\" "; $rs = $dbo->fetchArray( $query ); $contenuto = $rs[0]['contenuto']; $contenuto = read( $contenuto ); //Converto 'contenuto' di questo componente in un array $ini_array = parse_ini_string( $contenuto, true ); //Creo variabile contenuto temporaneo $contenuto_tmp = array(); //Resetto il valore di contenuto $contenuto = ''; //Per ogni sezione dell'array estratto dal file ini foreach ($ini_array as $sezione => $array_impostazioni){ $sezione = str_replace( "\r\n", "\n", $sezione ); $sezione = str_replace( "\n", "
", $sezione ); $contenuto .= "["".$sezione.""]\n"; //Per ogni impostazione foreach ($array_impostazioni as $impostazione => $valore_impostazione){ //Quando trovo l'impostazione 'valore' la sostituisco con il valore passato dal post if ($impostazione=='valore'){ $da = array($impostazione => $valore_impostazione); $a = array($impostazione => $post_array[$sezione]); $contenuto_tmp = array_replace($ini_array[$sezione], $da, $a); foreach ($contenuto_tmp as $impostazione_tmp => $valore_impostazione_tmp){ $valore = $valore_impostazione_tmp; $valore = str_replace( "\r\n", "\n", $valore ); $valore = str_replace( "\n", "
", $valore ); $contenuto .= save($impostazione_tmp)." = "".save($valore).""\n"; } } } } $query = "UPDATE my_impianto_componenti SET data=\"".$data."\", contenuto=\"".$contenuto."\" WHERE idimpianto=\"$matricola\" AND id=\"$idcomponente\" "; $dbo->query( $query ); array_push( $_SESSION['infos'], "Informazioni componente aggiornate correttamente!" ); $_SESSION['id'] = $idcomponente; break; case "linkcomponente": if($_GET['filename'] != "0"){ $filename = save( $_GET['filename'] ); $matricola = $id_record; $contenuto = file_get_contents($docroot."/files/my_impianti/".$filename); $contenuto = str_replace( ".", " ", $contenuto ); $values = parse_ini_string( $contenuto, true ); $nome = mb_convert_encoding( $values['Nome']['valore'], "iso-8859-1", "utf-8" ); $query = "INSERT INTO my_impianto_componenti( filename, idimpianto, contenuto, nome, data ) VALUES( \"$filename\", \"$matricola\", \"".save( $contenuto )."\", \"$nome\", NOW() )"; $dbo->query( $query ); $idcomponente = $dbo->last_inserted_id(); array_push( $_SESSION['infos'], "Aggiunto un nuovo componente all'impianto!" ); redirect($rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&id=".$idcomponente."#tab_3"); } break; case "sostituiscicomponente": $filename = save( $_GET['filename'] ); $matricola = $id_record; $id = save( $_GET['id'] ); $contenuto = file_get_contents($docroot."/files/my_impianti/".$filename); $contenuto = str_replace( ".", " ", $contenuto ); $contenuto = mb_convert_encoding( $contenuto, "UTF-8", "ISO-8859-1" ); $values = parse_ini_string( $contenuto, true ); $nome = $values['Nome']['valore']; // Verifico che questo componente non sia già stato sostituito $query = "SELECT * FROM my_impianto_componenti WHERE idsostituto = $id"; $rs = $dbo->fetchArray( $query ); $n = sizeof($rs); if ($n==0){ //Inserisco il nuovo componente in sostituzione $query = "INSERT INTO my_impianto_componenti( idsostituto, filename, idimpianto, contenuto, nome, data ) VALUES( $id, \"$filename\", \"$matricola\", \"".save( $contenuto )."\", \"$nome\", NOW() )"; $dbo->query( $query ); $idcomponente = $dbo->last_inserted_id(); //Aggiorno la data di sostituzione del componente precedente $query = "UPDATE my_impianto_componenti SET data_sostituzione = NOW() WHERE idimpianto=\"$matricola\" AND id = $id "; $dbo->query( $query ); array_push( $_SESSION['infos'], "Aggiunto un nuovo componente in sostituzione al precedente!" ); }else{ array_push( $_SESSION['errors'], "Questo componente è già stato sostituito. Nessuna modifica applicata." ); } redirect($rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&id=".$idcomponente."#tab_3"); break; case "unlinkcomponente": $idcomponente = save( $_GET['id'] ); $matricola = $id_record; $query = "DELETE FROM my_impianto_componenti WHERE id=\"".$idcomponente."\" AND idimpianto=\"$matricola\""; $dbo->query( $query ); array_push( $_SESSION['infos'], "Rimosso componente dall'impianto!" ); redirect($rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&id=".$idcomponente."#tab_3"); break; //Carica i campi da compilare del componente case "load_componente": /* 12-10-2014 FabioP: funzione spostata in ajax_autocomplete.php per via del controllo sulla variabile $docroot su questo file! */ $filename = save( $_GET['filename'] ); $idarticolo = save( $_GET['idarticolo'] ); //Se è stato specificato un idarticolo, carico il file .ini dal campo `contenuto` di quell'idarticolo $rs = $dbo->fetchArray("SELECT contenuto, componente_filename FROM mg_articoli WHERE id=\"".$idarticolo."\""); //Se i campi da caricare sono del componente già salvato leggo dal campo `contenuto`... if( $rs[0]['componente_filename'] == $filename ) $contenuto = read($rs[0]['contenuto']); //...altrimenti carico dal file .ini else{ if( file_exists( $docroot."/files/my_impianti/".$filename ) ) $contenuto = file_get_contents( $docroot."/files/my_impianti/".$filename ); } $contenuto = str_replace( "`", "\"", $contenuto ); $ini_array = parse_ini_string( read($contenuto), true ); //Caricamento form per attributi componente if( is_array($ini_array) && $ini_array['Nome']['valore']!='' ){ echo "

Attributi ".$ini_array['Nome']['valore']."

\n"; echo "\n"; echo "\n"; //per ogni sezione $i = 0; foreach ($ini_array as $sezione => $array_impostazioni){ if( $sezione!='Nome' ){ if ( ($i==0) || ($i%2==0) ){ echo "\n"; } $i++; echo "\n"; $nome = htmlentities($sezione, ENT_QUOTES, "UTF-8"); $tipo = $ini_array[$sezione]['tipo']; $valore = $ini_array[$sezione]['valore']; $opzioni = $ini_array[$sezione]['opzioni']; ( $tipo=='textarea' ) ? $valign="top" : $valign="middle"; echo "\n"; if ($i%2==0){ echo "\n"; } } } echo "
\n"; echo "".$sezione.": "; echo "\n"; genera_campo( $nome, $tipo, $valore, $opzioni ); echo "
\n"; } exit; } //Componenti non ancora collegati if( $id_list=='' ) $id_list='0'; //Funzione per elencare i componenti disponibili $cmp = get_componenti( $docroot."/files/my_impianti/", $id_list ); echo "
\n"; echo "
\n"; echo " \n"; echo "
\n"; echo "
\n"; echo " Aggiungi\n"; echo "
\n"; echo "
\n"; echo "
\n"; //Mostro tutti i componenti utilizzati elencando quelli attualmente installati per primi. $q2 = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.idintervento WHERE in_interventi.idintervento=my_impianto_componenti.idintervento) AS data_intervento FROM my_impianto_componenti WHERE idimpianto = \"".$id_record."\" ORDER by nome ASC, data_intervento DESC, idsostituto DESC"; $rs2 = $dbo->fetchArray($q2); $n2 = sizeof($rs2); if( $n2 > 0 ){ $prev_componente = ''; echo "

Componenti già installati

\n"; echo "
\n"; //Ciclo tra tutti i componenti for( $j=0; $j<$n2; $j++ ){ $contenuto = $rs2[$j]['contenuto']; $contenuto = str_replace( "`", "\"", $contenuto ); $ini_array = parse_ini_string( read($contenuto), true ); $nome_componente = $rs2[$j]['nome']; $filename = $rs2[$j]['filename']; if ($rs2[$j]['data_sostituzione']=='0000-00-00 00:00:00'){ $statocomponente = "INSTALLATO in data ".date("d/m/Y", strtotime($rs2[$j]['data']) ); }else{ $statocomponente = "SOSTITUITO in data ".date("d/m/Y", strtotime($rs2[$j]['data_sostituzione']) ); } //Per più "versioni" dello stesso componente mostro un riga meno evidente //per non confonderlo come componente in uso in questo momento if( $prev_componente == $nome_componente ){ echo "
\n"; echo "
\n"; echo "

\n"; echo " ".$nome_componente." (".$statocomponente.")\n"; echo "

\n"; echo "
\n"; } else{ echo "
\n"; echo "
\n"; echo "

\n"; echo " ".$nome_componente." (".$statocomponente.")\n"; echo "

\n"; echo "
\n"; } if ($_GET['id'] == $rs2[$j]['id']): unset($_SESSION['id']); $in = 'in'; elseif ($_SESSION['id'] == $rs2[$j]['id'] ): $in = 'in'; else: $in = ''; endif; echo "
\n"; echo "
\n"; //FORM COMPONENTE echo "
\n"; echo " \n"; echo "
\n"; //Nome echo "
\n"; echo "
\n"; echo " ".$rs2[$j]['nome']."\n"; echo "
\n"; //Data echo "
\n"; echo " \n"; echo " \n"; echo "
\n"; //per ogni sezione foreach ($ini_array as $sezione => $array_impostazioni){ //$sezione = html_entity_decode( $sezione, ENT_QUOTES, "UTF-8" ); if( $sezione!='Nome' ){ $sezione = $sezione; $tipo = $ini_array[$sezione]['tipo']; $valore = $ini_array[$sezione]['valore']; $opzioni = $ini_array[$sezione]['opzioni']; ( $tipo=='textarea' ) ? $valign="top" : $valign="middle"; echo "
\n"; echo " \n"; genera_campo( $sezione, $tipo, $valore, $opzioni ); echo "
\n"; } } $interventi = $dbo->fetchArray("SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipo, (SELECT descrizione FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS stato, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore FROM in_interventi INNER JOIN my_componenti_interventi ON my_componenti_interventi.id_intervento=in_interventi.idintervento WHERE id_componente=\"".$rs2[$j]["id"]."\" ORDER BY id_intervento"); if($interventi != null){ //Collegamento a intervento se c'è echo "
\n"; echo " Interventi collegati:\n"; echo ' '; foreach ($interventi as $intervento){ echo ' '; } echo '
Codice Tipo Stato Data richiesta Dettagli
'.$intervento["id_intervento"].' '.$intervento["tipo"].' '.$intervento["stato"].' '.$intervento["data_richiesta"].' Dettagli
'; echo "
\n"; } else echo "

\n"; //Pulsante Salva/Elimina echo "
\n"; echo " \n"; echo " \n"; //Sostituisci componente con un altro dello stesso tipo, posso sostituire solo i componenti installati if ($rs2[$j]['data_sostituzione']=='0000-00-00 00:00:00'){ echo "

Sostituisci questo componente

\n"; } else{ echo "

Componente già sostituito

\n"; } echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; $prev_componente = $nome_componente; } echo "
\n"; } ?>