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 "
\n"; echo "".$sezione.": "; 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"; genera_campo( $nome, $tipo, $valore, $opzioni ); echo " | \n"; if ($i%2==0){ echo "